Friday, July 20, 2007

การตั้งค่า COM+ ให้ใช้งานบน Windows XP และ Windows 2003

เนื่องจากผมได้พบปัญหาที่ทำให้ผมปวดหัว คือ เมื่อเรียกใช้ COM+ ที่กำหนด transaction เป็น require แล้ว จะขึ้น error ว่า "New Transaction cannot enlist in the specified" แต่ถ้ากำหนด transaction เป็น support แล้วก็สามารถใช้ได้ตามปกติ

สาเหตุที่ผมพบปัญหานี้เนื่องจากผมต้องทำการย้ายระบบทั้งหมด จากเซิร์ฟเวอร์เดิมซึ่งเป็น Windows 2000 ไปยังเซิร์ฟเวอร์ใหม่ืที่เป็น Windows 2003 เมื่อผมติดตั้ง COM+ เสร็จเรียบร้อยแล้ว ผมกลับเรียกใช้ไม่ได้ เนื่องจากจะเกิด error ดังที่กล่าวไว้แล้ว


ผมจึงเริ่มต้นด้วยการค้นหาวิธีแก้ปัญหานี้และได้พบกับ blog ของ Mark Brown ซึ่งได้เคยเขียนวิธีแก้ไขปัญหานี้ไว้แล้วเมื่อ 30 ธันวาคม 2548 (:-P)
Troubleshooting a MSDTC issue between Windows XP SP2/SP1 + SQL 2005 and Windows 2003 SP1 + SQL 2000

ซึ่งเขาแนะนำให้ทำตามขั้นตอนของไมโครซอฟท์ตามนี้ http://support.microsoft.com/?kbid=873160

โดยผมขอสรุปง่ายคือว่า ใน Windows XP SP2 และ Windows 2003 ได้เพิ่มระบบรักษาความปลอดภัยมากขึ้น โดย default จะไม่ยอมให้แต่ละเครื่องที่ติดตั้ง Component Service ทำการติดต่อ transaction กันได้ ต้ิองทำการอนุญาตก่อนจึงสามารถใช้ได้ โดยการตั้งค่าใน Component Services ในส่วนของ Security Configuration ตามรูป
โดยในส่วนของ Transaction Manager Communication ประกอบด้วย
  • All Inbound หมายถึง ยอมให้ distributed transaction ทำงานบนคอมพิวเตอร์เครื่องนี้ จากเครื่องอื่นๆได้
  • All Outbond หมายถึง ยอมให้ distributed transaction ทำงานบนคอมพิวเตอร์อื่นๆ จากเครื่องนี้ได้

และต้องเลือก No Authentication Required ด้วยจึงจะทำงานได้

เป็นไงครับ ดูไม่ยุ่งยาก แต่ทำเอาผมเป็นไมเกรนไปเลยครับ 2 วันเต็มๆ ทำกันได้นะ ไมโครซอฟท์
อิ อิ

No comments: