Python ODBC 使用服务帐户连接到 SQL 服务器(trusted_connection=否)
Python ODBC Connect to SQL Server with Service Account (trusted_connection=no)
我使用 SQL Alchemy 或 Pyodbc 连接到我的服务器没问题,只要我使用受信任的连接:
pyodbc.connect("Driver={SQL Server};Server=myServer;Port=1433;Database=myDB;trusted_connection=yes")
sqlalchemy.create_engine('mssql://myServer/myDB?trusted_connection=yes&driver=SQL+Server')
但我需要使用基本 Windows 身份验证连接服务帐户。当我尝试像这样添加 UID/PWD 时:
sqlalchemy.create_engine("mssql+pyodbc://myUserName:myPassWord@myServer?driver=SQL+Server?trusted_connection=no")
pyodbc.connect('DRIVER={SQL Server};SERVER=myServre;DATABASE=myDB;UID=myUserName;PWD=myPassword')
我收到错误“用户 'myUserName' 登录失败”。(18456) (SQLDriverConnect); [28000] “
奖金尝试:
sqlalchemy.create_engine("mssql+pyodbc://myUserName:myPassword@myDB?driver=SQL+Server?trusted_connection=no")
Returns '[Microsoft][ODBC Driver Manager] 数据源名称太长 (0) (SQLDriverConnect)'
使用 SQL 服务器 2018。
我已验证该服务帐户对我尝试连接的数据库具有所有正确的权限。 FWIW,我也尝试使用我自己的 Windows 凭据而不是服务帐户(但使用 trusted_connection=no)进行连接,但我收到了相同的错误消息。
get the error "Login failed for user 'myUserName'. (18456) (SQLDriverConnect); [28000] "
None 的 Microsoft ODBC 驱动程序支持使用提供的凭据使用 Windows 集成身份验证(NTLM 或 Kerberos)。此连接字符串
DRIVER={SQL Server};SERVER=myServre;DATABASE=myDB;UID=myUserName;PWD=myPassword
用于 SQL 身份验证,您在 SQL 服务器中创建了一个登录名和一个数据库用户。
例如:
use mydb
create login myUserName with password='myPassword'
create user myUserName for login myUserName
grant select to myUserName
要使用此驱动程序的 Windows 身份验证,您必须 运行 您的程序作为目标用户,进行 Windows-level 模拟,将凭据存储在 Windows 凭据中存储,或使用 runas /netonly
.
我使用 SQL Alchemy 或 Pyodbc 连接到我的服务器没问题,只要我使用受信任的连接:
pyodbc.connect("Driver={SQL Server};Server=myServer;Port=1433;Database=myDB;trusted_connection=yes")
sqlalchemy.create_engine('mssql://myServer/myDB?trusted_connection=yes&driver=SQL+Server')
但我需要使用基本 Windows 身份验证连接服务帐户。当我尝试像这样添加 UID/PWD 时:
sqlalchemy.create_engine("mssql+pyodbc://myUserName:myPassWord@myServer?driver=SQL+Server?trusted_connection=no")
pyodbc.connect('DRIVER={SQL Server};SERVER=myServre;DATABASE=myDB;UID=myUserName;PWD=myPassword')
我收到错误“用户 'myUserName' 登录失败”。(18456) (SQLDriverConnect); [28000] “
奖金尝试:
sqlalchemy.create_engine("mssql+pyodbc://myUserName:myPassword@myDB?driver=SQL+Server?trusted_connection=no")
Returns '[Microsoft][ODBC Driver Manager] 数据源名称太长 (0) (SQLDriverConnect)'
使用 SQL 服务器 2018。
我已验证该服务帐户对我尝试连接的数据库具有所有正确的权限。 FWIW,我也尝试使用我自己的 Windows 凭据而不是服务帐户(但使用 trusted_connection=no)进行连接,但我收到了相同的错误消息。
get the error "Login failed for user 'myUserName'. (18456) (SQLDriverConnect); [28000] "
None 的 Microsoft ODBC 驱动程序支持使用提供的凭据使用 Windows 集成身份验证(NTLM 或 Kerberos)。此连接字符串
DRIVER={SQL Server};SERVER=myServre;DATABASE=myDB;UID=myUserName;PWD=myPassword
用于 SQL 身份验证,您在 SQL 服务器中创建了一个登录名和一个数据库用户。
例如:
use mydb
create login myUserName with password='myPassword'
create user myUserName for login myUserName
grant select to myUserName
要使用此驱动程序的 Windows 身份验证,您必须 运行 您的程序作为目标用户,进行 Windows-level 模拟,将凭据存储在 Windows 凭据中存储,或使用 runas /netonly
.