Erreurs du système d’exploitation 1450 et 665 sont signalées pour les fichiers de données de base de données

S’applique à : SQL Server 2008 R2 StandardSQL Server 2008 R2 DatacenterSQL Server 2008 R2 Enterprise

Symptômes


Sur un ordinateur SQL Server, supposons que vous effectuez l’une des actions suivantes :

  • Vous créez un instantané de la base de données sur une base de données volumineuse. Après cela, vous effectuez plusieurs opérations de modification des données ou des opérations de maintenance dans la base de données source.
  • Vous créez un instantané de la base de données sur une base de données mise en miroir
  • Vous exécutez famille de DBCC CHECKDB de commandes pour vérifier la cohérence d’une base de données de grande taille et vous également effectuez un grand nombre de modifications de données dans cette base de données.

Dans ce scénario, vous remarquez les erreurs suivantes, déclarées dans le journal des erreurs de SQL Server en fonction de l’environnement SQL Server est en cours d’exécution.

Windows Server 2003

Le système d’exploitation a renvoyé l’erreur 1450 (existent de ressources système insuffisantes pour terminer le service demandé.) à SQL Server au cours d’une opération d’écriture au décalage 0x00002a3ef96000 dans le fichier avec le handle de 0x0000000000000D5C. Il s’agit généralement d’un problème temporaire et le SQL Server va réessayer l’opération. Si le problème persiste puis exécution action doit être prise pour corriger le problème.

Windows Server 2008, Windows Vista et les versions ultérieures des systèmes d’exploitation serveur et client

Le système d’exploitation a renvoyé l’erreur 665 (l’opération demandée a échoué en raison d’une limitation de système de fichier) à SQL Server au cours d’une opération d’écriture au décalage 0x00002a3ef96000 dans le fichier 'Sam.mdf:MSSQL_DBCC18'

En plus de ces erreurs, vous pouvez également remarquer des erreurs de Délai d’expiration du verrouillage comme indiqué ci-dessous :

  • Délai d’attente dépassé pendant l’attente d’un verrou : classe 'DBCC_MULTIOBJECT_SCANNER', id 000000002C61DF40, tapez 4, tâche 0x00000000038089B8 : 16, waittime 600, indicateurs 0x1a, propriétaire de la tâche 0x0000000006A09828. Continuer à attendre.
  • Délai d’attente dépassé pendant l’attente d’un verrou : classe 'ACCESS_METHODS_HOBT_COUNT', id 000000002C61DF40, tapez 4, tâche 0x00000000038089B8 : 16, waittime 600, indicateurs 0x1a, propriétaire de la tâche 0x0000000006A09828. Continuer à attendre.

En outre, vous pouvez également remarquer le blocage lorsque vous permet d’afficher différentes vues de gestion dynamique (DMV) comme association, sys.dm_os_waiting_tasks, etc..

Cause


Ce problème se produit si un grand nombre d’instances ATTRIBUTE_LIST_ENTRY est nécessaires pour maintenir un fichier fortement fragmenté dans NFTS. Ce comportement est expliqué dans l’article suivant de la base de connaissances :

  • 967351  un fichier fortement fragmenté dans un volume NTFS ne peut-être pas dépasser une certaine taille

Les fichiers fragmentés, créés par SQL Server pour les captures instantanées de base de données peuvent être fragmentés à ces niveaux lorsque de grandes quantités de modifications de données se produisent pour la durée de vie de ces fichiers de capture instantanée.

Pour un arrière-plan complète comment moteur de SQL Server utilise des fichiers sparse de NTFS et les autres flux de données, reportez-vous aux liens suivants :

Résolution


  1. Fractionner la base de données volumineux en fichiers plus petits. Par exemple, si vous disposez d’un seul fichier de 8 To de données vous pouvez décomposer il en fichiers de données de 1 to huit. Haut niveau Voici les étapes pour y parvenir :
    1. Ajouter les nouveaux fichiers de 1 To 7 au même groupe de fichiers.
    2. Reconstruire l’index ordonné en clusters des tables existantes et cela répartira automatiquement les données de chaque table parmi les 8 fichiers. Si une table n’a pas un index ordonné en clusters, puis en créer un et faites-le glisser pour atteindre la même.
    3. Le 8 To d’origine du fichier vers le bas, maintenant c’est environ 12-15 % de réduction totale.
  2. Pensez à l’aide d’une référence qui n’a pas la même ATTRIBUTE_LIST_ENTRY limite que NTFS présente. Vous devez reformater le volume à l’aide de références.
  3. Envisagez de défragmenter le volume sur lequel résident les fichiers de base de données. Pour plus d’informations, consultez Erreur de système d’exploitation (665 – fichier système de Limitation) non seulement pour DBCC plus
  4. Appliquer le correctif de Windows à partir de l’article 967351 de la base de connaissances et puis mettre le volume à l’aide de l’option /L pour obtenir FRS de grande taille. 
  5. 3029977 CORRIGER : Erreur de système d’exploitation 665 lorsque vous exécutez la commande DBCC CHECKDB pour la base de données qui contient l’index de columnstore en 2014 de SQL Server
  6. Réduire la durée de vie des commandes DBCC CHECK en utilisant les améliorations de performances suivantes et, par conséquent, évitez les 665 erreurs :
    • 2634571des améliorations de la commande DBCC CHECKDB peuvent entraîner des performances plus rapides lorsque vous utilisez l’option PHYSICAL_ONLYIndicateurs de trace d’activer - T2562 et - T2549
    • 945770 correctif : instruction le DBCC CHECKDB prend plus de temps pour exécuter activer trace flag - T2566
    • 3029825 correctif : DBCC CHECKDB prendre plus de temps à exécuter lorsque SQL CLR UDT sont impliqués.
  7. Windows Server 2008les clients doivent appliquer le correctif suivant :
    • 957065  message de statut d’erreur du pilote ntfs.sys lorsque certaines applications mettent à jour des fichiers très volumineux dans Windows Server 2008 ou dans les systèmes Windows Vista : « 0xc0000427 STATUS_FILE_SYSTEM_LIMITATION » 
  8.  Pensez à appliquer les correctifs suivants selon la version qu’ils exécutent des clients SQL Server 2005 ou SQL Server 2008 :
    • 961123  correctif : service de The SQL Server s’arrête lorsque vous exécutez une des commandes DBCC CHECK dans une base de données SQL Server 2005 ou lorsque vous créez un instantané de la base de données pour une base de données SQL Server 2005
    • 967164  correctif : The SQL Server service cesse de répondre et vous recevez l’erreur 1450 lorsque vous créez l’instantané de base de données ou que vous exécutez une instruction DBCC CHECK sur une base de données dans SQL Server 2005 et SQL Server 2008
    • 967470  correctif : message d’erreur lorsque vous effectuez une mise à jour ou une opération de suppression sur une table qui n’a pas un index ordonné en clusters créé dans SQL Server 2005 et SQL Server 2008 : « le système d’exploitation a renvoyé l’erreur 1450 »

Sous certaines conditions, vous pouvez toujours rencontrer des erreurs mentionnées ci-dessus même après avoir appliqué ces correctifs. Dans ce scénario, vous pouvez évaluer certaines des solutions de contournement décrites dans le billet de blog suivant :

Pour plus d’informations, consultez les ressources Microsoft suivantes :

Erreur de système d’exploitation (Limitation du système de fichier 665) non seulement pour DBCC plus

 

Prise en charge de NTFS et de références de fichiers fragmentés

Comportement de DBCC CHECKDB lorsque la base de données SQL Server se trouve sur un volume de références