سؤال

ولدي ملقمين، أول واحد مع SQL Server 2005 و ثانية واحدة مع SQL Server 2000. أريد أن إدراج بيانات من 2005 إلى 2000، وأريد أن تفعل ذلك unsync (بدون المعاملات الموزعة لأن "حفظ المعاملة "تستخدم).

وحالما يتم إدخال المعلومات في الجداول خادم عام 2000، وأطلق بعض بدلا من المشغلات لمعالجة هذه المعلومات.

في هذا السيناريو قررت استخدام خدمة وسيط. لذلك ليس لدي إجراء مخزن لإدراج معلومات من ملقم واحد إلى الآخر، وأنها تعمل تماما.

ولكن عندما أدعو هذا الإجراء من الإجراء رسالة عملية طابور الهدف فشلت، وأنا لا أعرف لماذا !!

وأيضا، وأنا أعلم أنه يعمل لأنني عندما تستخدم نفس هيكل (طوابير والإجراءات المخزنة) لنسخ شكل قاعدة بيانات واحدة إلى أخرى على نفس SQL 2005 الخادم.

وهكذا فشلت فقط بين الأجهزة، أي شخص يعرف لماذا أو كيف للحصول على مزيد من المعلومات حول سبب الفشل؟ أو كيفية إدراج البيانات unsync (لا أستطيع أن استخدام وكيل SQL لأنني أريد إدراج المعلومات بشكل متكرر أكثر من 1 دقيقة).

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

المحلول

والقضية المعتادة هي أن الإجراء SSB يستخدم WAITFOR وWAITFOR يتنافى مع المعاملات الموزعة. الحل الوحيد هو التخلص من WAITFOR (يستلم) واستخدام عادي تصلك بدلا من ذلك.

نصائح أخرى

والنظر في استخدام ملقم مرتبط بدلا من وسيط الخدمة. مع ملقم مرتبط، يمكنك:

insert into LinkedServer.The2000Db.dbo.The2000Table
(col1, col2, col3)
select col1, col2, col3
from The2005Table
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top