10

एक प्रणाली के साथ कुछ परेशानी होने के नाते मैं विकास कर रहा हूं। जहां तक ​​इस प्रश्न का संबंध है, लेआउट एक वाईएक्स निर्मित एमएसआई इंस्टॉलर है जो एसक्यूएल लोकलडीबी 2012, एक डब्ल्यूपीएफ ऐप और विंडोज सर्विस स्थापित करता है। विंडोज सेवा और डब्ल्यूपीएफ ऐप दोनों एक ही डेटाबेस के साथ संवाद करने के लिए हैं, उपयोगकर्ता इंटरैक्शन द्वारा संचालित ऐप और टाइमर पर सेवा।विंडोज सर्विस, डब्ल्यूपीएफ ऐप और एसएसएमएस काम से एसक्यूएल लोकलडीबी से कनेक्ट नहीं हो सकता है?

सबकुछ साफ रूप से स्थापित हो जाता है, डीबी इंस्टेंस मिश्रित मोड में स्थापित हो जाता है और इसलिए मेरा डेटाबेस प्रारंभकर्ता उदाहरण और डीबी के लिए एक नया लॉगिन और उपयोगकर्ता बनाता है, और एसएसएमएस में वे दोनों सही तरीके से कॉन्फ़िगर किए जाते हैं। मैं लॉग इन कर सकता हूं और नए लॉगिन का उपयोग करके टेबल को ठीक से पूछ सकता हूं। यहां कोड है जिसका उपयोग मैं लॉगिन बनाने के लिए करता था:

IF NOT EXISTS 
(SELECT loginname 
FROM master.dbo.syslogins WHERE name = 'BP_SERVICELOGIN') 
BEGIN 
    CREATE LOGIN[BP_SERVICELOGIN] WITH PASSWORD = 'pw'; 
    CREATE USER[bpUser] FOR LOGIN[BP_SERVICELOGIN] WITH DEFAULT_SCHEMA = dbo;  
    USE DatabaseName; 
    EXEC sp_addrolemember 'db_owner', 'bpUser' 
END 

तो मैं दोहराता हूं; यह लॉगिन एसएसएमएस में ठीक काम करता है और मुझे लॉग इन करने और डब्ल्यूपीएफ ऐप के प्रारंभकर्ता द्वारा बनाए गए डेटाबेस तक पहुंचने की अनुमति देता है।

हालांकि, मैं विंडोज सेवा से इस डेटाबेस में लॉगिन करने में सक्षम नहीं हूं। मैं अपने कनेक्शन स्ट्रिंग में नए लॉगिन का उपयोग करना सुनिश्चित कर रहा हूं और सबकुछ ठीक तरह से स्थापित है। मुझे इसके बारे में कैसे पता है? क्योंकि जब मैं अपने डब्ल्यूपीएफ ऐप में कनेक्शन स्ट्रिंग की प्रतिलिपि बनाता हूं और विंडोज ऑथ की बजाय इसका उपयोग करता हूं, तो यह काम करता है!

सेवा लगातार संदेश के साथ विफल रहता है:

"System.Data.Entity.Core.EntityException: The underlying provider failed on Open. in EntityFramework:File: Method:Open Line:0 Column:0 System.Data.SqlClient.SqlException: Login failed for user 'BP_SERVICELOGIN'. in .Net SqlClient Data" 

यहाँ कनेक्शन स्ट्रिंग मैं उपयोग कर रहा हूँ है:

<add name="ConnStringName" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=DbName;User Id=BP_SERVICELOGIN;Password=pw;MultipleActiveResultSets=True;Application Name=ServiceName" /> 

ऐसा लगता है कुछ बाधा से संबंध बना रहा है की तरह विंडोज सेवा ठीक से कनेक्ट होने से जबकि दूसरों को ऐसी कोई समस्या नहीं है। स्थानीय डीबी स्थापना ताजा है और डीबी और लॉग इन/उपयोगकर्ता के अलावा, ओओबी राज्य से कुछ भी नहीं किया है।

क्या कोई मदद कर सकता है?

+1

हाय! क्या आपने [यह] कोशिश की (http://stackoverflow.com/questions/26597498/using-sql-localdb-in-a- विन्डोज़- सेवा)? – Sinix

+0

क्या आप कई उदाहरणों का उपयोग कर रहे हैं ?! यदि आप हैं, तो कृपया कनेक्शन स्ट्रिंग में इंस्टेंस नाम को आजमाएं और जोड़ें। – Cucu

+0

SqlLocalDb जानकारी "MyInstance", यह क्या लौटता है? – Cucu

उत्तर

6

मैं विंडोज सेवाओं में पेशेवर नहीं हूं।

मुझे लगता है कि आपके द्वारा लिखी गई विंडोज सेवा में गलती है। सत्र शून्य अलगाव के साथ आपको निर्दिष्ट उपयोगकर्ता खाते में विंडोज सेवा चलाने की आवश्यकता हो सकती है।
यदि आप उपयोगकर्ता सेवा दे सकते हैं जो विंडोज सेवा चलाता है तो यह सहायक होगा। डिफ़ॉल्ट रूप से सेवा SYSTEM खाते नामक एक अलग उपयोगकर्ता खाते में चलती है। इस खाते में डेटाबेस तक पहुंचने की अनुमति नहीं हो सकती है। इससे समस्या हो सकती है।

+0

सेवा एनटी प्राधिकरण/प्रणाली के रूप में चल रही है, जो आप सही हैं, डेटाबेस को जोड़ने या एक्सेस करने का अधिकार नहीं है। हालांकि, सेवा में प्रदान की गई कनेक्शन स्ट्रिंग एक SQL प्रमाणीकरण खाता निर्दिष्ट करती है जो डेटाबेस में सही तरीके से कॉन्फ़िगर किया गया है, और लॉग के आधार पर यह वास्तव में सिस्टम के बजाय कनेक्ट करने के लिए इस खाते का उपयोग करने का प्रयास कर रहा है। – Caleb

+0

क्या आपने इस तरह की कनेक्शन स्ट्रिंग को बदलने का प्रयास किया था? '" डेटा स्रोत = (लोकलडीबी) \। \ V11.0; प्रारंभिक कैटलॉग = डीबीएनएएम; उपयोगकर्ता आईडी = बीपी_SERVICELOGIN; पासवर्ड = पीडब्ल्यू; एकाधिक एक्टिव रीसेट्ससेट्स = ट्रू; एप्लिकेशन नाम = सर्विसनाम "' और साझा उदाहरण का उपयोग करने का भी प्रयास करें स्थानीय डीबी के रूप में दिखाया गया है [http://stackoverflow.com/questions/21830727/how-to-access-localdb-from-windows-service) किसी भी तरह से उसने उसके लिए काम किया है। –

+0

क्या आपने इसे नेटवर्क सेवा के रूप में चलाने का प्रयास किया है? –

0

क्या आप जांच सकते हैं कि यह समस्या आप अनुभव कर रहे हैं, और समाधान प्रस्तावित करता है?

http://www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed

आप क्या वर्णन कर रहे हैं अजीब है, सब कुछ आपके वर्णन से अच्छा लग रहा है, लेकिन तथ्य यह है एक localdb डेटाबेस है कि संदिग्ध है।

+0

यह मुद्दा नहीं है, इंस्टॉलेशन के साथ कुछ भी गलत नहीं है, क्योंकि डेस्कटॉप पर चल रहे किसी अन्य एप्लिकेशन से लॉगिन लॉग इन और बिना किसी समस्या वाले डेटा तक पहुंच सकता है। यह निश्चित रूप से अनुमति मुद्दों की तरह अधिक गंध करता है। – Caleb

0

क्या आपने कनेक्शन स्ट्रिंग में Integrated Security=True; जोड़ने का प्रयास किया है?

+0

एक उत्तर में कोई प्रश्न नहीं होना चाहिए। आप यह http://stackoverflow.com/help/how-to-answer – fuchs777

+0

पढ़ना चाहेंगे, यह सब स्थानीय एनबी इंस्टॉलेशन/एनटी प्राधिकरण/सिस्टम पर वापस जाने वाले उपयोगकर्ता को बदलता है, जो इस पर्यावरण के लिए काम नहीं करेगा । – Caleb

संबंधित मुद्दे