การแก้ไข: งบการผสานอาจไม่บังคับข้อจำกัดต่างประเทศที่สำคัญเมื่องบการปรับปรุงคอลัมน์คีย์เฉพาะที่ไม่ใช่ส่วนหนึ่งของคีย์ที่ clustering และไม่มีแถวเดียวเป็นแหล่งข้อมูลการปรับปรุงใน SQL Server 2008

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 956718 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
bug #: 50003167 (โปรแกรมแก้ไขด่วนของ SQL)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรายการหลัก builds ที่หลังจากที่มีการนำออกใช้ SQL คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
957826ซึ่งคุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับ SQL Server 2008 สร้างที่นำออกใช้หลังจาก SQL Server 2008 และสร้าง SQL Server 2005 ที่นำออกใช้หลังจาก SQL Server 2005 Service Pack 2
ขยายทั้งหมด | ยุบทั้งหมด

อาการ

ใน Microsoft SQL Server 2008 ข้อจำกัดต่างประเทศที่สำคัญอาจไม่ถูกใช้เมื่อมีเงื่อนไขต่อไปนี้:
  • คำชี้แจงสิทธิ์ในการผสานถูกนำออกใช้
  • คอลัมน์เป้าหมายของการปรับปรุงมีดัชนีที่ไม่ซ้ำกัน nonclustered
พิจารณาสถานการณ์ต่อไปนี้: คอลัมน์ที่ไม่ซ้ำกันที่มีชื่อการปรับปรุงคำชี้แจงสิทธิ์Column1ตารางที่มีชื่อTable1.Table1มีการอ้างอิง โดยข้อจำกัดคีย์ต่างประเทศที่จากตารางที่มีชื่อTable2.

ผลอยู่ที่แถวในTable1กำลังเปลี่ยนเมื่อพวกเขาจะไม่ได้ นอกจากนี้Table2จะมีแถวที่มีการอ้างอิง danglingTable1.

ปัญหานี้เกิดขึ้นสำหรับสถานการณ์สมมตินี้เมื่อมีเงื่อนไขต่อไปนี้:
  • การอ้างอิงColumn1คอลัมน์ในTable1ไม่ใช่ส่วนหนึ่งของคีย์ clustering ของTable1.
  • คุณสามารถกำหนดค่าที่เป็นไปได้เพียงหนึ่งไปยังColumn1คอลัมน์ ตัวอย่างเช่น สถานการณ์สมมติต่อไปนี้อย่างใดอย่างหนึ่งเกิด:
    • แหล่งที่มาผสานเป็นหนึ่งแถวของข้อมูล ตัวอย่างเช่น แหล่งที่มาผสานมาจากหนึ่งในรายการที่เลือกต่อไปนี้:
      • select <ConstantValues>
      • select <Parameters>
      หมายเหตุ:สถานการณ์นี้คือ สถานการณ์ที่น่าใช่ที่สุด
    • แหล่งที่มาผสานเป็นจริงแถวเดียวของข้อมูล ตัวอย่างเช่น แหล่งที่มาผสานมาจากหนึ่งในรายการที่เลือกต่อไปนี้:
      • select <ColumnName> from <TableName> where <TableName>.<ColumnName> = 1
        หมายเหตุ:<tablename></tablename>.<columnname></columnname>ไม่รู้จัก โดย optimizer แบบสอบถามให้เป็นค่าที่ไม่ซ้ำกัน
      • select top 1 <ColumnName> from <TableName>
    • เข้าร่วมระหว่างแหล่งที่มาผสานและเป้าหมายของการผสานได้ predicate ที่ guarantees ว่า แถวเดียวจะถูกปรับปรุง
    • ชุดอนุประโยคของการปรับปรุงนี้Column1คอลัมน์ค่าคง คำนึงถึงต้นทางผสาน
  • กระบวนการในการปรับปรุงการเรียงซ้อนอ็อพชันไม่ได้เปิดใช้งานในต่างประเทศข้อจำกัดคีย์ในTable2.
หมายเหตุ:เราขอแนะนำให้ คุณใช้โปรแกรมแก้ไขด่วนนี้ถ้าคุณใช้คำสั่งผสานเพื่อปรับปรุงคอลัมน์ที่มีดัชนีเฉพาะ nonclustered ที่อ้างถึง โดยข้อจำกัดของคีย์ที่ต่างประเทศ

การแก้ไข

โปรแกรมแก้ไขสำหรับปัญหานี้ถูกนำออกใช้ก่อนใน 1 การปรับปรุงที่สะสมสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการขอรับนี้แพคเกจโปรแกรมปรับปรุงที่สะสมสำหรับ SQL Server 2008 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
956717แพคเกจโปรแกรมปรับปรุงที่สะสม 1 สำหรับ SQL Server 2008
หมายเหตุ:เนื่องจาก builds สะสม แต่ละรุ่นใหม่ของโปรแกรมแก้ไขด่วนประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมด และแก้ไขการแก้ไขการรักษาความปลอดภัยทั้งหมดที่มาพร้อมกับ SQL Server 2008 ก่อนหน้าออก เราขอแนะนำว่า คุณควรพิจารณาถึงการใช้โปรแกรมแก้ไขด่วนรุ่นล่าสุดที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
956909สร้าง SQL Server 2008 ที่หลังจากที่มีการนำออกใช้ SQL Server 2008

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

แพคเกจโปรแกรมแก้ไขด่วน eliminates ปัญหา ถ้าคุณใช้คำสั่งผสานในสถานการณ์ที่อธิบายไว้ในส่วน "อาการ" และ ถ้าคุณเลือกที่ไม่ใช้โปรแกรมแก้ไขด่วน ทำตามขั้นตอนเหล่านี้เพื่อกำจัดปัญหานี้:
  1. เขียนคำสั่งผสานเพื่อให้ค่าสำหรับแหล่งที่มาผสานอยู่ในตาราง ตาราง temp หรือตัวแปรตารางแทนการได้ในแบบ lined ในการสอบถาม
  2. ใช้ค่าสถานะการสืบค้นกลับ 8790 ค่าสถานะการสืบค้นกลับนี้บังคับให้ optimizer จะใช้ชนิดของแผนที่จะเรียกว่าแผนการปรับปรุงความกว้าง แผนการปรับปรุงที่กว้างไม่มีปัญหา ขั้นตอนนี้ปฏิบัติความเสี่ยงด้านประสิทธิภาพสำหรับงบ DML ทั้งหมด ดังนั้น คุณควรหลีกเลี่ยงการใช้ขั้นตอนนี้จนกว่าจะไม่เปลี่ยนแปลงแอพลิเคชัน
สคริปต์ Transact SQL ต่อไปนี้แสดงวิธีการหนึ่งเพื่อเปลี่ยนสคริปต์ของคุณเพื่อแก้ไขปัญหานี้หากคุณไม่สามารถใช้โปรแกรมแก้ไขด่วนนี้

ตัวอย่างเช่น คุณมีสคริปต์ที่มีลักษณะดังต่อไปนี้:
use tempdb;

drop table sale, product;
create table product(pno int not null primary key, name char(30), pAlternateKey char(6) not null unique);
create table sale(sno int not null primary key, pAlternateKey char(6) not null references product(pAlternateKey));
insert product values(1, 'Office Chair', 'ochair');
insert sale values(1, 'ochair')

-- No violation of foreign key constraint is detected. However, one should be.
merge into product
using (select 'Office Chair2' as name, 1 as pno, 'oxx' as pAlternateKey) as src
on product.pno = src.pno
when matched then
   update set product.pAlternateKey = src.pAlternateKey, 
              product.name = src.name
when not matched then
   insert values(src.pno, src.name, src.pAlternateKey);
การเปลี่ยนแปลงสคริปต์เพื่อที่จะมีลักษณะต่อไปนี้:
insert product values(1, 'Office Chair', 'ochair');
insert sale values(1, 'ochair')
-- A foreign key constraint violation is detected, and the update fails.
declare @source table 
   (name nchar(30), pno int, pAlternateKey nchar(30));
insert into @source values('Office Chair2',1,'oxx');

merge into product
using @source as src
on product.pno = src.pno
when matched then
   update set product.pAlternateKey = src.pAlternateKey, 
              product.name = src.name
when not matched then
   insert values(src.pno, src.name, src.pAlternateKey);

สถานะ

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแฟ้มใดถูกเปลี่ยนแปลง และข้อมูลเกี่ยวกับข้อกำหนดเบื้องต้นใด ๆ เพื่อนำแพคเกจโปรแกรมปรับปรุงที่สะสมที่ประกอบด้วยโปรแกรมแก้ไขด่วนที่อธิบายไว้ในบทความฐานความรู้ของ Microsoft นี้ คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
956717แพคเกจโปรแกรมปรับปรุงที่สะสม 1 สำหรับ SQL Server 2008

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรายการ builds ที่พร้อมใช้งานหลังจากการออกวางจำหน่ายของ SQL Server 2008 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
956909สร้าง SQL Server 2008 ที่หลังจากที่มีการนำออกใช้ SQL Server 2008


สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรุ่นให้บริการแบบเพิ่มหน่วยสำหรับ SQL Server คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
935897มีแบบจำลองให้บริการแบบเพิ่มหน่วยจะพร้อมใช้งานจากทีม SQL Server จะจัดส่งโปรแกรมแก้ไขด่วนสำหรับการรายงานปัญหา


สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเค้าร่างตั้งชื่อสำหรับการปรับปรุงใน SQL Server คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
822499แบบแผนการตั้งชื่อใหม่สำหรับแพคเกจโปรแกรมปรับปรุงซอฟต์แวร์ของ Microsoft SQL Server


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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับดัชนี nonclustered ใน SQL Server 2008 แวะไปที่เว็บไซต์ของ Microsoft สำหรับนักพัฒนาเครือข่าย (MSDN) ต่อไปนี้:
.aspx http://msdn.microsoft.com/en-us/library/ms179325 (SQL.100)

คุณสมบัติ

หมายเลขบทความ (Article ID): 956718 - รีวิวครั้งสุดท้าย: 21 ตุลาคม 2553 - Revision: 1.0
ใช้กับ
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Standard Edition for Small Business
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
Keywords: 
kbautohotfix kbHotfixServer kbqfe kbPubTypeKC kbfix kbmt KB956718 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:956718

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

 

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