إزالة Integrated Security=True
من سلسلة الاتصال الخاصة بك وأنت تحاول الاتصال باسم مستخدم/كلمة مرور خادم SQL
إطار الكيان مع سلسلة اتصال رمز أولى إلى قاعدة بيانات عن بُعد
-
29-07-2022 - |
سؤال
أنا أعمل على جهاز محلي (تطبيق ASP.NET MVC 4) ولكن الآن أريد أن أبدأ في استخدام خادم SQL للشركة ، لذا أحتاج إلى تغيير سلسلة الاتصال من أجل توصيلي بالخادم البعيد.
الإعداد هو:
- لدي اتصال VPN حيث أستخدم عنوان IP ، لا يمكنني إظهار IP الدقيق ، لذلك دعنا نقول - xxx.xxx.xxx.xxx
- لدي اسم مستخدم وكلمة مرور من أجل الاتصال بـ VPN - VPNUSERNAME/VPNPASSWORD
- عندما أستخدم
Microsoft SQL Server Management Studio
للاتصال بالخادم البعيد ، أستخدم نفس IP الذي أستخدمه للاتصال بـ VPN - XXX.XXX.XXX.XXX - لدي اسم مستخدم وكلمة مرور مختلفة لخادم SQL - SqluserName/SQLPassword
لديّ سلسلة اتصال موجودة أستخدمها للاتصال بالخادم على جهاز الكمبيوتر الخاص بي ، لذلك اعتقدت أنه سيكون كافياً لتغيير المعلمات هناك مثل:
<add name="ProjectName.DAL.MyDbContext"
providerName="System.Data.SqlClient"
connectionString="Data Source=xxx.xxx.xxx.xxx;
Initial Catalog=DatabaseName;Integrated Security=True;
MultipleActiveResultSets=True;
user id=SQLUsername;password=SQLPassword;App=EntityFramework" />
لذا فإن التغييرات من سلسلة الاتصال التي تعمل وتوصيلني بخادمي المحلي هي اثنان:
Data Source= xxx.xxx.xxx.xxx
- أنا أستخدم IP. هنا أتساءل عما إذا كان IP نفسه كافياً. هل ينبغي أن أستخدم http://xxx.xxx.xxx.xxx أو فقط IP على ما يرام؟user id=SQLUsername;pasword=SQLPassword
- أنا أستخدم نفس اسم المستخدم وكلمة المرور كما فيManagement studio
من حيث يمكنني الاتصال بنجاح بخادم إزالة من خلال توفيرxxx.xxx.xxx.xxx
كاسم الخادم واستخدام SQLUSERNAME/SQLPASSWORD تحتSQL Server Authentincation
.
لكي أكون واضحًا - تحت استوديو الإدارة ، ليس لدي أي مشاكل في الاتصال بالخادم البعيد. ومع ذلك ، عندما أقوم بتغيير سلسلة الاتصال إلى ما نشرته أعلاه في بلدي HomeController
حيث لدي منطق بسيط للغاية فقط للتحقق من تنفيذ المكالمة إلى قاعدة البيانات:
private MyDbContext db = new MyDbContext();
//
// GET: /Home/
public ActionResult Index()
{
return View(db.Users.ToList());
}
أحصل على 3 استثناءات:
- sqlexception (0x80131904): فشل تسجيل الدخول للمستخدم 'vpnusername'
- ProviderInciptibleException: لم يعيد المزود سلسلة providermanifesttoken.
- ProviderInciptibleException: حدث خطأ أثناء الحصول على معلومات مزود من قاعدة البيانات. يمكن أن يكون سبب ذلك إطار عمل الكيان باستخدام سلسلة اتصال غير صحيحة.
لذلك إلى جانب ذلك ، في رأيي وكما يخبر الاستثناء رقم 3 أن المشكلة هي الطريقة التي أستخدم بها سلسلة الاتصال التي تهمني أيضًا Number 1
الاستثناء الذي يقول أن تسجيل الدخول فشل ولكن ليس من أجل sqlusername الخاص بي ولكن لاسم VPNUSERNAME. كما قلت - أنا حقًا أستخدم اتصال VPN وأستخدم نفس IP - xxx.xxx.xxx.xxx
للاتصال بكل من VPN وخادم SQL (من استوديو الإدارة).
أي فكرة عن كيفية حل هذا؟
المحلول