KB4046745 — POPRAWKA: Instrukcja UPDATE kończy się niepowodzeniem w trybie dyskretnym podczas odwoływania się do nieistniejącej funkcji partycji w klauzuli WHERE w SQL Server 2014, 2016 lub 2017

Dotyczy
SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise Core SQL Server 2017 Enterprise SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

Objawy

Załóżmy, że masz instrukcję UPDATE odwołującą się do nieistniejącej funkcji partycji za pomocą słowa kluczowego $PARTITION w programie Microsoft SQL Server 2014, 2016 lub 2017. Na przykład:

Uwaga

UPDATE Nazwa_tabeli SET NazwaKolumny='xyz' WHERE $PARTITION. NonExistingPartitionFunction(ColumnName) = 1

W takiej sytuacji program SQL Server nie wykonuje aktualizacji ani nie zwraca komunikatu o błędzie wskazującego, że obiekt NonExistingPartitionFunction nie istnieje. Jednak z punktu widzenia użytkownika wydaje się, że instrukcja UPDATE została wykonana pomyślnie, ale w rzeczywistości nie powiodła się.

Przyczyna

Podczas wykonywania partii program SQL Server może wykonać odroczone rozpoznawanie nazw (DNR). W tym procesie program SQL Server nie generuje natychmiast błędu po napotkaniu nieistniejącego obiektu i oczekuje, że obiekt zostanie utworzony przez moduł lub partię przed wykonaniem instrukcji odwołującej się do tego obiektu. W przypadku funkcji partycji program SQL Server nie obsługuje DNR poprawnie.

Więcej informacji

Aby uzyskać więcej informacji o DNR, zobacz Deferred Name Resolution (Rozpoznawanie nazw z opóźnieniem).

Rozwiązanie

Ten problem został rozwiązany w następujących aktualizacjach zbiorczych programu SQL Server:

Aktualizacja zbiorcza 8 dla programu SQL Server 2016 z dodatkiem SP1

Aktualizacja zbiorcza 4 dla programu SQL Server 2017

Aktualizacja zbiorcza 9 dla programu SQL Server 2014 z dodatkiem SP2

Informacje o aktualizacjach zbiorczych programu SQL Server:

Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji skumulowanej. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:

Najnowsza aktualizacja zbiorcza dla programu SQL Server 2016

Najnowsza aktualizacja zbiorcza dla programu SQL Server 2017

Najnowsza aktualizacja zbiorcza dla programu SQL Server 2014

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.

Źródła informacji

Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.