Dotyczy
SQL Server 2017 Developer Windows SQL Server 2017 Enterprise Windows SQL Server 2017 Enterprise Core Windows SQL Server 2017 Standard Windows

Symptomy

Załóżmy, że próby usunięcia danych z tabeli i w innych tabelach w Microsoft SQL Server 2016 i 2017 odwołuje się danych. If eksplorować kwerendy plan wykonania, można to sprawdzić należy użyć operatora klucza obcego odwołanie Sprawdź .W tej sytuacji może pojawić się następujący komunikat o błędzie nawet jeśli jest wiersz usunięte nie odwołuje się do innych tabel:

Msg 547, poziom: 16, stanu 0, wiersz numer wiersza

Instrukcja DELETE konflikt z ograniczeniem odwołanie

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Rozwiązanie

Ten problem został rozwiązany w następujących aktualizacji zbiorczej dla programu SQL Server:

Uwaga: Ten problem został rozwiązany w zbiorczej aktualizacji 6 dla dodatku SP2 dla programu SQL Server 2016.

Informacje dotyczące zbiorczej aktualizacji dla programu SQL Server:

Każda nowa aktualizacja zbiorcza dla programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały zawarte w poprzedniej zbiorczej aktualizacji. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:

Obejście

Aby obejść ten problem, użyj jednej z następujących metod:

  • Użyj poziom zgodności poniżej 130 do uruchomienia tej kwerendy.

  • Zmiana struktury indeksu na tabeli odwołującej się.

Więcej informacji

Poziom zgodności konfiguracji o zakresie początkowej bazy danych 130 w programie SQL Server 2016, plan wykonania kwerend można używać odwołaniu klucza obcego Sprawdź operatora, aby sprawdzić, czy wiersz w tabeli jest wywoływany przez wszystkie wiersze w innych tabel za pośrednictwem ograniczenia integralności referencyjnej. Jeśli można użyć takiego operatora Tabela odwołuje się dużej liczby tabel obcych. Ten operator in Serwer SQL wybiera indeks w każdej tabeli odwołującej się do przeprowadzania takich kontroli. IF odwołujący się tabela ma indeks z wielu kolumn klucza, takie niektóre kolumn na początku nie są częścią klucza obcego, ale niektóre inne kolumny są częścią klucza obcego. Może to spowodować niepoprawne wyboru, która jest wykonywana w programie SQL Server.

Na przykład rozważmy następujące schematu:

Tworzenie tabeli tpk (ograniczenie klucza podstawowego int Klastrowany klucz podstawowy CK)

Tworzenie tabeli tfk (int, fk int ograniczenie cfk tpk odwołania do klucza obcego, clustered(a,fk)) ia indeksu

Taki schemat może skutkować tego problemu, ale jeśli zmienisz kolejność kolumn w ia do indeksu (fk), nie będzie.

Informacje

Dowiedz się więcej o  terminologiaużywany do opisywania aktualizacji oprogramowania firmy Microsoft.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.