मैं एसक्यूएल सर्वर पर इस अजीब त्रुटि मिलती है। और मुझे पुरानी पोस्ट में समाधान नहीं मिल रहा है।MSDTC सर्वर पर 'सर्वर अनुपलब्ध
create proc _upJM_SyncAll_test
as
begin
DECLARE @SQLString nvarchar(max)
set @SQLString = N'
DELETE FROM OPENQUERY([LOCAL_MYSQL],''SELECT acSubject FROM _utjm_setitemprices'') where acSubject not in (select acSubject from _uvJM_SetSubj)
DELETE FROM OPENQUERY([LOCAL_MYSQL],''SELECT acSubject FROM _utjm_setsubj'') where acSubject not in (select acSubject from _uvJM_SetSubj)
update a
set acName2 = b.acName2,
acName3 = b.acName3,
acAddress = b.acAddress,
acPost = b.acPost,
acPostName = b.acPostName,
acCountry = b.acCountry,
acVATCodePrefix = b.acVATCodePrefix,
acCode = b.acCode,
anDaysForPayment = b.anDaysForPayment
from OPENQUERY([LOCAL_MYSQL],''SELECT * FROM _utjm_setsubj'') a join _uvJM_SetSubj b on (a.acSubject = b.acSubject)
where 1=1
and ( isnull(a.acName2,'''') <> isnull(b.acName2,'''') OR
isnull(a.acName3,'''') <> isnull(b.acName3,'''') OR
isnull(a.acAddress,'''') <> isnull(b.acAddress,'''') OR
isnull(a.acPost,'''') <> isnull(b.acPost,'''') OR
isnull(a.acPostName,'''') <> isnull(b.acPostName,'''') OR
isnull(a.acCountry,'''') <> isnull(b.acCountry,'''') OR
isnull(a.acVATCodePrefix,'''') <> isnull(b.acVATCodePrefix,'''') OR
isnull(a.acCode,'''') <> isnull(b.acCode,'''') OR
isnull(a.anDaysForPayment,'''') <> isnull(b.anDaysForPayment,'''')
)
insert into OPENQUERY([LOCAL_MYSQL],''SELECT * FROM _utjm_setsubj'') (acSubject, acName2, acName3, acAddress, acPost, acPostName, acCountry, acVATCodePrefix, acCode, anDaysForPayment)
select b.acSubject, b.acName2, b.acName3, b.acAddress, b.acPost, b.acPostName, b.acCountry, b.acVATCodePrefix, b.acCode, b.anDaysForPayment
from OPENQUERY([LOCAL_MYSQL],''SELECT * FROM _utjm_setsubj'') a right join _uvJM_SetSubj b on (a.acSubject = b.acSubject)
where a.acSubject is null '
EXECUTE sp_executesql @SQLString;
end
जब मैं इस तरह प्रबंधन स्टूडियो में प्रक्रिया चलाने:
exec dbo._upJM_SyncAll_test
सब कुछ ठीक है
मैं इस प्रक्रिया है। मुझे कोई त्रुटि नहीं है, सिंक ठीक काम कर रहा है।
लेकिन जब मैं इस तरह ट्रिगर में निष्पादित कर दिया: ...
Msg 8501, Level 16, State 3, Procedure _upJM_SyncAll_test, Line 54
MSDTC on server 'server' is unavailable.
प्रक्रिया _upJM_SyncAll_test केवल 39 लाइनों है
आप पहले स्थान पर डायनामिक एसक्यूएल का उपयोग क्यों कर रहे हैं ?, यह आवश्यक नहीं लगता है – Lamak
अच्छी तरह से यह ऐसा है .. लिंक किया गया सर्वर [LOCAL_MYSQL] ऊपर और चल रहा है, लेकिन यह खुशी हो सकती है कि यह पहुंच योग्य नहीं है। उस स्थिति में यदि sp_executesql त्रुटि देता है तो मैं कुछ और करता हूं .. कृपया ध्यान दें कि _upJM_SyncAll_test सिर्फ इस पोस्ट के लिए परीक्षण प्रक्रिया है, _upJM_SyncAll अधिक जटिल है। – Kiki