Distributed Transaction against a linked Server
ถ้าเราต้องการ Run Transaction บน Linked Server นั้นจะต้องมีการ Setup กันตัว Server MSSql ที่เรา Remote เข้าไปเล็กน้อยครับ ไม่งั้นจะเกิด Error
1. ถ้า Error เกี่ยวข้องกับ XACT_ABORT เราก็แค่เปิดมันครับ ด้วยคำสั่ง
SET XACT_ABORT ON
2. แต่ถ้าเป็น Error ด้านล่าง แสดงว่าเครื่องปลายทางยังไม่ได้เปิด MSDTC หรือปิดการ Run จากผ่าน Network
The operation could not be performed because the OLE DB provider ‘SQLOLEDB’ was unable to begin a distributed transaction. [OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ] OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].
ซึ่งวิธีการแก้ไขให้ทำตามภาพด้านล่างนี้หรือ Link ของ Microsoft ตามนี้ครับ http://support.microsoft.com/kb/839279
1. ไปที่ Start Menu > Run แล้วพิมพ์ Services.msc

2. หาบรรทัดที่เขียนว่า Distributed Transaction Coordinator ตามภาพ แล้ว Click ขวา > Properties หรือ Double Click เลยก็ได้

3. กดปุ่ม Start ครับเพื่อ Start Service MSDTC ส่วนที่ Combo Startup type นั้นก็ขึ้นอยู่กับเราว่าจะเลือกเป็นอะไร เช่น Automatic เพื่อให้ Windows Start Service นี้เองเวลาเปิดเครื่องมา เป็นต้นครับ ก็แล้วแต่ท่านๆ จะต้องการแบบใด หลังจากนั้นก็กด ok ปิดไป

4.ไปที่ Start Menu > Run อีกครั้ง แล้วพิมพ์ dcomcnfg.exe

5. Click เพื่อแตก Tree View ไปตามรูป แล้ว Click ขวาที่ My Computer เลือก Properties ครับ

6. จากนั้นก็ให้ไปที่ Tab ที่ชื่อว่า MSDTC แล้วให้ Click ที่ปุ่ม Security Configuration ตามภาพ

7. จากนั้นก็ให้ Set ค่าต่างๆ ตามภาพด้านล่างนี้ เสร็จแล้วก็ ok ออกไปเลยได้ครับ เป็นอันเสร็จพิธีทั้งหมดแล้ว

Comments(0)