إسقاط جميع النشطة اتصالات قاعدة البيانات فشل الملقم عند تنفيذ KillAllProcesses

StackOverflow https://stackoverflow.com/questions/1439183

  •  10-07-2019
  •  | 
  •  

سؤال

أنا بحاجة إلى إجراء استعادة قاعدة بيانات من التطبيق.قبل القيام بذلك ، أريد أن أقتل جميع العمليات على النحو التالي:

    private void KillAllProcessesOnSMARTDatabases(Server targetServer)
    {
        targetServer.KillAllProcesses(SMART_DB);
        targetServer.KillAllProcesses(SMART_HISTORY_DB);
        targetServer.KillAllProcesses(SMART_METADATA_DB);
        SqlConnection.ClearAllPools();
    }

ومع ذلك ، عند أول KillAllProcesses تشغيل أحصل على الاستثناء التالي:

مايكروسوفت.SqlServer.إدارة.Smo.FailedOperationException:إسقاط جميع النشطة اتصالات قاعدة البيانات فشل الملقم 'MYServer'.---> Microsoft.SqlServer.إدارة.المشتركة.ExecutionFailureException:حدث استثناء أثناء تنفيذ عبارة SQL للعمليات أو دفعة واحدة.---> System.البيانات.SqlClient.SqlException:عمليات المستخدم فقط يمكن أن يكون قتل.

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

بدأ هذا يحدث فقط في الآونة الأخيرة.بالنسبة لي يبدو أن هناك بعض عمليات التشغيل التي ليست بدأت قبل المستخدم ؟

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

المحلول

ويبدو أن التعليمات البرمجية الخاصة بك في محاولة لإنهاء جميع SQL Server العمليات التي ليست فكرة جيدة.

إذا كنت ترغب في إجراء عملية استعادة قاعدة البيانات ، يجب تعيين قاعدة البيانات في السؤال إما إلى single_user وضع أو RESTRICTED_USER وضع في وقت لاحق كونها الأكثر مناسبة.

نلقي نظرة على المثال التالي من تحويل قاعدة البيانات إلى RESTRICTED_USER طريقة و كيفية إغلاق أي فتح المستخدم اتصالات في العملية.

كيفية:تعيين قاعدة البيانات إلى وضع المستخدم المفرد

نصائح أخرى

يمكنك استخدام SMO إلى "قتل" قاعدة بيانات معينة.وهذه القوة قطرة من كافة اتصالات العميل إلى قاعدة البيانات فقط ثم إسقاط قاعدة البيانات نفسها.

Microsoft.SqlServer.Management.Smo.Server oServer = this.GetSmoServer();
oServer.KillDatabase(this.DatabaseName);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top