บนคอมพิวเตอร์ที่มี Microsoft Data Access คอมโพเนนต์ 2.8 ติดตั้ง โปรแกรมประยุกต์ได้รับค่าไม่ถูกต้องสำหรับคอลัมน์ข้อมูลเฉพาะตัวจากฐานข้อมูล SQL Server 2005

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

อาการ

พิจารณาสถานการณ์ต่อไปนี้: คุณสร้างตารางที่มีคอลัมน์ระบุในฐานข้อมูล Microsoft SQL Server 2005 คุณกำหนดค่าการจำลองแบบผสานบนตาราง โปรแกรมประยุกต์ที่ใช้วัตถุข้อมูล ActiveX ของ Microsoft (ADO) เมื่อต้องการแทรกแถวในตาราง จากนั้น แอพลิเคชันดึงแถวแทรก อย่างไรก็ตาม มีค่าที่ไม่ถูกต้องถูกส่งกลับสำหรับคอลัมน์ identity

ปัญหานี้เกิดขึ้นเมื่อคอมพิวเตอร์ที่รันโปรแกรมประยุกต์มีหนึ่งในการติดตั้งต่อไปนี้:
  • Windows Server 2003
  • Windows XP:
  • คอมโพเนนต์การเข้าถึงข้อมูลของ Microsoft 2.8 (MDAC 2.8)
ไม่ได้เกิดปัญหานี้ในฐานข้อมูล Microsoft SQL Server 2000

สาเหตุ

กระบวนการจำลองแบบสร้างทริกเกอร์แทรกในตาราง เมื่อมีแทรกข้อมูลในตาราง การแทรกทริกเกอร์การใช้การ@@ รหัสประจำตัวตัวแปรแทนscope_identityฟังก์ชัน ดังนั้น ใน@@ รหัสประจำตัวตัวแปรอาจส่งคืนค่าระบุที่ไม่ได้อยู่ในตารางปัจจุบัน

การแก้ไข

เมื่อต้องการแก้ไขปัญหานี้ ติดตั้งโปรแกรมแก้ไขด่วนที่อธิบายไว้ในบทความฐานความรู้ของ Microsoft ต่อไปนี้:
961451การแก้ไข: คุณได้รับค่าไม่ถูกต้องเมื่อคุณแบบสอบถามค่า identity ที่แทรกไว้หลังสุดหลังจากที่คุณใช้เคอร์เซอร์ฝั่งไคลเอ็นต์ในการแทรกข้อมูลไปยังตารางที่ประกอบด้วยคอลัมน์ระบุในโปรแกรมประยุกต์ที่ใช้วัตถุข้อมูล ActiveX
หมายเหตุ:โปรแกรมแก้ไขด่วนที่ได้อธิบายไว้ในส่วน "การแก้ปัญหา" ในรุ่นก่อนหน้าของบทความนี้ คือ superseded โดยโปรแกรมแก้ไขด่วนที่อธิบายไว้ใน 961451

สถานะ

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

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

กระบวนการscope_identityฟังก์ชันและ@@ รหัสประจำตัวตัวแปรคืนค่าข้อมูลเฉพาะตัวสุดท้ายที่ถูกสร้างขึ้นในตารางใด ๆ ในเซสชันปัจจุบัน อย่างไรก็ตาม ในscope_identityฟังก์ชันส่งกลับค่าที่แทรกไว้ภายในขอบเขตปัจจุบันเท่านั้น กระบวนการ@@ รหัสประจำตัวตัวแปรไม่จำกัดจุดแทรกไปที่ขอบเขตที่ระบุ

ตัวอย่างเช่น สมมติว่า ฐานข้อมูลประกอบด้วย Table1 แบบและแบบ Table2 ตารางทั้งสองมีลักษณะเฉพาะคอลัมน์ ทริกเกอร์การแทรกข้อกำหนดใน Table1 เมื่อมีแทรกแถวใน Table1 ทริกเกอร์ที่แทรกสำเนาของแถวใน Table2 สถานการณ์นี้เกี่ยวข้องกับขอบเขตที่สองต่อไปนี้:
  • แทรกใน Table1
  • แทรกใน Table2 โดยทริกเกอร์
ในสถานการณ์สมมตินี้@@ รหัสประจำตัวตัวแปร และscope_identityฟังก์ชันส่งกลับค่าที่แตกต่างกันเมื่อมีแทรกแถวใน Table1 กระบวนการ@@ รหัสประจำตัวตัวแปรส่งกลับค่าคอลัมน์ข้อมูลเฉพาะตัวสุดท้ายที่แทรกข้ามขอบเขตใด ๆ ในเซสชันปัจจุบัน ในกรณีนี้@@ รหัสประจำตัวตัวแปรส่งกลับค่า identity ที่แทรกใน Table2 อย่างไรก็ตาม ในscope_identityฟังก์ชันส่งกลับค่า identity ที่แทรกใน Table1 เนื่องจากการscope_identityฟังก์ชันส่งกลับค่าที่ครั้งสุดท้ายถูกแทรกในขอบเขตที่เหมือนกัน กระบวนการscope_identityฟังก์ชันส่งกลับค่า NULL ถ้าฟังก์ชันถูกเรียกก่อนที่ใบแจ้งยอดจาก INSERT ที่ทำไว้กับคอลัมน์ข้อมูลเฉพาะตัวของการเกิดขึ้นในขอบเขต

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำศัพท์ของการปรับปรุงซอฟต์แวร์ ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความใน Microsoft Knowledge Base::
824684คำอธิบายของคำศัพท์มาตรฐานที่ใช้เพื่ออธิบายปรับปรุงซอฟต์แวร์ของ Microsoft

คุณสมบัติ

หมายเลขบทความ (Article ID): 940569 - รีวิวครั้งสุดท้าย: 16 มกราคม 2554 - Revision: 2.0
ใช้กับ
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Web Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003, Standard x64 Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003, Datacenter x64 Edition
  • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional x64 Edition
Keywords: 
kbautohotfix kbwinxppresp3fix kbexpertiseinter kbwinserv2003postsp2fix kbbug kbfix kbHotfixServer kbqfe kbmt KB940569 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:940569

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

 

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