Błędy systemu operacyjnego 1450 i 665 są raportowane dla plików danych bazy danych

Dotyczy: SQL Server 2008 R2 StandardSQL Server 2008 R2 DatacenterSQL Server 2008 R2 Enterprise

Objawy


Na komputerze serwera SQL Załóżmy, wykonaj jedną z następujących czynności:

  • Migawka bazy danych jest tworzona na dużej bazy danych. Po tej czynności należy wykonać wiele operacji modyfikujących dane lub czynności konserwacji w źródłowej bazie danych.
  • Tworzenie migawki bazy danych duplikat bazy danych
  • Wykonanie polecenia DBCC CHECKDB z rodziny poleceń sprawdzenie spójności dużej bazy danych, a także wykonywać wiele zmian danych w tej bazie danych.

W tym scenariuszu można zauważyć następujące błędy zgłaszane w dzienniku błędów programu SQL Server, w zależności od środowiska SQL Server jest uruchomiona na.

Windows Server 2003

System operacyjny zwrócił błąd 1450 (istnieją zasoby systemu są niewystarczające do ukończenia żądanej usługi.) do programu SQL Server podczas zapisu przesunięciem 0x00002a3ef96000 w pliku z uchwytem 0x0000000000000D5C. Zazwyczaj jest to stan tymczasowy, a program SQL Server będzie ponawiać próby operacji. Jeśli stan będzie się utrzymywał następnie natychmiastowe podjąć należy go poprawić.

Windows Server 2008, Windows Vista i nowszych wersjach systemów operacyjnych serwera i klienta

System operacyjny zwrócił błąd 665 (żądanej operacji nie można ukończyć z powodu ograniczenia systemu plików) do programu SQL Server podczas zapisu przesunięciem 0x00002a3ef96000 w pliku "Sam.mdf:MSSQL_DBCC18"

Oprócz tych błędów mogą również wystąpić błędy Limitu czasu zamka , jak pokazano poniżej:

  • Przekroczono limit czasu podczas oczekiwania na zatrzaśnięcie: klasy "DBCC_MULTIOBJECT_SCANNER", 000000002C61DF40 identyfikator typu 4, zadanie 0x00000000038089B8: 16 czas_oczekiwania 600, flagi 0x1a, będący właścicielem zadania 0x0000000006A09828. Nadal czekać.
  • Przekroczono limit czasu podczas oczekiwania na zatrzaśnięcie: klasy "ACCESS_METHODS_HOBT_COUNT", 000000002C61DF40 identyfikator typu 4, zadanie 0x00000000038089B8: 16 czas_oczekiwania 600, flagi 0x1a, będący właścicielem zadania 0x0000000006A09828. Nadal czekać.

Ponadto można także zaobserwować blokowania podczas przeglądania różnych widoków dynamicznego zarządzania (DMV) jak sys.dm_exec_requests, sys.dm_os_waiting_tasks, itp.

Przyczyna


Ten problem występuje, gdy duża liczba wystąpień ATTRIBUTE_LIST_ENTRY są potrzebne do utrzymania wysoce pofragmentowane pliku w NTFS. To zachowanie jest wyjaśnione w następującym artykule KB:

  • 967351  wysoce pofragmentowane pliku w woluminie NTFS nie może rosnąć poza określonym rozmiarze

Można pobrać fragmentacji rozrzedzone pliki utworzone przez program SQL Server do migawki bazy danych do tych poziomów, gdy duże ilości modyfikacji danych stało się przez cały okres istnienia tych plików migawki.

Pełne tło jak aparat SQL Server używa plikami rozrzedzonymi NTFS i alternatywnych strumieniach danych można znaleźć w następujących łączy:

Rozwiązanie


  1. Podziel duże bazy danych na mniejsze pliki. Na przykład jeśli masz jeden plik 8 TB danych można podzielić go na osiem 1 TB danych plików. Wysokiego poziomu są kroki w tym celu:
    1. Dodaj 7 nowych plików 1 TB do tej samej grupy plików.
    2. Indeksów klastrowanych istniejących tabel i to zostaną automatycznie wprowadzone w danych w każdej tabeli wśród 8 plików. Jeśli tabela ma indeks klastrowany, następnie utworzyć, a następnie upuść ją, aby osiągnąć ten sam.
    3. Zmniejszania oryginalny 8 TB pliku w dół, teraz jest o około 12-15% pełnej.
  2. Wziąć pod uwagę przy użyciu odwołań, których nie ma sam ATTRIBUTE_LIST_ENTRY ogranicza, że przedstawi systemu plików NTFS. Trzeba ponownie sformatować wolumin przy użyciu odwołań.
  3. Rozważ możliwość defragmentacji woluminu, na którym są przechowywane pliki bazy danych. Aby uzyskać więcej informacji zobacz Błąd systemu operacyjnego (665 – ograniczenia systemu plików) nie tylko dla już DBCC
  4. Zastosowanie systemu Windows Fix z artykułu KB 967351 i następnie sformatować wolumin przy użyciu opcji/l do uzyskania dużych usługi replikacji plików. 
  5. 3029977 Poprawka: Błąd systemu operacyjnego 665 podczas wykonywania polecenia DBCC CHECKDB dla bazy danych, która zawiera indeks magazynu kolumn w 2014 serwera SQL
  6. Ograniczenie ważności polecenia DBCC sprawdzić za pomocą następujące ulepszenia wydajności i w związku z tym uniknięcia błędów 665:
    • 2634571ulepszeń dla polecenia DBCC CHECKDB może działać szybciej po wybraniu opcji PHYSICAL_ONLYFlagi śledzenia enable - T2562 i - T2549
    • 945770 poprawka: Instrukcja DBCC CHECKDB trwa dłużej włączenia śledzenia Flaga - T2566
    • NAPRAW 3029825 : polecenie DBCC CHECKDB wykonywany dłużej w przypadku UDT, typy CLR SQL
  7. Windows Server 2008Klienci powinni zastosować następującą poprawkę:
    • 957065  komunikat stanu ze sterownika ntfs.sys niektóre aplikacje aktualizacji bardzo dużych plików w systemie Windows Server 2008 lub w systemach Windows Vista: "0xc0000427 STATUS_FILE_SYSTEM_LIMITATION" 
  8.  SQL Server 2005 lub SQL Server 2008 klienci powinni zdecydowanie rozważyć zastosowanie następujące poprawki stosownie do wersji używanej przez:
    • 961123  NAPRAWIĆ: zatrzymuje usługi programu SQL Server po uruchomieniu polecenia DBCC Sprawdź w bazie danych programu SQL Server 2005 lub podczas tworzenia migawki bazy danych dla bazy danych programu SQL Server 2005
    • 967164  NAPRAWIĆ: Usługa programu SQL Server przestaje odpowiadać i wyświetlany jest błąd 1450 podczas tworzenia migawki bazy danych lub wykonywania instrukcji DBCC Sprawdź w bazie danych programu SQL Server 2005 i SQL Server 2008
    • 967470  NAPRAWIĆ: komunikat o błędzie podczas wykonywania operacji usuwania w tabeli, która ma indeks klastrowany, utworzone w programie SQL Server 2005 i SQL Server 2008 lub aktualizacji: "system operacyjny zwrócił błąd 1450"

Pod pewnymi warunkami może być nadal występują błędy wyżej wymienionych, nawet po zastosowaniu tych poprawek. W tym scenariuszu można ocenić niektóre rozwiązania omówione w następujących blogu:

Aby uzyskać więcej informacji zobacz następujące zasoby firmy Microsoft:

Błąd systemu operacyjnego (665 ograniczenia systemu plików) nie tylko dla już DBCC

 

Pliki rzadkie, obsługiwane na NTFS i ODWOŁAŃ

Zachowanie polecenia DBCC CHECKDB w przypadku bazy danych SQL Server znajduje się na woluminie odwołań