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.