Sql server 无法在中使用pymssql连接到SQL Server数据库,但可以使用tsql连接
我正在尝试使用Sql server 无法在中使用pymssql连接到SQL Server数据库,但可以使用tsql连接,sql-server,azure-sql-database,pymssql,Sql Server,Azure Sql Database,Pymssql,我正在尝试使用pymsql连接Azure中的数据库。我已经成功地连接到Azure中的其他数据库,但这一个似乎特别挑剔 以下是正在工作的T-SQL命令: tsql -p 1433 -S server.database.windows.net -P 'password' -U username@server -D database_name 以下是失败的pymsql连接调用: pymssql.connect(server='server.database.windows.net',
pymsql
连接Azure中的数据库。我已经成功地连接到Azure中的其他数据库,但这一个似乎特别挑剔
以下是正在工作的T-SQL命令:
tsql -p 1433 -S server.database.windows.net -P 'password' -U username@server -D database_name
以下是失败的pymsql连接调用:
pymssql.connect(server='server.database.windows.net',
port=1433,
user='username@server',
password='password',
database='database_name')
以下是错误跟踪:
Traceback (most recent call last):
File "pymssql.pyx", line 635, in pymssql.connect (pymssql.c:10734)
File "_mssql.pyx", line 1902, in _mssql.connect (_mssql.c:21821)
File "_mssql.pyx", line 637, in _mssql.MSSQLConnection.__init__ (_mssql.c:6581)
File "_mssql.pyx", line 1630, in _mssql.maybe_raise_MSSQLDatabaseException (_mssql.c:17524)
_mssql.MSSQLDatabaseException: (20002, b'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed\n')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "smallest.py", line 6, in <module>
database='database_name')
File "pymssql.pyx", line 641, in pymssql.connect (pymssql.c:10824)
pymssql.OperationalError: (20002, b'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed\n')
我相信上面提到的重要部分是:
login.c:466:登录数据包被拒绝
似乎表明凭据无效
感谢您的帮助
TDSDUMPCONFIG
:
log.c:196:Starting log file for FreeTDS 0.91
on 2018-03-23 18:31:34 with debug flags 0x4fff.
config.c:185:Getting connection information for [server:1433].
config.c:189:Attempting to read conf files.
config.c:354:... $FREETDSCONF not set. Trying $FREETDS/etc.
config.c:367:... $FREETDS not set. Trying $HOME.
config.c:293:Could not open '/home/ubuntu/.freetds.conf' ((.freetds.conf)).
config.c:297:Found conf file '/etc/freetds/freetds.conf' (default).
config.c:483:Looking for section global.
config.c:540: Found section global.
config.c:543:Got a match.
config.c:565: tds version = '7.1'
config.c:788:Setting tds version to 7.1 (0x701) from $TDSVER.
config.c:565: text size = '64512'
config.c:540: Found section egserver50.
config.c:540: Found section egserver70.
config.c:540: Found section server.
config.c:554: Reached EOF
config.c:483:Looking for section server:1433.
config.c:540: Found section global.
config.c:540: Found section egserver50.
config.c:540: Found section egserver70.
config.c:540: Found section server.
config.c:554: Reached EOF
config.c:303:[server:1433] not found.
config.c:354:... $FREETDSCONF not set. Trying $FREETDS/etc.
config.c:367:... $FREETDS not set. Trying $HOME.
config.c:293:Could not open '/home/ubuntu/.freetds.conf' ((.freetds.conf)).
config.c:297:Found conf file '/etc/freetds/freetds.conf' (default).
config.c:483:Looking for section global.
config.c:540: Found section global.
config.c:543:Got a match.
config.c:565: tds version = '7.1'
config.c:788:Setting tds version to 7.1 (0x701) from $TDSVER.
config.c:565: text size = '64512'
config.c:540: Found section egserver50.
config.c:540: Found section egserver70.
config.c:540: Found section server.
config.c:554: Reached EOF
config.c:483:Looking for section server.
config.c:540: Found section global.
config.c:540: Found section egserver50.
config.c:540: Found section egserver70.
config.c:540: Found section server.
config.c:543:Got a match.
config.c:565: host = 'server.database.windows.net'
config.c:595:Found host entry server.database.windows.net.
config.c:599:IP addr is ser.ver.ip.add.
config.c:565: port = '1433'
config.c:565: tds version = '7.1'
config.c:788:Setting tds version to 7.1 (0x701) from $TDSVER.
config.c:554: Reached EOF
config.c:301:Success: [server] defined in /etc/freetds/freetds.conf.
config.c:714:Setting 'dump_file' to 'dump' from $TDSDUMP.
config.c:650:tds_config_login: client_charset is UTF-8.
config.c:655:tds_config_login: database_name is database_name.
config.c:224:Final connection parameters:
config.c:225: server_name = server:1433
config.c:226: server_host_name = server.database.windows.net
config.c:227: ip_addr = ser.ver.ip.add
config.c:228: instance_name =
config.c:229: port = 1433
config.c:230: major_version = 7
config.c:231: minor_version = 1
config.c:232: block_size = 0
config.c:233: language = us_english
config.c:234: server_charset =
config.c:235: connect_timeout = 0
config.c:236: client_host_name = ubuntu-xenial
config.c:237: client_charset = UTF-8
config.c:238: app_name = pymssql=2.1.3
config.c:239: user_name =
config.c:242: library = DB-Library
config.c:243: bulk_copy = 0
config.c:244: suppress_language = 0
config.c:245: encrypt level = 0
config.c:246: query_timeout = 0
config.c:249: database = database_name
config.c:250: dump_file = dump
config.c:251: debug_flags = 0
config.c:252: text_size = 64512
config.c:253: broken_dates = 0
config.c:254: emul_little_endian = 0
config.c:255: server_realm_name =
我的tsql
设置:
$ tsql -C
Compile-time settings (established with the "configure" script)
Version: freetds v0.91
freetds.conf directory: /etc/freetds
MS db-lib source compatibility: no
Sybase binary compatibility: yes
Thread safety: yes
iconv library: yes
TDS version: 7.1
iODBC: no
unixodbc: yes
SSPI "trusted" logins: no
Kerberos: yes
请改用pyodbc
import pyodbc
server = 'your_server.database.windows.net'
database = 'your_database'
username = 'your_username'
password = 'your_password'
driver= '{ODBC Driver 13 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName FROM [SalesLT].[ProductCategory] pc JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
有关pyodbc的更多信息,请访问URL。有解决此问题的方法吗?
$ tsql -C
Compile-time settings (established with the "configure" script)
Version: freetds v0.91
freetds.conf directory: /etc/freetds
MS db-lib source compatibility: no
Sybase binary compatibility: yes
Thread safety: yes
iconv library: yes
TDS version: 7.1
iODBC: no
unixodbc: yes
SSPI "trusted" logins: no
Kerberos: yes
import pyodbc
server = 'your_server.database.windows.net'
database = 'your_database'
username = 'your_username'
password = 'your_password'
driver= '{ODBC Driver 13 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName FROM [SalesLT].[ProductCategory] pc JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()