का उपयोग कर कनेक्ट कर सकते हैं मुझे नहीं पता कि मुझे यह त्रुटि क्यों मिल रही है और इसके लिए कोई समाधान नहीं मिल रहा है। मैं freetds tsql का उपयोग कर SQL सर्वर डेटाबेस से कनेक्ट कर सकता हूं लेकिन pymssql.connect
का उपयोग करते समय मुझे एक त्रुटि मिल रही है।pymssql का उपयोग कर SQL सर्वर डेटाबेस से कनेक्ट नहीं हो सकता है लेकिन अंतर्निहित freetds tsql
विशिष्ट त्रुटि है:
pymssql.OperationalError: (18456, "Login failed for user 'xxx'.DB-Lib error message 18456, severity 14:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed\n")
मैं विन्यास के रूप में freetds लिए निर्धारित किया है:
[custom_config]
host = myhost
port = 1433
tds version = 7.0
encryption = request
dump file = /tmp/freetds.log
चल:
tsql -S custom_config -U tsmv -P xxx
रिटर्न:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
जो मुझे डेटाबेस से पूछताछ करने की अनुमति देता है।
हालांकि, चल रहा है:
python
>> import pymssql
>> pymssql.connect(server='custom_config', user='user', password='xxx', database='database')
उपरोक्त त्रुटि को जन्म देती है।
मैं लिनक्स सेंटोस, पायथन 2.6.6, freetds 0.92 dev (मैंने tdsver = 7.0 के साथ संकलित अन्य संस्करणों का प्रयास किया है) का उपयोग कर रहा हूं।
freetds लॉग है:
log.c:196:Starting log file for FreeTDS 0.92
on 2012-04-12 10:39:15 with debug flags 0x4fff.
iconv.c:330:tds_iconv_open(0x1391b70, ISO-8859-1)
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:349:setting up conversions for client charset "ISO-8859-1"
iconv.c:351:preparing iconv for "ISO-8859-1" <-> "UCS-2LE" conversion
iconv.c:391:preparing iconv for "ISO-8859-1" <-> "UCS-2LE" conversion
iconv.c:394:tds_iconv_open: done
net.c:205:Connecting to xx.x.x.xxx port 1433 (TDS version 7.1)
net.c:270:tds_open_socket: connect(2) returned "Operation now in progress"
net.c:310:tds_open_socket() succeeded
util.c:156:Changed query state from DEAD to IDLE
net.c:741: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 c7 39 00 00 - |.9..|
net.c:555:Received header
0000 04 01 00 25 00 00 01 00- |...%....|
net.c:609: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 0a 00 0f |........ ........|
0020 a0 00 00 02 00 - |.....|
login.c:1057:detected flag 2
login.c:782:quietly sending TDS 7+ login packet
token.c:328:tds_process_login_tokens()
net.c:555:Received header
0000 04 01 00 72 00 51 01 00- |...r.Q..|
net.c:609:Received packet
0000 04 01 00 72 00 51 01 00-aa 5e 00 18 48 00 00 01 |...r.Q.. .^..H...|
0010 0e 1d 00 4c 00 6f 00 67-00 69 00 6e 00 20 00 66 |...L.o.g .i.n. .f|
0020 00 61 00 69 00 6c 00 65-00 64 00 20 00 66 00 6f |.a.i.l.e .d. .f.o|
0030 00 72 00 20 00 75 00 73-00 65 00 72 00 20 00 27 |.r. .u.s .e.r. .'|
0040 00 74 00 73 00 6d 00 76-00 27 00 2e 00 0c 4d 00 |.t.s.m.v .'....M.|
0050 43 00 53 00 2d 00 44 00-41 00 54 00 41 00 42 00 |C.S.-.D. A.T.A.B.|
0060 41 00 53 00 45 00 00 01-00 fd 02 00 00 00 00 00 |A.S.E... ........|
0070 00 00 - |..|
token.c:337:looking for login token, got aa(ERROR)
token.c:122:tds_process_default_tokens() marker is aa(ERROR)
token.c:2588:tds_process_msg() reading message 18456 from server
token.c:2661:tds_process_msg() calling client msg handler
dbutil.c:85:_dblib_handle_info_message(0x14e2e30, 0x1391b70, 0x7fff8b047e40)
dbutil.c:86:msgno 18456: "Login failed for user 'xxx'."
token.c:2674:tds_process_msg() returning TDS_SUCCEED
token.c:337:looking for login token, got fd(DONE)
token.c:122:tds_process_default_tokens() marker is fd(DONE)
token.c:2339:tds_process_end: more_results = 0
was_cancelled = 0
error = 1
done_count_valid = 0
token.c:2355:tds_process_end() state set to TDS_IDLE
token.c:2370: rows_affected = 0
token.c:438:tds_process_login_tokens() returning TDS_FAIL
login.c:466:login packet accepted
util.c:156:Changed query state from IDLE to DEAD
util.c:331:tdserror(0x14e2e30, 0x1391b70, 20002, 0)
dblib.c:7929:dbperror(0x1383c70, 20002, 0)
dblib.c:7981:20002: "Adaptive Server connection failed"
dblib.c:8002:"Adaptive Server connection failed", client returns 2 (INT_CANCEL)
util.c:361:tdserror: client library returned TDS_INT_CANCEL(2)
util.c:384:tdserror: returning TDS_INT_CANCEL(2)
dblib.c:1443:dbclose(0x1383c70)
dblib.c:258:dblib_del_connection(0x7fa462faf540, 0x1391b70)
mem.c:615:tds_free_all_results()
dblib.c:305:dblib_release_tds_ctx(1)
dblib.c:5882:dbfreebuf(0x1383c70)
dblib.c:739:dbloginfree(0x1533a40)
मैं पूरी तरह से यह क्यों काम नहीं कर रहा है के रूप में खो गया हूँ। कोई भी सहायताकाफी प्रशंसनीय होगी।
आप सर्वर के बजाय servername का उपयोग करना चाह सकते हैं। इसके अलावा, मैं मुद्दों में भाग गया (कम से कम pyodbc के साथ) जहां एक कनेक्शन स्ट्रिंग बिल्कुल kvargs गुजरने के समान व्यवहार नहीं लग रहा था (हालांकि मेरी गलती हो सकती है ...)। आप pymssql के बजाय pyodbc का उपयोग करने का प्रयास भी कर सकते हैं (यहां pymssql के साथ कोई अनुभव नहीं है)। –
धन्यवाद डेरेक, मैंने आपकी सलाह ली है, pymssql का उपयोग करने से बाहर निकला है और माइक्रोसॉफ्ट के लिनक्स ड्राइवर के साथ pyodbc का उपयोग करना शुरू कर दिया है। सभी ठीक काम करते हैं (हालांकि मुझे पता है कि यह मेरे मूल प्रश्न का उत्तर नहीं देता है)। – chewynougat