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

Step1

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

Service

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

Start Service

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

004

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

005

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

006

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

007

Leave a Reply