2015-03-30 9 views
10

pymssql मॉड्यूल विंडोज प्रमाणीकरण का समर्थन करने के लिए प्रयोग किया जाता है। अब ऐसा लगता है कि यह नहीं है। हालांकि कुछ स्थानों पर यह अभी भी दिखाता है कि इसे काम करना चाहिए। मैं इस समस्या का एक निश्चित जवाब नहीं ढूंढ पाया, न ही समाधान। सबसे अधिक प्रासंगिक लिंक:pymssql विंडोज प्रमाणीकरण

https://groups.google.com/forum/#!topic/pymssql/QDMLTGBNeU0

pymssql 1.0 इसका समर्थन किया है क्योंकि यह का इस्तेमाल किया और MS-प्रदान की DLL जो एसक्यूएल सर्वर ग्राहक ढेर का हिस्सा था पर निर्भर है। यह स्टैक एनटीएलएम बातचीत और इस तरह के सभी को संभालने का प्रभारी था। इसका मतलब यह था कि, अन्य चीजों के साथ यह एकमात्र विंडोज़ समाधान था।

मैं कई प्रकार के नेटवर्क वातावरण अनुकरण कर सकता हूं इसलिए मैंने कई अलग-अलग सेटअप किए हैं। मैं विंडोज प्रमाणीकरण का उपयोग कर रिमोट एमएसएसक्यूएल सर्वर से कनेक्ट करने के लिए इस स्क्रिप्ट का उपयोग करने में सक्षम होने की कोशिश कर रहा हूं। और यह समस्या है।


मेरे शोध के अनुसार, ऊपर दिए गए लिंक, वहाँ pymssql मॉड्यूल चाहिए काम करने के लिए कर रहे हैं के साथ खिड़कियां प्रमाणीकरण का उपयोग करने के लिए दो तरीके हैं भी शामिल है।

सबसे पहले विधि: मौजूदा उपयोगकर्ताओं क्रेडेंशियल्स का उपयोग करना:

pymssql.connect(server='server') 
# credentials come from active windows session 
# some research shows that a "trusted=True" keyword should be provided. 

दूसरा तरीका: किसी दिए गए उन क्रेडेंशियल्स का उपयोग करना:

pymssql.connect(server='server', user=r'domain\user', password='pass') 
# credentials are given in code and somehow converted to a 
# windows authentication in the background 
# some research shows that a "trusted=True" keyword should be provided. 

ही _mssql मॉड्यूल का उपयोग कर के लिए चला जाता है।


नोट:

  • अजगर संस्करण: 2.7.8
  • मैं उपयोग कर रहा हूँ pymssql के संस्करण: कि विंडोज़ प्रमाणीकरण का समर्थन करने के लिए प्रयोग किया जाता pymssql की 2.1.1
  • संस्करण: 1 ।एक्स
  • मैं के साथ (सभी 64 बिट) का परीक्षण किया है:
    • विंडोज 7 पेशेवर
    • विंडोज 7 होम प्रीमियम
    • विंडोज सर्वर 2012
    • विंडोज़ सर्वर 2012R2

विषय पर अन्य प्रश्न:

pymssql: How to use windows authentication when running on a non-windows box

Unable to connect using pymssql with windows authentication

https://stackoverflow.com/questions/27692366/mssql-python-windows-authentication

+1

आप सूची कर सकते हैं खिड़कियां संस्करण प्रयोग कर रहे हैं, और दोनों pymssql और खिड़कियों जहां यह – jsbueno

उत्तर

-1

तो, मुझे लगा कि मुझे इस समस्या को हल करने के लिए उपयोग की जाने वाली विधि के साथ अपने स्वयं के प्रश्न (यह कुछ महीने हो गया है) का जवाब देना चाहिए।

संक्षिप्त उत्तर: मैंने कुछ और उपयोग किया।

लंबा उत्तर: विंडोज प्रमाणीकरण का परीक्षण करने के लिए (विंडोज़ उपयोगकर्ता पर वर्तमान में लॉग इन किए जाने के अलावा, जो काम करता है) मैंने माइक्रोसॉफ्ट से SQLCMD उपकरण का उपयोग शुरू किया, PsExec के साथ संयुक्त।

PsExec मैं elevated(-h) और load profile(-e) झंडे के साथ फांसी दे दी। पूर्ण उपयोगकर्ता नाम DOMAIN\USERNAME का उपयोग करना।

SQLCMD मैंने trusted connection-E ध्वज के साथ निष्पादित किया।

बाकी आप पर निर्भर है।

1

मैं हाल ही में इस एक ही चुनौती थी। मैं पहले पाइथन 2.7 और विंडोज प्रमाणीकरण का भी उपयोग कर रहा था। एकमात्र तरीका जिसे मैं कनेक्ट करने में सक्षम था, आयरनपीथन का उपयोग करके और क्लियर मॉड्यूल आयात कर रहा था। मुझे यकीन नहीं है कि यह क्यों काम करता है और इस विषय पर जानकार किसी ऐसे व्यक्ति से स्पष्टीकरण की सराहना करता है। कुछ अंतर यह है कि मेरा सर्वर स्थानीय था और अंदर का डेटाबेस 'इकाई फ्रेमवर्क-कोड पहले' के साथ बनाया गया था। यहां वह कोड है जो अंततः मुझे सर्वर से कनेक्ट कर देता है।

import clr 
clr.AddReference('System.Data') 
from System.Data.SqlClient import * 

Conn_string = 'data source=Server_Name; initial catalog=Database_Name; trusted_connection=True' 
ScheduleConn = SqlConnection(Conn_string) 
ScheduleConn.Open() 

यदि यह आपकी समस्या का समाधान नहीं करता है तो मुझे उम्मीद है कि यह आपको आपके समाधान के करीब ले जाएगा।

+0

धन्यवाद "काम करता था" versiosn। यह मेरी तत्काल समस्या का समाधान नहीं करता है, लेकिन शायद यह मुझे करीब ले जाता है। क्या आप उन लाइब्रेरीज़ का लिंक प्रदान कर सकते हैं जिनका आप उपयोग कर रहे हैं? –

+0

https://msdn.microsoft.com/en-us/magazine/cc300810.aspx –

+0

यह भी ध्यान रखना महत्वपूर्ण है कि हालांकि डेटाबेस को .NET अनुप्रयोग के अंदर सेटअप किया गया था, लेकिन अगर मैं भाग गया तो मैं सर्वर से कनेक्ट करने में सक्षम था .NET पर्यावरण के बाहर, स्वयं की लिपि। –

5

मैं इस अजगर का उपयोग कर 2.7.11 64 बिट, pymssql 2.1.1 को हल करने को जीतने के 64 में सक्षम था, विंडोज़ 10, द्वारा खिड़कियों प्रमाणीकरण के साथ sqlserver 2012:

conn = pymssql.connect(server = 'EDDESKTOP', database = 'baseballData') 

और में टीसीपी/आईपी कनेक्शन को सक्षम करने एसक्यूएल सर्वर कॉन्फ़िगरेशन प्रबंधक> एसक्यूएल सर्वर नेटवर्क कॉन्फ़िगरेशन -> MSSQLSERVER-> टीसीपी/आईपी सक्षम

0

यह अब काम करता है लगता है। पायथन 3.6, विंडोज 10।

conn = pymssql.connect(server='(local)', database='DbName') 
+0

सत्यापित नहीं किया है, मेरे पास अब इसके लिए कोई पर्यावरण नहीं है। लेकिन यह गैर-स्थानीय सर्वर के लिए काम करता है? –

+0

हां, यह दूरस्थ सर्वर के लिए काम करता है। –

1

यदि आरएचईएल पर, FREETDSCONF पर्यावरण चर सेट करें। Pymssql डिफ़ॉल्ट रूप से गलत स्थानों में दिखता है:

os.environ["FREETDSCONF"] = "/etc/freetds.conf" 
संबंधित मुद्दे