Poprawka: Błąd 605 i błąd 824 podczas uruchamiania kwerendy, która wstawia dane do tabeli tymczasowej w programie SQL Server

Dotyczy: SQL Server 2008 Service Pack 3

Błąd: #50003826 (poprawka SQL)
Firma Microsoft rozpowszechnia poprawki programu Microsoft SQL Server 2008 jako jeden plik do pobrania. Ponieważ poprawki są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 Release.

Objawy


SQL Server 2008 Uruchom kwerendę, która wstawia dane do tabeli tymczasowej. Instrukcja insert zawiera podkwerendę, która odwołuje się do tej samej tabeli tymczasowej. Po uruchomieniu kwerendy, może pojawić się komunikat o błędzie podobny do następującego:
Msg 605, poziom 21, stan 3, 1Attempt linii do pobrania logicznej strony (1:225) w 2 bazy danych nie powiodło się. Należy on do 281474980315136 jednostki alokacji nie do 504403158513025024.
Jeśli ponownie uruchomić kwerendę, pojawi się komunikat o błędzie podobny do następującego:
Msg 824, poziom 24, stan 2, wiersz 1
SQL Server wykrył błąd We/Wy na podstawie spójności logiczne: niepoprawna suma kontrolna (oczekiwany: 0x50758180; rzeczywiste: 0x15658bfc). Wystąpił podczas odczytu strony (1:336), w bazie danych ID 2, przy przesunięciu 0x000000002a0000 w pliku "C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Dodatkowe wiadomości w SQL Server dziennika lub systemu zdarzeń dziennik błędów może zawierać więcej szczegółów. To jest poważny błąd, który powoduje integralnością bazy danych i muszą zostać poprawione niezwłocznie. Wykonaj sprawdzanie spójności pełnej bazy danych (DBCC CHECKDB). Ten błąd może być spowodowany przez wiele czynników; Aby uzyskać więcej informacji zobacz SQL Server Books Online.
W niektórych przypadkach może pojawić się komunikat o błędzie podobny do następującego:
Msg 601, poziom 12, stan 3, procedury pprocedura nazwa, numer wierszanie można kontynuować skanowanie z NOLOCK przenoszenia danych.
Konstrukcja możliwe kwerendy, która może produkować tych błędów jest w następujący sposób:
insert #table1select s.col1, s.col2from #table2 s inner loop join #table1 t on s.col3 = t.col3 

Rozwiązanie


Poprawkę dotyczącą tego problemu najpierw została wydana w zbiorczej aktualizacji 3. Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
960484 Zbiorczy pakiet aktualizacji 3 dla programu SQL Server 2008
Uwaga Ponieważ są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 Release. Firma Microsoft zaleca, aby rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
956909 SQL Server 2008 buduje wydane po wydaniu programu SQL Server 2008
Po zainstalowaniu tego pakietu aktualizacji zbiorczej, musisz włączyć flagę śledzenia 4135. Aby to zrobić, należy dodać -T4135 parametr uruchamiania. Lub można użyć instrukcji dbcc traceon(4135) dla określonej sesji.

Obejście


Aby obejść ten problem, należy dodać kolumny, która ma klucz podstawowy i właściwość tożsamości do tabeli tymczasowej. Na przykład Uruchom następującą instrukcję, aby zmienić Tabela tymczasowa:
ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

Stan


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

Więcej informacji


Mimo że wystąpi komunikat o błędzie 824 lub 605 bazy danych nie zostanie uszkodzony. Ponadto te komunikaty o błędach odwołania do stron z bazy danych tempdb.Aby uzyskać więcej informacji o tym, jakie pliki są zmieniane i informacji na temat wymagań wstępnych, aby zastosować pakiet aktualizacji zbiorczej, który zawiera poprawki, którą opisano w tym artykule bazy wiedzy Microsoft Knowledge Base, kliknij następujący numer artykułu w celu wyświetlenia artykuł z bazy wiedzy Microsoft Knowledge Base:
960484 Zbiorczy pakiet aktualizacji 3 dla programu SQL Server 2008

SQL Server 2008 R2 BPA informacji

SQL Server 2008 R2 Best Practice Analyzer (program SQL Server 2008 R2 BPA) zawiera regułę, aby wykryć sytuacje, w których nie masz aktualizacji zbiorczej lub flagi śledzenia włączone do tej kwestii. SQL Server 2008 R2 BPA obsługuje zarówno program SQL Server 2008 i programu SQL Server 2008 R2. Jeśli po uruchomienia narzędzia BPA "Aparatu bazy danych - tempdb naprawić błędy lub brakujące flagi śledzenia" ostrzeżenie sprawdzić wersję programu SQL Server i flagi śledzenia, które są skonfigurowane, aby włączyć tę poprawkę.

Informacje

Reguła oprogramowaniaNazwa regułyIdentyfikator reguły
SQL Server 2008 R2 narzędzie BPA regułęnaprawić błędy TempDB lub brakujące flagi śledzeniaRID3808
Uwaga Można włączyć flagi śledzenia 4135 lub flagę śledzenia 4199, aby włączyć tę poprawkę. Flagi śledzenia 4135 został wprowadzony w pakiecie zbiorczej aktualizacji 3 dla programu SQL Server 2008. Flagi śledzenia 4135 jest również dostępna w dodatku Service Pack 1 dla programu SQL Server 2008, dodatek Service Pack 2 dla programu SQL Server 2008 i programu SQL Server 2008 R2. Flaga śledzenia 4199 został wprowadzony w pakiecie zbiorczej aktualizacji 7 dla programu SQL Server 2008, 7 zbiorczy pakiet aktualizacji dla programu SQL Server 2008 z dodatkiem Service Pack 1 i pakiet aktualizacji zbiorczej 1 dla programu SQL Server 2008 R2. Aby uzyskać więcej informacji na temat flagi śledzenia 4199 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
 974006 Flaga śledzenia 4199 jest dodawany do kontroli wielu zmian Optymalizator kwerend wcześniej dokonanych na podstawie wielu flagi śledzenia
Ponieważ poprawkę dotyczącą tego problemu polega na kombinacji kompilacji poprawki i flagi śledzenia, aby włączyć tę poprawkę, jesteśmy w tym poniższej tabeli, aby pokazać różne scenariusze i zalecane działanie, aby podjąć dla każdego scenariusza.Aby uzyskać więcej informacji dotyczących najnowszych kompilacjach programu SQL Server kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
957826 Gdzie można znaleźć informacje o najnowszych SQL Server tworzy

Informacje


Aby uzyskać więcej informacji o liście kompilacje, które są dostępne po wydaniu programu SQL Server 2008 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
956909 SQL Server 2008 buduje wydane po wydaniu programu SQL Server 2008
Aby uzyskać więcej informacji o przyrostowych modelu obsługi programu SQL Server kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
935897 Przyrostowe modelu obsługi jest dostępne z zespołu programu SQL Server do dostarczania poprawki dla problemów zgłoszonych
Aby uzyskać więcej informacji na temat schematu nazewnictwa dla aktualizacji programu SQL Server kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
822499Nowy schemat nazewnictwa dla pakietów aktualizacji oprogramowania Microsoft SQL Server
Aby uzyskać więcej informacji dotyczących terminologii aktualizacji oprogramowania, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft