نظرات مطالب
SQL Server 2005 SP3
بازخوردهای پروژهها
نیاز به sql server
آیا این برنامه نیاز به نصب sql server دارد؟
اشتراکها
سری حسابرسی SQL Server
اشتراکها
مقایسه SQL و NOSQL
اگر برنامههای مبتنی بر SQL Server خود را به EF 7.0 ارتقاء دهید، در حین اجرای برنامه، به خطای زیر برخواهید خورد:
علت اینجا است که پروایدر SQL Server مخصوص EF 7.0، از نگارش جدید Microsoft.Data.SqlClient استفاده میکند و در این نگارش، تنظیم Encrypt=True، به صورت پیشفرض اعمال شدهاست. این تنظیم، پیشتر به صورت Encrypt=False وجود داشت و به همین جهت عموما در حین تعریف رشتههای اتصالی دیده نمیشد.
اگر نیاز به استفادهی از پرچم Encrypt=True وجود داشته باشد:
- باید سرور اس کیوال با یک certificate معتبر تنظیم شود.
- کلاینت باید این certificate را تائید کند. اگر کلاینت چنین قصدی را ندارد، میتواند تنظیم TrustServerCertificate=True را به رشتهی اتصالی اضافه کند.
در غیراینصورت، خطای ذکر شده را دریافت خواهیم کرد.
برای رفع این مشکل یا باید رمزنگاری اتصالات را در SQL Server پیاده سازی کرد و یا از این پس، ذکر پرچم Encrypt=False در انتهای رشتهی اتصالی به آن، ضروری است. برای مثال یک نمونه رشتهی اتصالی تغییر یافتهی بر اساس این تنظیم، به صورت زیر است:
بدیهی است این تغییر مختص به EF 7.0 نیست و تمام برنامههایی که از ADO.NET و نگارش جدید Microsoft.Data.SqlClient استفاده میکنند، باید به آن توجه داشته باشند.
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)
اگر نیاز به استفادهی از پرچم Encrypt=True وجود داشته باشد:
- باید سرور اس کیوال با یک certificate معتبر تنظیم شود.
- کلاینت باید این certificate را تائید کند. اگر کلاینت چنین قصدی را ندارد، میتواند تنظیم TrustServerCertificate=True را به رشتهی اتصالی اضافه کند.
در غیراینصورت، خطای ذکر شده را دریافت خواهیم کرد.
برای رفع این مشکل یا باید رمزنگاری اتصالات را در SQL Server پیاده سازی کرد و یا از این پس، ذکر پرچم Encrypt=False در انتهای رشتهی اتصالی به آن، ضروری است. برای مثال یک نمونه رشتهی اتصالی تغییر یافتهی بر اساس این تنظیم، به صورت زیر است:
Data Source=.\\SQLEXPRESS;Initial Catalog=MyTestDb;Integrated Security=true;Encrypt=False;
بدیهی است این تغییر مختص به EF 7.0 نیست و تمام برنامههایی که از ADO.NET و نگارش جدید Microsoft.Data.SqlClient استفاده میکنند، باید به آن توجه داشته باشند.