Symptomy
Błąd potwierdzenia może wystąpić, gdy program Microsoft SQL Server wielokrotnie wykonuje procedurę przechowywaną wykonującą następujące czynności:
-
Pobiera duży obiekt, taki jak varchar (max) lub varbinary (max), jako argument i
-
Tworzy tabelę tymczasową, która podlega zakresowi wykonania procedury, i
-
Używa argumentu duże obiekty w tabeli tymczasowej.
W dzienniku błędów programu SQL Server można znaleźć błąd potwierdzenia podobny do następującego:
Błądidentyfikatora SPID daty/godziny: 17065; ważność: 16; stan: 1.
Data/godzina Identyfikator SPID programu SQL Server: plik: FilePath \filename, line = LineNumber nie potwierdzeń = fFalse ' próba uzyskania dostępu do wygasłego dojścia obiektu BLOB (1). Ten błąd może być związany z chronometrażem. Jeśli błąd będzie nadal występował po ponownym uruchomieniu instrukcji, użyj polecenia DBCC CHECKDB w celu sprawdzenia integralności bazy danych w strukturze strukturalnej lub ponownego uruchomienia serwera, aby upewnić się, że struktury danych w pamięci nie są uszkodzone.
Błąd identyfikatora SPID daty/godziny : 3624; ważność: 20; stan: 1.
Identyfikator SPID daty/godzinysprawdzania potwierdzenia systemu nie powiodło się. Zobacz dziennik błędów programu SQL Server, aby uzyskać szczegółowe informacje. Zazwyczaj błąd potwierdzenia jest spowodowany błędem oprogramowania lub uszkodzeniem danych. Aby sprawdzić, czy baza danych jest uszkodzona, warto skorzystać z polecenia DBCC CHECKDB. Jeśli użytkownik wyraził zgodę na wysłanie zrzutów do firmy Microsoft podczas konfiguracji, do firmy Microsoft zostanie wysłany mini zrzut. Aktualizacja może być dostępna w firmie Microsoft w najnowszym dodatku Service Pack lub w ramach poprawki z pomocy technicznej.
Przyczyna
Program SQL Server oferuje wewnętrzną logikę, aby wyłączyć buforowanie zapytań, które odwołują się do dużych obiektów, tak aby kolejne operacje nie odwoływać się do tych LOBs (które zostały utworzone podczas wcześniejszych uruchomień i w związku z tym są nieprawidłowe dla kolejnych uruchomień). Ta logika nie obsługiwała przypadku odroczonego rozpoznawania nazw (DNR) w tabelach tymczasowych, które spowodowały, że te plany są buforowane. Tworzenie zakresów tymczasowych tabel jest kosztowne, a program SQL Server przechowuje je w celu ponownego użycia w kolejnych wykonaniach. Uniemożliwia to ponowne skompilowanie takich zapytań ze względu na zmiany w schemacie.
Dowiedz się więcej na temat odroczonego rozpoznawania nazw.
Rozwiązanie
Ten problem został rozwiązany w następujących zbiorczych aktualizacjach programu SQL Server:
Zbiorcza aktualizacja 8 dla programu SQL Server 2016 z dodatkiem SP1
Zbiorcza aktualizacja 4 dla programu SQL Server 2017
Zbiorcza aktualizacja 10 dla programu SQL Server 2014 z dodatkiem Service Pack 2
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki hotfix i poprawki zabezpieczeń, które występowały w poprzedniej kompilacji. Zapoznaj się z najnowszą aktualizacją zbiorczą dla programu SQL Server:
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2016
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2017
najnowsze aktualizacje zbiorcze dla programu SQL Server 2014
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".
Informacje
Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.