मैं Python 3.4
और pyodbc
मॉड्यूल का उपयोग कर Windows Server 2008 R2
से SQL server 2000
Windows server 2003
पर स्थापित करने के लिए कनेक्ट करने के लिए कोशिश कर रहा हूँ के साथ एक और डोमेन खिड़कियों कार्य केंद्र से एमएस एसक्यूएल सर्वर से कनेक्ट करने विंडोज़ प्रमाणीकरण का उपयोग कैसे करें। वे सर्वर अलग-अलग एडी डोमेन में हैं। SQL सर्वर पर Windows only
प्रमाणीकरण सक्षम है और मैं इसे बदल नहीं सकता।अजगर
drv = '{SQL server}'
svr = 'sql.my-domain.local'
usr = 'my-domain.local\testuser'
pwd = 'password'
db = 'testdb'
pyodbc.connect(driver=drv, server=svr, user=usr, password=pwd, database=db)
कनेक्शन ऊपर निम्न त्रुटि के साथ विफल:
pyodbc.Error: ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQLServer]
Login failed for user 'svx-iroot.local\\sqlexecutive'.
Reason: Not associated with a trusted SQL Server connection. (18452) (SQLDriverConnect)")
वहाँ कुछ सवाल है, उदाहरण के लिए कर रहे हैं this one, खिड़कियां प्रमाणीकरण के समर्थन के लिए trusted_connection='yes'
तर्क pyodbc
के लिए कनेक्शन जोड़ने के लिए सुझाव दे लेकिन इस मामले में यह मदद नहीं करता है क्योंकि इस विकल्प के साथ स्थानीय क्रेडेंशियल्स का उपयोग किया जाता है और मुझे स्पष्ट रूप से प्रमाण-पत्र प्रदान करने की आवश्यकता होती है क्योंकि वर्कस्टेशन की उत्पत्ति एक अलग एडी डोमेन में होती है।
User DSN
ODBC Data Source Administrator
SQL Server
ड्राइवर ऊपर उल्लिखित एक ही त्रुटि के साथ विफल रहता है।
क्या यह काम करने का कोई तरीका है?
इस बीच मैं http://sourceforge.net/projects/freetdswindows/ से विंडोज के लिए FreeTDS
ड्राइवर स्थापित और कनेक्शन tsql
सुविधा का उपयोग परीक्षण काम करता है:
tsql -S sql.my-domain.local -U my-domain.local\testuser -P password
लेकिन FreeTDS
ड्राइवर ODBC Data Source Administrator
में उपलब्ध नहीं है। FreeTDS
ड्राइवर पारंपरिक रूप से unixODBC
के साथ प्रयोग किया जाता है। क्या pyodbc
के साथ विंडोज वातावरण में इस ड्राइवर का उपयोग करना संभव है?
अद्यतन:
यह पता चला FreeTDS
बाइनरी ऊपर उल्लेख किया है और साथ ही unixODBC
शामिल हैं। freetds.conf
, odbc.ini
और odbcinst.ini
का कॉन्फ़िगरेशन वर्णित किया गया था, उदाहरण के लिए, here। लेकिन इस बिंदु पर मुझे समझ में नहीं आता कि pyodbc
को पता होना चाहिए कि FreeTDS
ड्राइवर मौजूद है। और वास्तव में FreeTDS
ड्राइवर के साथ कनेक्शन का प्रयास निम्नलिखित त्रुटि के साथ विफल:
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager]
Data source name not found and no default driver specified (0) (SQLDriverConnect)')
Pyodbc
केवल ODBC Data Source Administrator
में उपलब्ध ड्राइवरों के बारे में जानता:
2 तरीके आगे बढ़ने के लिए कर रहे हैं। पहला विकल्प ODBC Data Source Administrator
FreeTDS
ड्राइवर के बारे में पता होना है। यह प्राप्त करने के लिए कि रजिस्ट्री कुंजी HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers
में नाम FreeTDS
और मूल्य Installed
के साथ एक नया मान बनाया जाना चाहिए। फिर में एक नई कुंजी HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI
में बनाई गई है और FreeTDS
ड्राइवर के लिए सेटिंग इस रजिस्ट्री कुंजी में स्ट्रिंग मान के रूप में सेट की गई हैं।
इस प्रक्रिया FreeTDS
चालक के पूरा होने के बाद ODBC Data Source Administrator
में उपलब्ध हो गया लेकिन कनेक्शन अभी भी विफल रहा है। में User DSN
बनाने का प्रयास FreeTDS
त्रुटि कोड 193
के साथ विफल रहता है जो 64 बिट ODBC Data Source Administrator
और 32 बिट संस्करण FreeTDS
की असंगतता के कारण होता है। मेरे पास FreeTDS
का 64 बिट संस्करण उपलब्ध नहीं है। संभावित रूप से इसे स्रोत से संकलित करना संभव हो सकता है।
एक और विकल्प pyodbc
ODBC Data Source Administrator
के बजाय अन्य ड्राइवर प्रबंधक (unixODBC
) का उपयोग करना है। अभी तक संपर्क करने के बारे में नहीं पता।