سؤال

ولدي طلب وهذا مرتبط إلى قاعدة بيانات من خلال spring.net AdoTemplate. أنا مهمتها رسم طريقة قاعدة بيانات استعادة والتي تحافظ على التطبيق على التوالي ولكن قطرات اتصالات الشبكة وذلك لإسقاط قاعدة البيانات القديمة وطرح واحدة جديدة. سؤالي هو كيف يمكنني إسقاط كافة الاتصالات الحالية أن هذا التطبيق أن هذه AdoTemplate؟ أنا لا أرى أي أسلوب عام في فصل الربيع 1.1 لإسقاط اتصالات الشبكة.

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

المحلول 2

ما انتهى عمل عظيم كان:

   SqlConnection.ClearAllPools();
   // if any connections were being used at the time of the clear, hopefully waiting
   // 3 seconds will give them time to be released and we can now close them as well
   Thread.Sleep(3000);
   //clear again
   SqlConnection.ClearAllPools();

نصائح أخرى

وليس هناك أي "صلة" المادي بين AdoTemplate وقاعدة بيانات SQL. ترك المعاملات جانبا، AdoTemplate يخلق كائن SqlConnection جديد لكل طريقة التي يتم تنفيذها من ADO.NET، تنفيذ أمر ويتصرف على الكائن SqlConnection بعد ذلك. تحت أغطية، ADO.NET بتخزين اتصالات فعلية إلى قاعدة البيانات في بركة. عند إنشاء كائن SqlConnection جديد، يتم الحصول على 1 من تلك الاتصالات المادية مؤقتا من تجمع لخدمة هذا SqlConnection. وهذا يعني، أنك لن تحتاج إلى استراتيجية مختلفة من أجل حل مشكلتك. استراتيجية واحدة القادمة الى ذهني هو الحصول على قائمة الاتصالات النشطة من قاعدة البيانات sysprocesses و تنفيذ العبارة KILL عليها. جلب غوغلينغ قصيرة تصل هذه المقالة . ملاحظة أن هذه المقالة يشير إلى MSSQL 2000. وأنا متأكد من أن تحتاج إلى google أكثر قليلا لإيجاد حل لعام 2005. ومنذ عام 2005 لا يسمح لجداول النظام الوصول بعد الآن asfair.

وهته، إريك

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