简体   繁体   English

pymssql和Adaptive Server连接失败

[英]pymssql and Adaptive Server connection failed

When I try to connect into Azure database by Pymssql in python I face this error: 当我尝试通过python中的Pymssql连接到Azure数据库时,我面临以下错误:

pymssql.OperationalError: (20002, 'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (iprice-bi.database.windows.net:1433)\n')

I connect to the database by tsql command: 我通过tsql命令连接到数据库:

 tsql -H server -p 1433 -U username -P password

locale is "en_US.UTF-8"

locale charset is "UTF-8" using default charset "UTF-8" 1> SELECT @@version 2> GO locale charset是“UTF-8”,使用默认字符集“UTF-8”1> SELECT @@ version 2> GO

Microsoft SQL Azure (RTM) - 12.0.2000.8 
Mar  1 2016 22:36:40 
Copyright (c) Microsoft Corporation

(1 row affected)

I checked freetds.conf as well to be sure I am using correct version. 我检查了freetds.conf以确保我使用的是正确的版本。

[global]
# TDS protocol version
tds version = 7.0
dump file = /tmp/freetds.log
dump file append = yes

results for log file also does not give any clue. 日志文件的结果也没有给出任何线索。

log.c:167:Starting log file for FreeTDS 0.95.87
on 2016-03-25 16:50:51 with debug flags 0x4fff.
dblib.c:1237:tdsdbopen: Calling tds_connect_and_login(0x23f9b00, 0x23fde90)
iconv.c:328:tds_iconv_open(0x23f9b00, UTF-8)
iconv.c:187:local name for ISO-8859-1 is ISO-8859-1
iconv.c:187:local name for UTF-8 is UTF-8
iconv.c:187:local name for UCS-2LE is UCS-2LE
iconv.c:187:local name for UCS-2BE is UCS-2BE
iconv.c:346:setting up conversions for client charset "UTF-8"
iconv.c:348:preparing iconv for "UTF-8" <-> "UCS-2LE" conversion
iconv.c:395:preparing iconv for "ISO-8859-1" <-> "UCS-2LE" conversion
iconv.c:400:tds_iconv_open: done
net.c:202:Connecting to 23.100.117.95 port 1433 (TDS version 7.1)
net.c:275:tds_open_socket: connect(2) returned "Operation now in progress"
net.c:314:tds_open_socket() succeeded
packet.c:740:Sending packet
0000 12 01 00 34 00 00 00 00-00 00 15 00 06 01 00 1b |...4.... ........|
0010 00 01 02 00 1c 00 0c 03-00 28 00 04 ff 08 00 01 |........ .(......|
0020 55 00 00 02 4d 53 53 51-4c 53 65 72 76 65 72 00 |U...MSSQ LServer.|
0030 d7 33 00 00            -                        |.3..|

packet.c:639:Received packet
0000 04 01 00 25 00 00 01 00-00 00 15 00 06 01 00 1b |...%.... ........|
0010 00 01 02 00 1c 00 01 03-00 1d 00 00 ff 0c 00 02 |........ ........|
0020 bf 00 00 03 00         -                        |.....|

login.c:1106:detected flag 3
login.c:472:login packet rejected
query.c:3772:tds_disconnect() 
util.c:165:Changed query state from IDLE to DEAD
util.c:322:tdserror(0x24f4290, 0x23f9b00, 20002, 0)
dblib.c:7925:dbperror(0x23f8fb0, 20002, 0)
dblib.c:7993:dbperror: Calling dblib_err_handler with msgno = 20002;      msg->msgtext = "Adaptive Server connection failed (SERVERNAME:1433)"
dblib.c:8015:dbperror: dblib_err_handler for msgno = 20002; msg->msgtext  = "Adaptive Server connection failed (SERVERNAME:1433)" -- returns 2 (INT_CANCEL)
util.c:352:tdserror: client library returned TDS_INT_CANCEL(2)
util.c:375:tdserror: returning TDS_INT_CANCEL(2)
dblib.c:1241:tdsdbopen: tds_connect_and_login failed for "SERVERNAMR:1433"!
dblib.c:1463:dbclose(0x23f8fb0)
dblib.c:243:dblib_del_connection(0x7f066cb036a0, 0x23f9b00)
mem.c:648:tds_free_all_results()
dblib.c:290:dblib_release_tds_ctx(1)
dblib.c:5873:dbfreebuf(0x23f8fb0)
dblib.c:743:dbloginfree(0x24439f0)

does Anybody face such problem or can give me some suggestions for solve it?! 有人面对这样的问题还是可以给我一些解决方案的建议?!

Can you try this connection string form instead to be explicit? 您可以尝试使用此连接字符串形式而不是显式吗? Your log in is being rejected: 您的登录被拒绝:

login.c:472:login packet rejected

conn = pymssql.connect(
    server="yourhost.example.com",
    port=1433,
    user="your_user",
    password="your_pw",
    database="your_db")

I'm assuming your Azure DB is running on 1433. This is the connection string I use for SQL Server, I've only used pyodbc with Azure in the past. 我假设您的Azure数据库在1433上运行。这是我用于SQL Server的连接字符串,我过去只使用了与Azure的pyodbc。 You can also set your TDS Version to be 7.1 instead of 7.0 in your configuration. 您还可以在配置中将TDS版本设置为7.1而不是7.0。 If that doesn't do the trick, a few more questions (and I'll amend my answer until we figure it out): 如果这不能解决问题,还有一些问题(我会在我们解决之前修改我的答案):

  • How long in characters are your username and password? 用户名和密码的字符有多长? Just for testing purposes, try it with a username and password of 10 characters if they're really long. 仅用于测试目的,如果它们真的很长,请使用10个字符的用户名和密码进行尝试。
  • Are you using a SQL Server login or a Windows auth login? 您使用的是SQL Server登录还是Windows身份验证登录?

Per my experience, I think you can try to modify the tds version with 7.3 that be for MS SQL Server 2008+. 根据我的经验,我认为您可以尝试使用适用于MS SQL Server 2008+的7.3修改tds版本。 The tds version 7.0 is too low for Azure SQL Database. 对于Azure SQL数据库,tds版本7.0太低。

Please see my answer for the other SO thread pymssql: Connection to the database only works sometimes . 请参阅我对其他SO线程pymssql的回答:连接数据库有时只能工作

In my case it was simply an authentication issue. 就我而言,这只是一个身份验证问题。 I think the Nagios does not support Windows Authentication Mode. 我认为Nagios不支持Windows身份验证模式。 Once I enabled SQL Server authentication mode, the message disappeared, and some critical errors were displayed. 启用S​​QL Server身份验证模式后,消息消失,并显示一些严重错误。 After some cycles these cleared out and counters were populated with sensible numbers. 在一些周期之后,这些清除了,计数器填充了合理的数字。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Python pymssql:Adaptive Server连接失败 - Python pymssql: Adaptive Server connection failed 带有pymssql的Python / Flask / sqlAlchemy环境中的Adaptive Server连接失败错误 - Adaptive Server connection failed error in Python/Flask/sqlAlchemy environment with pymssql 与 Pymssql/Adaptive Server 连接失败(Windows.net vs Azure.com) - Connect with Pymssql / Adaptive Server connection failed (Windows.net vs Azure.com) 本地 MSSQL 服务器与 pymssql 的数据库连接失败 - Database connection failed for local MSSQL server with pymssql 使用ubuntu 16.04的Adaptive Server连接失败python 3 - Adaptive Server connection failed python 3 with ubuntu 16.04 Airflow SQL Server 连接 -Adaptive Server 连接失败 - Airflow SQL Server Connection -Adaptive Server connection failed Python pymssql尝试在结果挂起时启动新的Adaptive Server操作 - Python pymssql Attempt to initiate a new Adaptive Server operation with results pending pymssql.connect()错误:“自适应服务器不可用或不存在” - pymssql.connect() error: “adaptive server is unavailable or does not exist” 由于pymssql的未知原因,与数据库的连接失败 - Connection to the database failed for an unknown reason for pymssql pymssql-服务器连接列表,而不是一个连接 - pymssql - list of server connections instead of one connection
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM