سؤال

ولدي تطبيق يقوم باسترداد البيانات ومخازن في قاعدة بيانات مرة واحدة يوميا. حتى وقت قريب وقد أقام هذا التطبيق على نفس الجهاز كخادم SQL ولكن نظرا لبعض مشكلات الأجهزة مع بعض الأجهزة الطرفية اللازمة، وقد تم نقله إلى جهاز منفصلة تشغيل ويندوز XP.

والمشكلة التي نجريها هنا، هو أنه عندما يتم تشغيل الصفقة الأولى من صباح اليوم، أن تحصل على تتبع مكدس ما يلي:

<اقتباس فقرة>   

وSystem.Transactions.TransactionManagerCommunicationException: فشل الاتصال مع إدارة المعاملات الأساسية. ---> System.Runtime.InteropServices.COMException (0x80004005) غير: لقد تم إرجاع خطأ HRESULT E_FAIL من استدعاء مكون COM

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

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

المحلول

وشكرا لكم أيها الرجال،

وفقط لملء لكم في، لدينا حل المشكلة عن طريق تغيير تكوين DCOM لاستخدام منسق بعيد موجود على خادم SQL، حتى الآن لم نواجه أي مشاكل أخرى.

نصائح أخرى

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

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

وشيء واحد للنظر في (وأنه قد لا يكون سبب المشكلة)، للتأكد من أن البحث DNS العكسي على IP العميل يحل في الواقع إلى الاسم الذي يشير إلى جهاز العميل. كان لدينا مشاكل مع الإعداد DNS / DHCP، حيث يقابل أحد IP إلى أسماء متعددة. عندما حاولت النهاية البعيدة من MSDTC للاتصال إلى MSDTC على العميل، انها محاولة الاتصال إلى جهاز آخر.

وهذا سوف تظهر كما مهلات (تبدو عشوائية) صفقة.

ويا عزيزي لدينا أيضا تم تواجه نفس المشكلة. كنا ترحيل البيانات من قاعدة بيانات واحدة إلى أخرى (مع بنية مختلفة)، وكان يستخدم دون سرعة الصوت لتسريع هذه العملية. كنا المعاملات و<م> SharedDbConnectionScope كائن وفشلت simillarly على الجهاز تشغيل <م> XP SP3 . أعتقد أن هناك بعض التحديثات في SP3 أن يكسر الأشياء كما هي تعمل بشكل جيد على فيستا و 2003 و 2008 خوادم .

وتحرير: هنا هو rel="nofollow MSDN KB المقالة أن يناقش نفس المشكلة

وربما يمكن أن حاول تشغيل عملية الذي يبدأ ببساطة ويرتكب المعاملات على DTC كل 30 دقيقة أو نحو ذلك؟

وكان لدينا مشكلة مماثلة في بيئة الاختبار. "فشل الاتصال مع إدارة المعاملات الأساسية" الصفقة الأولى التي وقعت بعد 10 دقيقة من الخمول فشلت مع الخطأ.
بعد بعض البحوث استنتجنا أن الاتصال MSDTC ألغيت وتعذر تأسيس في المبلغ المطلوب من الزمن (من طبقات مثل المهلة الافتراضية لهذه العملية هو 4 ثوان). لحل هذه المشكلة قمنا بزيادة طول الفترة الزمنية التي ينتظرها الكمبيوتر العميل للاستجابة ربط حزمة من كمبيوتر الملقم. ويتم ذلك عن طريق إضافة مفتاح في التسجيل من جهاز الكمبيوتر العميل: http://support2.microsoft.com/ ؟ ID = 922430

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