سؤال

وأنا سحبت ملف ASPNETDB.MDF الخروج من الخادم لموقع ASP باستخدام مصادقة النماذج لآلة المحلية. I إضافة مستخدم جديد إلى ملف قاعدة البيانات باستخدام أداة ASP.NET تكوين موقع. قمت بتحميل ملف MDF مرة أخرى إلى الخادم، والآن يمكنني الحصول على الاستثناء التالي كلما أحاول تسجيل الدخول كمستخدم أي:

و Cannot open user default database. Login failed.
Login failed for user 'NT AUTHORITY\NETWORK SERVICE'

ولقد تم غوغلينغ وقراءة كل الحلول الأخرى لهذه المشكلة هنا في SO وكذلك لم يتم العثور على أي شيء يعمل.

وعلى الملقم SQL Server 2008 على ذلك وهذا ما أستخدمه على الجهاز المحلي بلدي مع VS 2008 الفنية.

وسلسلة الاتصال بلدي (بفواصل المضافة لوضوح):

<add name="ASPNETDBConnectionString1" 
     connectionString="Data Source=.\SQLEXPRESS;
                       AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;
                       Integrated Security=True;User Instance=True" 
     providerName="System.Data.SqlClient"
/>

وأنا جديدة على SQL Server بحيث أنا متأكد من أنني افسدت شيء ما في مكان ما.

وهي موضع تقدير أي مساعدة.

هل كانت مفيدة؟

المحلول

وكل الأسئلة حول الشخص أو الشيء أو لماذا بشأن التكوين جانبا ...

ويمكن استنتاجها مشكلتك من سلسلة الاتصال. والتي تعمل محليا ضد صريحة SQL ولكن ليس ضد مزود السليم على الخادم.

والدليل الأول هو أن SQLEXPRESS فقط تمكن حالات العضو. على SQL السليم سيكون لديك لإرفاق يمول.

إذا أن سلسلة الاتصال يعمل على الجهاز الخاص بك بينما في VS 2008 لديك SQL EXPRESS المثبتة. إذا كان ذلك سلسلة اتصال يعمل على الخادم ثم خادم SQL وEXPRESS تثبيت.

إذا الملقم لا يكون لديك SQL اكسبرس تركيبها وتكوينها للسماح للحالات المستخدم، كما آمل أنها لم، من شأنها أن تؤدي سلسلة الاتصال في الاستثناء فشل تسجيل الدخول التي تعاني منها.

وأتساءل أيضا حول نسختك من /. عادة الوصول سيتم رفض ويمول نشطة، حتى للنسخ.

يرجى تأكيد SQL إصدارات كل من العميل والخادم الجانب ومحاولة العثور على نسخة سابقة من كلا الملفين الملف web.config لمقارنة سلاسل اتصال.

نصائح أخرى

وأعتقد أن مشكلتك هي أنك لا تتبع الفرق بين قاعدة بيانات <م> تسجيل الدخول وقاعدة بيانات <م> المستخدم. A تسجيل الدخول يتيح الوصول إلى SQL Server ( بشكل عام). مستخدم قاعدة بيانات تسجيل الدخول التي أعطيت الوصول إلى قاعدة بيانات محددة. عند نسخ الملفات ذهابا وإيابا كما كنت قد فعلت، يمكنك إبطال معرف المصدر لتسجيل الدخول إلى الحساب (وخاصة حسابات Windows).

وأود أن أقترح عليك أن استخدام حساب SQL لتسجيل الدخول إلى ملقم SQL (بدلا من حساب ويندوز) ووضع بيانات الاعتماد في ملف web.config. لقد وجدت ببساطة أن هذا هو أسهل بكثير لتكوين واستخدام والتغيير من تسجيل الدخول حساب Windows. وبمجرد تعيين تسجيل الدخول الخاصة بك، فقط للتأكد من أن لديها أيضا وصول المستخدم إلى قاعدة البيانات على الملقم التي ترغب في استخدامها. أنت <م> قد لا تزال تعمل في مشاكل نقل (على الرغم من أنهم أقل احتمالا)، ولكن تحديد لهم هو أسهل قليلا جدا.

ملاحظة هامة: الآخرين يختلفون - بحجة أن حسابات Windows هي أكثر أمنا - حتى أنك قد ترغب في تثقيف نفسك حول هذه القضية!

وصفك لهذه القضية غير مكتملة أو غير متسقة مع الخطأ. سوف تحتاج إلى توفير أكثر قليلا من المعلومات عن إجابة أفضل، ولكن هنا هو جوابي الأولية.

ويشير الخطأ أن التطبيق الخاص بك يستخدم المصادقة المتكاملة لSQL. لذلك، من شأنه أن يساعد على رؤية سلسلة الاتصال. من المرجح يقول "SSPI" في مكان ما. ما يعنيه هذا هو أن المستخدم أن الحاوية التطبيق يعمل باسم (خدمة شبكة) يحاول الاتصال بقاعدة البيانات، وأنه لا يمكن لأنه لا يوجد لديك الإذن للقيام بذلك.

وهكذا أنت إما بتغيير سلسلة الاتصال في إطار ما فعلت، أو كان خدمة الشبكة من قبل مستخدم قاعدة البيانات (ليست فكرة جيدة، على ما أظن).

وهناك احتمال الإعدادات المتعلقة أمنية أخرى في اللعب في الملف web.config الخاص بك. يبدو التطبيق الخاص بك لاستخدام مصادقة النماذج. إذا تم تعيين IIS للسماح بالوصول المجهول، ومن المقرر الملف web.config الخاص للقيام الانتحال، فإن ذلك يمكن أن يسبب أيضا خدمة الشبكة تحاول الاتصال SQL.

وكيف يتم تطبيق المفترض للاتصال؟ هل لديك حساب خدمة (حساب مستخدم واحد) لكافة المستخدمين الذين مصادقة من خلال مصادقة النماذج يجب أن تذهب من خلال عمليات قاعدة البيانات؟ إذا كان الأمر كذلك، فأنت بحاجة إلى تغيير سلسلة اتصال قاعدة البيانات الخاصة بك تحتوي على المستخدم وكلمة المرور.

في أجل تصحيح هذا، تحتاج إلى التحقق من سلسلة الاتصال، أي أشكال المصادقة الإعدادات ذات الصلة في الملف web.config، وإعدادات الأمان في IIS. لا شيء من هذا وأعتقد أن له علاقة مع حقيقة أن قمت بإضافة المستخدم.

وتحرير: لذلك كنت تستخدم أمان متكامل، وكأنني المشتبه بهم. هذا لن يعمل مع نماذج أصيل، لأنه في حين يقوم المستخدم بالمصادقة على التطبيق الخاص بك مع هوية المستخدم، والتطبيق يصادق على قاعدة البيانات مع مصادقة متكاملة، أي خدمة الشبكة. كنت في حاجة الى حساب خدمة قاعدة البيانات، والمنظمة البحرية الدولية، وأنا لا أعرف كيف يمكن أن سبق لهم العمل إذا لم تقم بتغيير سلسلة الاتصال.

هل حاولت تغيير هذا تطبيق Pools-> إعدادات متقدمة -> نموذج العملية -> هوية

وحصلت على نفس الخطأ وإصلاحه عن طريق تغيير نموذج العملية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top