ปัญหา:ฉันจะรัน Distributed Transaction Coordinator (DTC) บนเซิร์ฟเวอร์ทั้งหมดใน AlwaysOn Availability Group (AG) ได้อย่างไร ฉันไม่จำเป็นต้องรักษาการทำธุรกรรมมากกว่าเหตุการณ์ความล้มเหลว / การเปลี่ยนแปลง
การติดตั้ง:ฉันมี Windows Failover Cluster (WSFC) ที่มีเซิร์ฟเวอร์ Windows 2008 R2 สามเครื่องซึ่งกำลังทำงาน SQL 2012 ทั้งหมดสองเซิร์ฟเวอร์อยู่ในศูนย์ข้อมูลเดียวและเป็นส่วนหนึ่งของ AlwaysOn Failover Cluster (FCI) ในขณะที่เซิร์ฟเวอร์ตัวที่สามอยู่ใน ศูนย์ข้อมูลที่สอง WSFC เป็นคลัสเตอร์หลายเครือข่ายย่อย นี่คือภาพร่างของการตั้งค่า:
ฉันสามารถติดตั้งและกำหนดค่า DTC ให้ทำงานระหว่างสองโหนด FCI ได้เนื่องจากพวกเขาอยู่ในซับเน็ตเดียวกันและใช้ที่เก็บข้อมูลร่วมกัน ฉันกำหนดค่า AG สองสามตัวและพวกเขาทำงานได้ดี ภาพหน้าจอนี้แสดงการติดตั้ง DTC บน FCI:
ภาพหน้าจอนี้แสดงให้เห็นว่าฉันสามารถกำหนดค่า DTC บนหนึ่งในโหนด FCI (แล้วแต่จำนวนใดที่ทำงาน):
ฉันต้องการย้ายแอปพลิเคชันที่ใช้ DTC ไปยังคลัสเตอร์นี้และใช้ AG ฉันอ่านแล้วว่า DTC ไม่รองรับ AGs ( อ้างอิง ) ฉันไม่สามารถหาวิธีกำหนดค่า DTC บนโหนดที่สามในศูนย์ข้อมูลที่สองได้ เมื่อฉันพยายามกำหนดค่า DTC บนโหนดที่สามดูเหมือนว่าจะไม่พร้อมใช้งานดังที่แสดงในภาพหน้าจอนี้:
ในรายการตรวจสอบการติดตั้งฟรีของเบรนท์โอซาร์PDFสำหรับกลุ่มห้องว่างเขาแสดง:
การติดตั้งคลัสเตอร์ ...
29. ถ้าเกี่ยวข้องกับ FCI ให้กำหนดค่า DTC ตามการตัดสินใจในส่วนการวางแผนของคุณ
ในความคิดเห็นเกี่ยวกับกลุ่มความพร้อมใช้งาน AlwaysOn ของ SQL Server 2012 Rock Brent กล่าวว่า "... ไม่มีอะไรเปลี่ยนแปลงเมื่อ AGs กำลังเล่นอยู่โปรดจำไว้ว่าฐานข้อมูลในกลุ่มความพร้อมใช้งานไม่รองรับความสอดคล้องในการทำธุรกรรม .."
สิ่งนี้ทำให้ดูเหมือนว่า DTC สามารถใช้ในกลุ่มความพร้อมใช้งานได้ตราบใดที่คุณเข้าใจว่าการทำธุรกรรมจะไม่ได้รับการดูแลในการเปลี่ยนแปลงแบบ AG ฉันไม่ต้องการมันเพื่อรักษาธุรกรรมจากโหนด FCI ฉันต้องการ DTC ที่พร้อมใช้งานเพื่อให้แอปพลิเคชันใช้ในกรณีที่เกิดภัยพิบัติร้ายแรง (ซึ่งฉันทำศูนย์ข้อมูลหลักหาย)
ฉันจะกำหนดค่า DTC บนโหนดที่สามของฉันได้อย่างไร หรือเป็นกรณีที่ฉันโชคไม่ดีเมื่อพูดถึงการใช้ AG และแอปพลิเคชันที่ต้องการ DTC หรือไม่
อัปเดต:โซลูชันที่ฉันได้ตัดสินคือใช้บันทึกการจัดส่ง อย่างไรก็ตามในกรณีที่ล้มเหลวฉันยังต้องใช้ DTC เพื่อใช้งานบน Node3 ฉันค้นพบว่ามันพร้อมใช้งานโดยการถอนการติดตั้งอินสแตนซ์ MSDTC-MSSQLSERVERCLU ของ DTC ที่แบ่งใช้ระหว่าง Node1 และ Node2 เมื่อลบออกแล้วฉันสามารถตั้งค่าและกำหนดค่าอินสแตนซ์ LocalDTC บน Node3 หลังจากนั้นฉันสามารถติดตั้งอินสแตนซ์ MSDTC-MSSQLSERVERCLU ที่ติดตั้งใหม่ ทำลำดับการติดตั้งตามลำดับที่ดูเหมือนว่าจะทำงาน ฉันเคยวิ่งแบบนั้นมาซักพักแล้วและฉันไม่ได้ค้นพบอาการร้ายใด ๆ ดูเหมือนว่าสิ่งนี้จะทำงานสำหรับการเรียกใช้ AlwaysOn Availability Group ฉันเข้าใจว่าการทำธุรกรรมแบบกระจายจะไม่ถูกเก็บรักษาไว้ในความล้มเหลวของ AG ฉันจะต้องทำงานใหม่หลังจากการล้มเหลว แต่ฉันไม่ได้