在Ubuntu上使用python连接到MSSQL包含的数据库?

时间:2014-09-29 19:02:58

标签: python-2.7 sql-server-2012 ubuntu-14.04 freetds

我正在运行Ubuntu 14.04.1 86_x64服务器,我一直在试图找出如何连接到MSSQL 2012 Contained Database。我一直在尝试使用FreeTDS驱动程序的pymssql 2.1.0。基于pymssql网站,我已经确定问题出在FreeTDS驱动程序上。

我使用了tsql -H SERVER -p PORT -U USERNAME -P PASSWORD -D DATABASE并收到错误:

  

来自SERVER第1行的消息18456(严重性14,状态1):

"Login failed for user 'USERNAME'."
     

错误20002(严重级9):

Adaptive Server connection failed
     

连接服务器时出现问题

连接到不支持包含数据库的MSSQL 2008数据库时,我没有遇到同样的问题。另外,我无法控制数据库上的设置。

1 个答案:

答案 0 :(得分:0)

发现pymssql 2.1.1将其作为“与Azure的兼容性”的一部分进行了修复。

修复它的代码位于_mssql.pyx中的606-613行,可以在github上找到。我把这些线条仅供参考。

# Put the DB name in the login LOGINREC because it helps with connections to Azure
if database:
    if FREETDS_SUPPORTS_DBSETLDBNAME:
        dbname_bytes = database.encode('ascii')
        dbname_cstr = dbname_bytes
        DBSETLDBNAME(login, dbname_cstr)
    else:
        log("_mssql.MSSQLConnection.__init__(): Warning: This version of FreeTDS doesn't support selecting the DB name when setting up the connection. This will keep connections to Azure from working.")