使用SSMS和Windows凭据将Python连接到SQL Server

2024-09-27 22:34:05 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我在使用python/adodbapi连接到sqlserver数据库时遇到的一个问题。在

我们使用以下方法在另一个域中创建了一个sqlserver测试数据库。在

runas /netonly /user:<domain>\<userid> "C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\Ssms.exe"

我可以使用SQLServerManagementStudio手动登录到SQL数据库,但无法以编程方式建立连接。在

以下是我目前所做的尝试:

^{pr2}$

输出:接收到的错误如下:

adodbapi.apibase.OperationalError: (com_error(-2147352567, 'Exception occurred.', (0, u'Microsoft OLE DB Provider for SQL Server', u'Login failed. The login is from an untrusted domain and cannot be used with Windows authentication.', None, 0, -2147467259), None), 'Error opening connection to "PROVIDER=SQLOLEDB;Data Source=<databasehost>,<port>;Database=testdb; trusted_connection=yes;UID=domain\\username;PWD=password;"')

有没有办法解决这个连接问题?在


Tags: 方法none数据库sqlserverdomainconnectionprogram
1条回答
网友
1楼 · 发布于 2024-09-27 22:34:05

以下是我对这个问题的回答:

def query_sql_server(dbHost, dbPort, dbName, dbUser, dbPassword, sqlQuery, outputFile, delimiter='|', headerFlag=True):
outputFile = os.path.abspath(outputFile)
with pymssql.connect(host=dbHost, port=dbPort, user=dbUser, password=dbPassword, database=dbName) as conn:
    cursor = conn.cursor()
    sql = sqlQuery.encode('utf-8')
    cursor.execute(sql)
    with codecs.open(outputFile, 'w', encoding='utf-8') as fout:
        if headerFlag == 'True':
            column_names = [item[0].encode('utf-8') for item in cursor.description]
            header = delimiter.join(column_names)
            fout.write(u'{}{}'.format(header, "\n"))

        for row in cursor:
            try:
                columns = [unicode(column or '') for column in row]
                fout.write(u'{}{}'.format(delimiter.join(columns), "\n"))
            except UnicodeEncodeError:
                print("UnicodeEncodeError- Skipping this record {}".format(row))

    print("Completed and output is available in {}".format(outputFile))
    return outputFile

希望这对将来有帮助。在

相关问题 更多 >

    热门问题