Firma Microsoft dystrybuuje poprawki dla programów Microsoft SQL Server 2008 R2 i Microsoft SQL Server 2008 jako jeden plik do pobrania. Ponieważ poprawki są zbiorcze, każda nowa wersja zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki programu SQL Server 2008 R2 lub SQL Server 2008.
Objawy
Program Microsoft SQL Server 2008 R2 lub Microsoft SQL Server 2008 może oznaczać pliki danych bazy danych jako rozrzedzone, nawet jeśli pliki fizyczne są oznaczone jako nierozrzedzone w systemie plików.
Notatki
Aby określić, czy pliki danych bazy danych są oznaczone jako rozrzedzone w metadanych SQL Server, uruchom następującą instrukcję, a następnie sprawdź, czy kolumna Is_Sparse ma ustawioną wartość różną od zera w zestawie wyników:
Użyj
<nazwa bazy danych>
Wybierz is_sparse , physical_name z sys.database_filesAby wysłać zapytanie o stan plików fizycznych w systemie plików, uruchom następujące polecenie systemu Windows po przejściu bazy danych do trybu offline:
fsutil sparse queryflag<files path>\<database file>Jeśli otrzymasz następujące dane wyjściowe, plik zostanie oznaczony jako rozrzedzony w systemie plików:
Ten plik jest ustawiany jako rozrzedzony.
Zarówno metadane programu SQL Server, jak i metadane systemu plików należy oznaczyć jako rzadkie tylko dla plików danych bazy danych, które są częścią migawki bazy danych.
Przyczyna
Ten problem występuje, ponieważ system plików nieprawidłowo oznacza cały plik danych bazy danych jako rozrzedzony po usunięciu strumienia alternatywnego, który był pierwotnie oznaczony jako rozrzedzony. Strumień alternatywny jest usuwany po zakończeniu działania polecenia DBCC CHECKDB.
Notatki
Użycie migawki wewnętrznej bazy danych to funkcja systemu plików NTFS używana przez rodzinę poleceń DBCC CHECKDB. Po uruchomieniu poleceń DBCC aparat bazy danych tworzy alternatywny strumień migawki bazy danych i przywraca go do stanu spójności transakcyjnej. Polecenie DBCC uruchamia testy względem strumienia alternatywnego. Strumień alternatywny jest usuwany po zakończeniu działania polecenia DBCC.
Konstrukcja powodująca ten problem została wprowadzona w systemie Windows Server 2003, w którym do tworzenia kopii zapasowych plików bazy danych są używane kopie zapasowe na poziomie woluminu systemu Windows. Metadane programu SQL Server przechowują kopię atrybutów rozrzedzonych dla plików danych w tabelach systemowych. Jednak SQL Server nie aktualizuje informacji Is_Sparse po usunięciu atrybutu rozrzedzonego z systemu plików.
Ten problem występuje również po migracji bazy danych z systemu Windows Server 2003 do nowszej wersji systemu operacyjnego Windows.
Na przykład możesz migrować bazy danych z systemu Windows Server 2003 do systemu Windows Server 2008 lub do systemu Windows Server 2008 R2.
Rozwiązanie
Aby rozwiązać ten problem w programie SQL Server 2008 R2 lub SQL Server 2008, należy zastosować następującą poprawkę, a następnie przełączyć bazę danych do trybu online. Po przejściu bazy danych w tryb online program SQL Server sprawdza, czy metadane fizycznego pliku bazy danych nie zostały oznaczone jako rzadkie w systemie plików. Jeśli metadane programu SQL Server są oznaczone jako nierozrzedzone, zostaną zaktualizowane.
Uwaga Aby usunąć atrybuty rozrzedzone z systemu plików, należy skopiować pliki bazy danych, a następnie użyć nowej kopii plików dla bazy danych. Aby uzyskać więcej informacji na temat tego procesu, odwiedź następującą witrynę MSDN w sieci Web:
Jak usunąć atrybuty rozrzedzone z systemu plików
Informacje o aktualizacji zbiorczej
Dodatek Service Pack 3 dla programu SQL Server 2008
Poprawkę rozwiązującą ten problem opublikowano po raz pierwszy w pakiecie aktualizacji zbiorczej 1 dla dodatku Service Pack 3 dla programu SQL Server 2008. Aby uzyskać więcej informacji dotyczących tego pakietu aktualizacji skumulowanych, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2617146 Pakiet aktualizacji zbiorczej 1 dla dodatku Service Pack 3 SQL Server 2008Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa poprawka zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki SQL Server 2008. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2629969 Kompilacje SQL Server 2008 wydane po wydaniu dodatku Service Pack 3 SQL Server 2008 Poprawki Microsoft SQL Server 2008 są tworzone dla określonych SQL Server dodatków Service Pack. Należy zastosować poprawkę dodatku Service Pack 3 dla programu SQL Server 2008 do instalacji dodatku Service Pack 3 dla programu SQL Server 2008. Domyślnie każda poprawka dostępna w dodatku Service Pack dla programu SQL Server jest uwzględniona w następnym dodatku Service Pack dla programu SQL Server.
SQL Server 2008 z dodatkiem Service Pack 1
Poprawkę rozwiązującą ten problem opublikowano po raz pierwszy w pakiecie aktualizacji zbiorczej 16 dla dodatku Service Pack 1 dla programu SQL Server 2008. Aby uzyskać więcej informacji dotyczących tego pakietu aktualizacji skumulowanych, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2582282 Pakiet aktualizacji zbiorczej 16 dla dodatku Service Pack 1 SQL Server 2008Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa poprawka zawiera wszystkie poprawki i poprawki zabezpieczeń z poprzednich wersji poprawek SQL Server 2008. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
970365 Kompilacje SQL Server 2008 wydane po wydaniu dodatku Service Pack 1 SQL Server 2008 Poprawki Microsoft SQL Server 2008 są tworzone dla określonych SQL Server dodatków Service Pack. Należy zastosować poprawkę dodatku Service Pack 1 dla programu SQL Server 2008 do instalacji dodatku Service Pack 1 dla programu SQL Server 2008. Domyślnie każda poprawka dostępna w dodatku Service Pack dla programu SQL Server jest uwzględniona w następnym dodatku Service Pack dla programu SQL Server.
Dodatek Service Pack 2 dla programu SQL Server 2008
Poprawkę rozwiązującą ten problem opublikowano po raz pierwszy w pakiecie aktualizacji zbiorczej 6 dla programu SQL Server 2008 z dodatkiem Service Pack 2. Aby uzyskać więcej informacji dotyczących tego pakietu aktualizacji skumulowanych, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2582285 Pakiet aktualizacji zbiorczej 6 dla dodatku Service Pack 2 SQL Server 2008Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa poprawka zawiera wszystkie poprawki i poprawki zabezpieczeń z poprzednich wersji poprawek SQL Server 2008. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2402659 Kompilacje SQL Server 2008 wydane po wydaniu dodatku Service Pack 2 SQL Server 2008 Poprawki Microsoft SQL Server 2008 są tworzone dla określonych SQL Server dodatków Service Pack. Należy zastosować poprawkę dodatku Service Pack 2 dla programu SQL Server 2008 do instalacji dodatku Service Pack 2 dla programu SQL Server 2008. Domyślnie każda poprawka dostępna w dodatku Service Pack dla programu SQL Server jest uwzględniona w następnym dodatku Service Pack dla programu SQL Server.
SQL Server 2008 R2 CU9
Poprawkę rozwiązującą ten problem opublikowano po raz pierwszy w zbiorczym pakiecie aktualizacji 9 dla programu SQL Server 2008 R2. Aby uzyskać więcej informacji dotyczących sposobu uzyskania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 R2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2567713 Pakiet aktualizacji zbiorczej 9 dla SQL Server 2008 R2 Uwaga Ponieważ kompilacje są zbiorcze, każda nowa poprawka zawiera wszystkie poprawki i poprawki zabezpieczeń z poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
981356 Kompilacje SQL Server 2008 R2 wydane po wydaniu SQL Server 2008 R2
SQL Server 2008 R2 Service Pack 1 CU2
Poprawka rozwiązująca ten problem została po raz pierwszy opublikowana w zbiorczym pakiecie aktualizacji 2. Aby uzyskać więcej informacji dotyczących sposobu uzyskania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 R2 z dodatkiem SP1, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2567714 Pakiet aktualizacji zbiorczej 2 dla SQL Server 2008 R2 z dodatkiem Service Pack 1Uwaga Ponieważ te kompilacje mają charakter zbiorczy, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki dla SQL Server 2008 R2 z dodatkiem SP1. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2567616 Kompilacje SQL Server 2008 R2 wydane po wydaniu dodatku Service Pack 1 SQL Server 2008 R2
Informacje o poprawkach
Obsługiwana poprawka jest dostępna w firmie Microsoft. Jednak ta poprawka ma na celu rozwiązanie tylko problemu opisanego w tym artykule. Tę poprawkę należy stosować tylko w systemach, w których występuje problem opisany w tym artykule. Ta poprawka może zostać poddana dodatkowym testom. Dlatego jeśli ten problem nie dotyczy użytkownika, zaleca się zaczekać na następną aktualizację oprogramowania zawierającą tę poprawkę.
Jeśli poprawka jest dostępna do pobrania, u góry tego artykułu z bazy wiedzy znajduje się sekcja "Dostępne do pobrania poprawki". Jeśli ta sekcja nie zostanie wyświetlona, skontaktuj się z działem pomocy technicznej i pomocy technicznej firmy Microsoft w celu uzyskania poprawki.
Uwaga W przypadku wystąpienia dodatkowych problemów lub konieczności rozwiązania problemu może być konieczne utworzenie osobnego zgłoszenia serwisowego. Normalne koszty pomocy technicznej będą dotyczyć dodatkowych pytań oraz problemów, które nie kwalifikują się do objęcia tą poprawką. Aby uzyskać pełną listę numerów telefonów działu obsługi klienta i pomocy technicznej firmy Microsoft lub utworzyć oddzielne żądanie obsługi, odwiedź następującą witrynę firmy Microsoft w sieci Web:
/contactus/?ws=support Uwaga: W formularzu "Dostępne do pobrania poprawki" są wyświetlane języki, dla których poprawka jest dostępna. Jeśli nie widzisz odpowiedniego języka, oznacza to, że nie ma dla niego dostępnej poprawki.
Wymagania wstępne
Aby zastosować tę poprawkę, musisz mieć zainstalowany program SQL Server 2008 R2.
Wymóg ponownego uruchomienia
Po zastosowaniu tej poprawki nie jest konieczne ponowne uruchomienie komputera.
Informacje o zastępowaniu poprawek
Ta poprawka nie zastępuje wcześniej wydanej poprawki.
Informacje o plikach
Globalna wersja tej poprawki ma atrybuty pliku (lub nowsze atrybuty pliku) wymienione w poniższej tabeli. Daty i godziny dla tych plików są wyświetlane według uniwersalnego czasu koordynowanego (UTC). Informacje o pliku są konwertowane na czas lokalny. Aby znaleźć różnicę między czasem UTC a czasem lokalnym, użyj karty Strefa czasowa w elemencie Data i godzina w Panelu sterowania.
| Nazwa pliku | Wersja pliku | Rozmiar pliku | Data | Godzina | Platforma |
|---|---|---|---|---|---|
| Sqlservr.exe | 2009.100.1800.0 | 121,829,216 | 08-lip-2011 | 11:55 | IA-64 |
| Sqlservr.exe | 2009.100.1800.0 | 62,027,616 | 08-lip-2011 | 12:28 | x64 |
| Sqlservr.exe | 2009.100.1800.0 | 42,911,584 | 08-lip-2011 | 13:22 | x86 |
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.
Więcej informacji
Poniższa tabela zawiera więcej informacji o produktach lub narzędziach, które automatycznie sprawdzają występowanie tego warunku w wystąpieniu programu SQL Server i wersjach produktu programu SQL Server, względem których reguła jest porównywana.
| Oprogramowanie reguł | Tytuł reguły | Opis reguły | Wersje produktu, względem których reguła jest oceniana |
|---|---|---|---|
| System Center Advisor | Pliki bazy danych programu SQL Server oznaczone jako pliki rozrzedzone | Program System Center Advisor sprawdza, czy to wystąpienie programu SQL Server zawiera pliki bazy danych oznaczone jako rozrzedzone. Tylko pliki migawek baz danych powinny być oznaczane jako pliki. Jeśli normalne pliki bazy danych są oznaczone jako rozrzedzone, usługa Advisor generuje alert. Doradca korzysta z kolumny is_sparse w widoku wykazu sys.master_files. Przejrzyj szczegóły podane w sekcji "Zebrane informacje" alertu doradcy i sprawdź stan rozrzedzonych plików na poziomie systemu operacyjnego, na które ma to wpływ. Po wyczyszczeniu stanu rozrzedzenia systemu operacyjnego można zastosować poprawkę omówioną w tym artykule w celu odświeżenia metadanych programu SQL Server i zsynchronizowania ich z ustawieniami systemu operacyjnego. |
SQL Server 2008 SQL Server 2008 R2 SQL Server 2012 |
Źródła informacji
Aby uzyskać więcej informacji o poleceniach DBCC, odwiedź następującą witrynę MSDN w sieci Web:
Ogólne informacje o poleceniach DBCC Aby uzyskać więcej informacji na temat instrukcji Fsutil, odwiedź następującą witrynę MSDN w sieci Web:
Ogólne informacje o instrukcji Fsutil Aby uzyskać więcej informacji dotyczących tego problemu w systemie Windows Server 2003, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
973886 Nie można przywrócić dużych plików w systemie plików NTFS, jeśli wszystkie strumienie danych o atrybutach rozrzedzonych zostały usunięte w 64-bitowej wersji systemu Windows XP z dodatkiem SP2 lub Windows Server 2003 z dodatkiem SP2
932021 Komunikat o błędzie podczas uruchamiania polecenia "chkdsk" w połączeniu z przełącznikiem "/v" na komputerze z systemem Windows Server 2003: "Correcting parse file record segment <>number"