Firma Microsoft rozpowszechnia poprawki programu Microsoft SQL Server 2008 z dodatkiem Service Pack 3 (SP3) lub Microsoft SQL Server 2008 R2 jako jednego pliku do pobrania. Ponieważ poprawki są kumulatywne, każda nowa wersja zawiera wszystkie poprawki i wszystkie aktualizacje zabezpieczeń, które zostały dołączone do poprzedniej wersji programu SQL Server 2008 z dodatkiem SP3 lub SQL Server 2008 R2.
Symptomy
Rozpatrzmy następujący scenariusz:
-
Tworzenie partycji dla tabeli w programie SQL Server 2008 lub SQL Server 2008 R2.
-
Kompresja na wszystkich partycjach nie jest włączana.
-
Próbujesz wstawić rekord do nowej pustej partycji.
W tym scenariuszu występuje naruszenie zasad dostępu, a w dzienniku błędów programu SQL Server jest rejestrowany następujący błąd:
<Date> <Time> spid## ***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\LOG\SQLDump0001.txt<Date> <Time> spid## SqlDumpExceptionHandler: Process 66 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.<Date> <Time> spid## * BEGIN STACK DUMP:<Date> <Time> spid## * Exception Address = 0000000000C37D22 Module(sqlservr+0000000000137D22)<Date> <Time> spid## * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION<Date> <Time> spid## * Access Violation occurred reading address 0000000000000020
Uwaga Ten problem występuje również w programie Microsoft SQL Server 2008 R2.
Rozwiązanie
Informacje o aktualizacji zbiorczej
SQL Server 2008 z dodatkiem Service Pack 2
Poprawka dotycząca tego problemu została wydana po raz pierwszy w zbiorczej aktualizacji 8 dla programu SQL Server 2008 z dodatkiem Service Pack 2. Aby uzyskać więcej informacji na temat tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2648096 Pakiet aktualizacji zbiorczej 8 dla programu SQL Server 2008 z dodatkiem Service Pack 2Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniej wersji poprawki SQL Server 2008. Firma Microsoft zaleca zastosowanie najnowszego wydania poprawki zawierającego 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:
2402659 Kompilacje programu SQL Server 2008 wydane po opublikowaniu dodatku Service Pack 2 dla programu SQL Server 2008 Poprawki programu Microsoft SQL Server 2008 są tworzone dla określonych pakietów Service Pack programu SQL Server. Musisz zastosować poprawkę dodatku Service Pack 2 dla programu SQL Server 2008 do instalacji dodatku Service Pack 2 do programu SQL Server 2008. Wszystkie poprawki podane w dodatku Service Pack programu SQL Server są domyślnie zawarte w następnym dodatku Service Pack dla programu SQL Server.
SQL Server 2008 R2
Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 11. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji dla programu SQL Server 2008 R2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2633145 Pakiet aktualizacji zbiorczej 11 dla programu SQL Server 2008 R2 Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego 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:
981356 Kompilacje programu SQL Server 2008 R2, które zostały wydane po opublikowaniu programu SQL Server 2008 R2
SQL Server 2008 R2 z dodatkiem Service Pack 1
Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji skumulowanej 4 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 1. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2633146 Pakiet aktualizacji zbiorczej 4 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 1Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego 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:
2567616 Kompilacje programu SQL Server 2008 R2, które zostały wydane po opublikowaniu dodatku Service Pack 1 dla programu SQL Server 2008 R2
SQL Server 2008 z dodatkiem Service Pack 3
Poprawka dotycząca tego problemu została wydana po raz pierwszy w pakiecie aktualizacji zbiorczej 2 dla programu SQL Server 2008 z dodatkiem Service Pack 3. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji dla programu SQL Server 2008 z dodatkiem Service Pack 3, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2633143 Pakiet aktualizacji zbiorczej 2 dla programu SQL Server 2008 z dodatkiem Service Pack 3Uwaga Ponieważ kompilacja jest zbiorcza, każda nowa wersja aktualizacji zawiera wszystkie poprawki i wszystkie aktualizacje zabezpieczeń, które zostały uwzględnione w poprzedniej wersji aktualizacji dodatku Service Pack 3 dla programu SQL Server 2008. Zalecamy zastosowanie najnowszego wydania aktualizacji, który zawiera 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:
2629969 Kompilacje programu SQL Server 2008 wydane po opublikowaniu dodatku Service Pack 3 dla programu SQL Server 2008
Więcej informacji
Aby się upewnić, że występuje problem opisany w tym artykule bazy wiedzy Knowledge Base, wykonaj następujące czynności:
-
Otwórz połączenie DAC z programem SQL Server i uruchom następujące zapytanie:
Use <your_db_name>select * from sys.sysrscols rsc where rsc.rsid in ( select sau.container_idfrom sys.system_internals_allocation_units sau join sys.partitions pt on sau.container_id = pt.partition_idand pt.object_id = object_id(<YourPartitionedTable>) and pt.index_id = 1)
Uwaga W tym zapytaniu <YourPartitionedTable> jest symbolem zastępczym nazwy tabeli partycji.
-
W wynikach kwerendy Sprawdź, czy kolumna rscolid zawiera dużą wartość. Poniżej przedstawiono przykład takiej dużej wartości:
rsid
rscolid
hbcolid
rcmodified
zas
identyfikatora
ordkey m
72057594380091392
0,4
1
614911578
56
0,4
r.[4
72057594380091392
11
13
614911578
12967
53265
0,4
72057594380091392
12
14
614911578
32999
53265
0,4
72057594380091392
13
piętnast
614911578
32999
53265
0,4
72057594380091392
14
art
614911578
59
0,4
0,4
72057594380091392
piętnast
siedemnast
614911578
59
0,4
0,4
72057594380091392
siedemnast
1,18
614911578
1834
0,4
0,4
72057594380091392
67108865
1,19
614911578
19627
53625
0,4
72057594380091392
20
Będąc
614911578
56
0,4
0,4
72057594380091392
Będąc
dobę
614911578
10407
53625
0,4
72057594380091392
dobę
art
614911578
662636
0,4
0,4
W tym przykładzie wartość 67108865 jest znacznie większa niż inne. Oznacza to, że występuje problem opisany w tym artykule z bazy wiedzy Knowledge Base.
Aby obejść ten problem, Odbuduj odpowiednie partycje. Skontaktuj się z pomocą techniczną firmy Microsoft, aby dowiedzieć się, jakie partycje są wykorzystywane. Możesz też odbudować wszystkie partycje za pomocą następującego zapytania:
ALTER INDEX <your_table_index>ON <your_table_name>REBUILD Partition = allGO
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".