与SQL服务器

时间:2017-05-23 10:45:36

标签: python pyodbc sqlconnection

我使用pyodbc和pypyodbc python包连接到SQL服务器。

驱动程序使用其中任何一个[' SQL Server',' SQL Server Native Client 10.0'' ODBC驱动程序11用于SQL Server',&#39 ;用于SQL Server的ODBC驱动程序13']。

连接字符串:

connection = pyodbc.connect('DRIVER={SQL Server};'
'Server=aaa.database.windows.net;'
'DATABASE=DB_NAME;'
'UID=User_name;'
'PWD=password')

现在我收到错误消息,如" DatabaseError:(u' 28000',u" [28000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]用户登录失败"

但我可以通过SQL Server管理工作室连接到服务器。

它在SQL Server身份验证上,而不是Windows身份验证。

这是关于python包和驱动程序问题还是数据库问题???怎么解决?

5 个答案:

答案 0 :(得分:3)

您可以在密码后的连接字符串中添加Trusted_Connection=NO;

答案 1 :(得分:2)

我看到您的脚本中没有定义port

使用pyodbc ${DBName} ${DBUser} ${DBPass} ${DBHost} ${DBPort}连接到服务器的一般方法,其中DBName是您的数据库名称,DBUser是用于连接服务器的用户名,DBPass是密码DBHost是数据库的URL,而DBPort是用于连接数据库的端口。

我使用MS SQL,所以我的端口是1433,您的端口可能有所不同。

我今天才遇到这个问题,并且已经解决了。

答案 2 :(得分:1)

我认为是由于连接字符串中的驱动程序定义而引起的问题。您可以在下面尝试。

connection = pyodbc.connect('DRIVER={SQL Server Native Client 10.0}; Server=aaa.database.windows.net; DATABASE=DB_NAME; UID=User_name; PWD=password')

答案 3 :(得分:1)

我应用了您的连接字符串,并使用服务器连接详细信息对其进行了更新,并且效果很好。 您确定您传递的用户名和密码正确吗? 登录失败表示连接成功建立,但身份验证未通过。

答案 4 :(得分:0)

问题不在于驱动程序问题,您可以看到错误消息是DatabaseError: Login failed for user,这意味着如果用户尝试使用无法验证的凭据登录,则会出现此问题。我怀疑您使用Windows身份验证登录,如果是,请改为使用Trusted_Connection=yes

connection = pyodbc.connect('DRIVER={SQL Server};Server=aaa.database.windows.net;DATABASE=DB_NAME;Trusted_Connection=yes')

有关详细信息,请参阅my old answer,了解SQL Server Authentication modes的差异。