คุณอาจได้รับข้อความแสดงข้อผิดพลาด 7391 ใน SQL Server 2000 เมื่อคุณรันทรานแซคชันแบบกระจายกับเซิร์ฟเวอร์ที่ถูกเชื่อมโยงหลังจากที่คุณติดตั้ง Windows Server 2003 หรือ Windows XP Service Pack 2

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 839279 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

เมื่อคุณเรียกใช้ทรานแซคชันแบบกระจายกับอินสแตนซ์ของ SQL Server คุณอาจได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความต่อไปนี้:

เซิร์ฟเวอร์: ข่าวสารเกี่ยวกับ 7391 ระดับ 16 สถานะ 1 บรรทัด 1
ไม่สามารถทำการดำเนินการเนื่องจากผู้ให้บริการ OLE DB 'SQLOLEDB' ไม่สามารถเริ่มทรานแซคชันที่วางจำหน่ายได้ [ตัวให้บริการ OLE/DB การส่งคืนข้อความ: ธุรกรรมใหม่ไม่ enlist ใน coordinator ธุรกรรมที่ระบุได้] การสืบค้นกลับข้อผิดพลาด OLE DB [ผู้ให้บริการ OLE/DB 'SQLOLEDB' ITransactionJoin::JoinTransaction คืน 0x8004d00a]


ปัญหานี้อาจเกิดขึ้นเมื่อเงื่อนไขต่อไปนี้:
  • Microsoft Windows Server 2003 หรือ Microsoft Windows XP Service Pack 2 (SP2) ถูกติดตั้งบนคอมพิวเตอร์ที่เริ่มธุรกรรมการกระจาย
  • Microsoft Windows Server 2003 หรือ Microsoft Windows XP SP2 ถูกติดตั้งบนคอมพิวเตอร์ระยะไกลที่รัน Microsoft SQL Server 2000 และคอมพิวเตอร์ที่ถูกลิงค์ไปยังคอมพิวเตอร์ที่เริ่มธุรกรรมการกระจาย

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจากความอย่างน้อยหนึ่งเนื่องจากสาเหตุต่อไปนี้:
  • Microsoft Distributed ทรานแซคชัน Coordinator (MSDTC) ถูกปิดใช้งานสำหรับธุรกรรมของเครือข่าย
  • ไฟร์วอลล์ windows เปิดใช้งานบนคอมพิวเตอร์ โดยค่าเริ่มต้น ไฟร์วอลล์ Windows บล็อกธุรกรรมการแจกจ่าย Microsoft Coordinator (MSDTC) โปรแกรม

    หมายเหตุ:ปัญหานี้อาจเกิดขึ้นได้แม้กระทั่งเมื่อ Windows Firewall ถูกปิดใช้งานได้

การหลีกเลี่ยงปัญหา

สิ่งสำคัญนี้ส่วน วิธี หรืองานประกอบด้วยขั้นตอนที่บอกวิธีการแก้ไขรีจิสทรี อย่างไรก็ตาม ปัญหาร้ายแรงอาจเกิดขึ้นหากคุณปรับเปลี่ยนรีจิสทรีไม่ถูกต้อง ดังนั้น โปรดตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนเหล่านี้อย่างระมัดระวัง สำหรับการป้องกันเพิ่มเติม ให้สำรองรีจิสทรีก่อนทำการปรับเปลี่ยน เพื่อที่คุณจะสามารถคืนค่ารีจิสทรีได้หากมีปัญหาเกิดขึ้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสำรองข้อมูลและคืนค่ารีจิสทรี โปรดคลิกที่หมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
322756วิธีการสำรองข้อมูลและคืนค่ารีจิสทรีใน Windows


เมื่อต้องการแก้ไขปัญหานี้ ทำตามขั้นตอนเหล่านี้บนคอมพิวเตอร์ที่ใช้ Windows Server 2003 หรือ Windows XP SP2 ถูกติดตั้งบน:
  1. ตรวจสอบให้แน่ใจว่าการล็อกอินเป็นบัญชีผู้ใช้สำหรับบริการ MSDTC ไม่บริการเครือข่ายบัญชี โดยให้ทำตามขั้นตอนต่อไปนี้::
    1. คลิกเริ่มการทำงานแล้ว คลิกเรียกใช้.
    2. ในการเรียกใช้กล่องโต้ตอบ ชนิดServices.mscแล้ว คลิกตกลง.
    3. ในการบริการหน้าต่าง ค้นหานี้กระจายทรานแซคชัน Coordinatorบริการภายใต้ชื่อ:ในบานหน้าต่างด้านขวา
    4. ภายใต้การล็อกอินเป็นคอลัมน์ ดูว่าการล็อกอินเป็นบัญชีผู้ใช้อยู่บริการเครือข่ายหรือระบบภายใน.

      ถ้าการล็อกอินเป็นบัญชีผู้ใช้อยู่บริการเครือข่ายไปที่ขั้นที่ 2 ถ้าการล็อกอินเป็นบัญชีผู้ใช้อยู่ระบบภายในบัญชี ดำเนินการขั้นตอนเหล่านี้
    5. คลิกเริ่มการทำงานแล้ว คลิกเรียกใช้.
    6. ในการเรียกใช้กล่องโต้ตอบ ชนิดcmdแล้ว คลิกตกลง.
    7. ที่พรอมต์คำสั่ง พิมพ์:สุทธิ msdtc หยุดเมื่อต้องการหยุดบริการ MSDTC
    8. ที่พรอมต์คำสั่ง พิมพ์:Msdtc –uninstallเมื่อต้องการลบ MSDTC
    9. ที่พรอมต์คำสั่ง พิมพ์:regeditเมื่อต้องการเปิดตัวแก้ไขรีจิสทรี
    10. ใน Registry Editor ค้นหาคีย์ต่อไปนี้:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
      รีจิสตรีคีย์

      ลบคีย์นี้
    11. ออกจากโปรแกรม Registry Editor
    12. ที่พรอมต์คำสั่ง พิมพ์:Msdtc –installการติดตั้ง MSDTC
    13. ที่พรอมต์คำสั่ง พิมพ์:msdtc เริ่มการทำงานสุทธิเมื่อต้องการเริ่มบริการ MSDTC

      หมายเหตุที่นั้นล็อกอินเป็นมีการตั้งค่าบัญชีสำหรับการบริการ MSDTC ไปบริการเครือข่ายบัญชี
  2. MSDTC เพื่ออนุญาตให้มีเครือข่ายธุรกรรมที่เปิดใช้งาน โดยให้ทำตามขั้นตอนต่อไปนี้::
    1. คลิกเริ่มการทำงานแล้ว คลิกเรียกใช้.
    2. ในการเรียกใช้กล่องโต้ตอบ ชนิดdcomcnfg.exeแล้ว คลิกตกลง.
    3. ในการบริการคอมโพเนนต์หน้าต่าง ขยายบริการคอมโพเนนต์ขยายคอมพิวเตอร์แล้ว ขยายMy Computer.
    4. คลิกขวาMy Computerแล้ว คลิกคุณสมบัติ.
    5. ในการคุณสมบัติของคอมพิวเตอร์ของฉันกล่องโต้ตอบกล่อง คลิกการกำหนดค่าการรักษาความปลอดภัยในการmsdtcแท็บ
    6. ในการการกำหนดค่าการรักษาความปลอดภัยกล่องโต้ตอบกล่อง คลิกเพื่อเลือกนั้นการเข้าถึง DTC เครือข่ายกล่องกาเครื่องหมาย
    7. เมื่อต้องการให้ธุรกรรมการแจกจ่ายที่เรียกใช้บนคอมพิวเตอร์เครื่องนี้จากคอมพิวเตอร์ระยะไกล คลิกเพื่อเลือกนั้นอนุญาตให้ขาเข้ากล่องกาเครื่องหมาย
    8. เมื่อต้องการให้ธุรกรรมการแจกจ่ายที่เรียกใช้บนคอมพิวเตอร์ระยะไกลจากคอมพิวเตอร์เครื่องนี้ คลิกเพื่อเลือกนั้นอนุญาตให้ขาออกกล่องกาเครื่องหมาย
    9. ภายใต้การตัวจัดการธุรกรรมการสื่อสารกลุ่ม คลิกเพื่อเลือกนั้นรับรองความถูกต้องไม่จำเป็นตัวเลือก ตั้งค่ารับรองความถูกต้องไม่จำเป็นทั้งไคลเอนต์และระบบการระยะไกล
    10. ในการการกำหนดค่าการรักษาความปลอดภัยกล่องโต้ตอบกล่อง คลิกตกลง.
    11. ในการคุณสมบัติของคอมพิวเตอร์ของฉันกล่องโต้ตอบกล่อง คลิกตกลง.
  3. การตั้งค่าคอนฟิก Windows Firewall เพื่อที่รวมโปรแกรม MSDTC และรวมพอร์ต 135 เป็นข้อยกเว้น โดยให้ทำตามขั้นตอนต่อไปนี้::
    1. คลิกเริ่มการทำงานแล้ว คลิกเรียกใช้.
    2. ในการเรียกใช้กล่องโต้ตอบ ชนิดfirewall.cplแล้ว คลิกตกลง
    3. ในแผงควบคุมคลิกสองครั้งWindows Firewall:.
    4. ในการWindows Firewall:กล่องโต้ตอบ คลิกเพิ่มโปรแกรมในการข้อยกเว้นแท็บ
    5. ในการเพิ่มโปรแกรมกล่องโต้ตอบ คลิกการเรียกดูปุ่ม และจากนั้น ระบุตำแหน่งแฟ้ม Msdtc.exe โดยค่าเริ่มต้น แฟ้มถูกเก็บอยู่ในนั้น<installation drive="">: \Windows\System32</installation>โฟลเดอร์
    6. ในการเพิ่มโปรแกรมกล่องโต้ตอบ คลิกตกลง.
    7. ในการWindows Firewall:กล่องโต้ตอบ คลิกเพื่อเลือกนั้นmsdtcตัวเลือกในการโปรแกรมและบริการรายการ
    8. คลิกเพิ่มพอร์ตในการข้อยกเว้นแท็บ
    9. ในการเพิ่มพอร์ตกล่องโต้ตอบ ชนิด135ในการหมายเลขพอร์ตกล่องข้อความ และจากนั้นคลิกเพื่อเลือกนั้นTCPตัวเลือก
    10. ในการเพิ่มพอร์ตกล่องโต้ตอบ ชนิดของชื่อข้อยกเว้นในนั้นชื่อ:กล่องข้อความ แล้วคลิกตกลง.
    11. ในการWindows Firewall:กล่องโต้ตอบกล่อง เลือกชื่อที่คุณใช้สำหรับการยกเว้นใน j ขั้นตอนใน การโปรแกรมและบริการรายการ และจากนั้น คลิกตกลง.
  4. ทดสอบ pinging จากเซิร์ฟเวอร์ที่โฮสต์ไปยังเซิร์ฟเวอร์ระยะไกล และ จากเซิร์ฟเวอร์ระยะไกลไปยังเซิร์ฟเวอร์ที่โฮสต์ โดยใช้ชื่อ netbios (ชื่อเซิร์ฟเวอร์ โดยไม่มีโดเมน) Coordinator ทรานแซคชันการแจกจ่าย Microsoft ใช้ชื่อ netbios ไม่ครบถ้วนชื่อโดเมน การค้นหาตำแหน่งของเซิร์ฟเวอร์ ถ้าการแก้ปัญหาชื่อล้มเหลว ธุรกรรมที่มีการแจกจ่ายจะล้มเหลว ถ้ามีการล้มเหลว pings โดยใช้ชื่อ netbios โปรดดูบทความฐานความรู้ต่อไปนี้:
    172218ใบสั่งในการแก้ปัญหาชื่อโฮสต์ TCP/IP ของ Microsoft

สถานะ

Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "การใช้งาน"

ข้อมูลเพิ่มเติม

ขั้นตอนในการทำให้สถานการณ์เกิดขึ้นอีกครั้ง

  1. เข้าสู่ระบบในคอมพิวเตอร์ที่มี Windows Server 2003 หรือ Windows XP SP2 ติดตั้ง
  2. เริ่มต้นตัววิเคราะห์คำถาม
  3. เพิ่มคอมพิวเตอร์ระยะไกลที่รัน Microsoft SQL Server 2000 เป็นเซิร์ฟเวอร์ที่มีการเชื่อมโยง เมื่อต้องการทำเช่นนี้ เรียกใช้คำสั่ง Transact SQL ต่อไปนี้ในแบบสอบถามแบบวิเคราะห์:
    EXEC sp_addlinkedserver  '<remote_server>',  N'SQL SERVER'
    GO

    หมายเหตุ:REPLACEremote_serverมีชื่อของคอมพิวเตอร์ที่ต้องมีการกำหนดค่าเป็นเซิร์ฟเวอร์ที่มีการเชื่อมโยง
  4. เรียกใช้ธุรกรรมที่แจกจ่ายระหว่างคอมพิวเตอร์เครื่องนี้และคอมพิวเตอร์ระยะไกล เมื่อต้องการทำเช่นนี้ เรียกใช้คำสั่ง Transact SQL ต่อไปนี้ในตัววิเคราะห์คำถาม:
    SET xact_abort ON 
    GO
    USE  pubs
    GO
    BEGIN DISTRIBUTED TRANSACTION
    SELECT  *  FROM <remote_server>.pubs.dbo.authors
    COMMIT TRAN
    GO
    
    คุณอาจได้รับข้อความแสดงข้อผิดพลาดที่กล่าวไว้ในส่วน "อาการ"

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า Windows XP Service Pack 2 สำหรับใช้กับ SQL Server 2000 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
841249วิธีการกำหนดค่า Windows XP Service Pack 2 สำหรับใช้กับ SQL Server

คุณสมบัติ

หมายเลขบทความ (Article ID): 839279 - รีวิวครั้งสุดท้าย: 14 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft Windows XP Embedded
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
Keywords: 
kbregistry kberrmsg kbdtc kbdomain kbauthentication kbtransaction kbrpc kbprb kbmt KB839279 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:839279

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com