Симптоми
Приемем, че се опитате да изтриете данни от таблица, и данните е посочено в други таблици в Microsoft SQL Server 2016 и 2017. If разглеждате заявка план за изпълнение, можете да го използвате външен ключ препратка проверка оператор видите .В тази ситуация може да получите следното съобщение за грешка дори се ред изтрит не е посочен в други таблици:
MSG 547, ниво 16, 0, ред LineNumber на състоянието
Декларация за изтриване в конфликт с ограничението за препратка
Статус
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, изброени в раздела "Отнася се за".
Решение
Този проблем е решен в следната сборна актуализация за SQL Server:
Забележка Този проблем е решен в кумулативната актуализация 6 за SQL Server 2016 SP2.
За кумулативни актуализации за SQL Server:
Всеки нов сборна актуализация за SQL Server съдържа всички актуални корекции и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте най-новите сборни актуализации за SQL Server:
Заобиколно решение
За да решите проблема по заобиколен начин, използвайте един от следните методи:
-
Използвайте съвместимост ниво под 130 да изпълните тази заявка.
-
Промяна на структурата на индекс на таблицата съотнасяне.
Повече информация
Начална база данни с обхват конфигурация ниво на съвместимост 130 в SQL Server 2016, план за изпълнение на заявка може да използва външен ключ препратка Проверка на оператор, за да проверите, ако ред в таблица се използва от всички редове в други таблици чрез цялост на ограничения. Оператор може да се използва, ако таблица се използва от голям брой чуждестранни таблици. В този оператор SQL Server избира индекс на всяка възмездна таблица за извършване на проверка. Ако съотнасяне таблица е индекс с няколко основни колони, някои такива колони в началото не са част от външен ключ, но някои други колони са част от външен ключ. Това може да доведе до неправилно проверка, която се извършва от SQL Server.
Например да разгледаме следната схема:
създаване на таблица ТПК (п.к int ограничение първичен ключ CPK клъстер)
създаване на таблица tfk (int, ФК int ограничение cfk външен ключ препратки ТПК, ia clustered(a,fk)) индекс
Тези схеми може да доведе до този проблем, но ако промените ред на колоните в индекса ia (fk,), той няма да.
Препратки
Научете повече за терминология, използвана за описание на софтуерните актуализации от Microsoft.