سؤال

لقد فتح اتصال من هذا القبيل:

Using conn as New OdbcConnection(connectionString)
    conn.Open()
    //do stuff
End Using

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

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

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

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

المحلول

يبدو أنك يمكن أن مجرد قراءة مفتاح التسجيل هذا:

[HKEYLOCALMACHINE]\SOFTWARE\ODBC\ODBCINST.INI\SQL Server\CPTimeout

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

انظر:

http://msdn.microsoft.com/en-us/library/ms810829.aspx

أنا لست متأكدا من الحصول على عدد من الاتصالات المفتوحة.مجرد فضول:لماذا تريد أن تعرف ؟

نصائح أخرى

MSDN كما في العمق المبادئ التوجيهية بشأن هذا

تكوين تجمع الاتصال من البيانات المصدر المسؤول

[قص]

بدلا من ذلك, يمكنك بدء تشغيل ODBC مسؤول مصدر بيانات في تشغيل موجه.على شريط المهام ، انقر فوق ابدأ ، انقر فوق تشغيل ثم ثم اكتب Odbcad32.

علامة التبويب إدارة الاتصال تجميع وجدت في بيانات ODBC مصدر مسؤول في مربع الحوار الإصدار 3.5 ODBC في وقت لاحق.تكوين تجمع الاتصال من التسجيل

الإصدارات قبل إلى الإصدار 3.5 من ODBC المكونات الأساسية ، تحتاج إلى تعديل التسجيل مباشرة السيطرة على تجمع الاتصال CPTimeout القيمة.

تجمع دائما التعامل معها من قبل خادم البيانات البرمجيات.بيت القصيد هو أن في .صافي لا يجب أن تقلق بشأن ذلك (على سبيل المثال ، وهذا هو السبب يجب عليك دائما استخدام SqlConnection عند العمل مع SQL Server - جزء من ذلك هو تمكين تجمع الاتصال).

التحديث

على ويندوز فيستا فقط اكتب "ODBC" في القائمة "ابدأ" وسوف تجد التطبيق بالنسبة لك.

تحديث التوضيح التالي من العملية

من حيث تحديد ما إذا تم تمكين تجمع الاتصال على كل آلة ، تبحث في MSDN التوجيهية أنا وينبغي أن أقول لكم أن أفضل إذا تحقق قيم التسجيل (انظر هذه المادة المؤشرات على الوصول إلى التسجيل).

TBH رغم ذلك ، ما لم يكن العميل آلات كربي حقا ، وأود أن ربما لا حتى عناء..AFAIK هو تمكين افتراضيا ، وفتح الاتصالات على جهاز العميل (من خلال تجربتي) لم يكن صفقة كبيرة.فقط يصبح حقا صفقة كبيرة عندما الكثير يتم فتح.

تحديد عدد الاتصالات المفتوحة على كل db, حاول هذا sql - حصلت عليه من وثيقة على الإنترنت

select  db_name(dbid) , count(*) 'connections count'
  from master..sysprocesses
 where spid > 50 and spid  @@spid
 group by  db_name(dbid)
 order by count(*) desc

Spid <=50 يتم استخدامها من قبل sqlserver.حتى sql أعلاه سوف أقول لكم الاتصال المستخدمة من قبل البرامج الخاصة بك.

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