web-dev-qa-db-fra.com

Journal pour la base de données TEMPDB n'est pas disponible

Je me suis battu avec ce problème de tant de mois maintenant, je dis que ce n'est pas une question de base de données et qui attribue cette affaire à l'équipe de stockage et de système d'exploitation et qui me l'attribue ensuite. Ce problème se produit à plusieurs reprises et il n'y a aucun schéma d'occurrence défini.

J'ai vérifié la même question posée ici et je peux dire que ce n'est pas un problème avec la corruption de la base de données, car j'utilise le script de l'OLA Hallengren pour la vérification des travaux de maintenance et de la base de données (checkdb) est effectué sur une base hebdomadaire pour l'utilisateur. et la base de données système et aucun problème signalé dans cela.

Deuxième liaison accédée également pour la question similaire et peut confirmer que TEMPDB est dans un état de récupération simple.

J'ai ajouté un fichier supplémentaire pour les données et connectez-les à la fois de sorte que si on devienne indisponible, l'autre sera toujours accessible plus tard, je suis venu savoir que l'accès de TEMPDB est séquentiel, il ira donc au deuxième fichier uniquement lorsqu'il est tout à fait possible:

Tempdb Properties

Chaque fois que ce problème se produit, je pouvais voir que nous avons une autre erreur dans le journal des applications Windows ci-dessous:

SQLServerLogMgr::LogWriter: Operating system error 170(The requested resource is in use.) encountered.

L'équipe de stockage a exclu ces fichiers de la numérisation antivirus.

Une chose à noter ici - j'ai vérifié d'autres bases de données système et leurs emplacements de fichiers et pourriez voir que pour le fichier maître et modèle, les données et le fichier journal sont dans le même lecteur (lecteur E), tandis que pour TEMPDB et MSDB, les données sont dans e lecteur et journal Le fichier est dans G lecteur, je ne sais pas si cela est pertinent.

Existe-t-il une séquence de la base de données système de vérification lorsqu'un emploi déclenche ou tout événement est tiré? Si c'est un problème avec ce lecteur, MSDB est également sur le même lecteur.

Il s'agit d'un serveur en cluster avec des lecteurs de base de données partagés sur deux serveurs et serveur est utilisé pour l'application SharePoint.

Server Version: Windows Server 2012 Standard
SQL Server: Microsoft SQL Server 2012 (SP4-GDR) (KB4057116) - 11.0.7462.6 (X64) 
    Jan  5 2018 22:11:56 
    Copyright (c) Microsoft Corporation
    Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)

L'option que nous ne restait que pour redémarrer le service ou l'échec - cela ne semble tout simplement pas bon de le faire.

Toute aide à cet égard est appréciée.

3
Learning_DBAdmin

SQLSERVERLOGMGR :: Logwriter: Erreur du système d'exploitation 170 (la ressource demandée est utilisée.) Rencontrée.

Oui, cela est bougé de l'erreur du système d'exploitation que le journal d'inscription s'exécute. Dans ce cas, c'est une erreur de système d'exploitation 170 qui est la ressource est utilisée. C'est assez accablant que le problème est en dehors de SQL Server (sauf toutes les bonnes dll de 3ème partie chargées dans l'espace d'adresses).

Normalement, lorsque je vois que c'est anti-virus, protection de l'hôte, logiciel de défragmentation, logiciel de sauvegarde, etc., qui finit par contenir de longs verrouillages sur les fichiers ou dans des environnements en cluster lorsque les disques ne sont pas correctement configurés à l'arrière.

L'équipe de stockage a exclu ces fichiers de la numérisation antivirus.

Ne pas essayer d'être impoli, mais je ne l'achète pas. Dites-leur que vous voulez une preuve. En outre, simplement parce que le fichier est "exclu" ne signifie pas que le logiciel anti-virus ne le regarde pas, il ne fait toujours pas que tous les contrôles approfondis dans la plupart des cas.

Maintenant quoi?

Je commencerais avec vérification pour voir si une application de voyous tente de faire quelque chose. Le problème est que cela pourrait arriver à tout moment et une application incroyable (le cas échéant) pourrait contenir la serrure pendant une courte période ou pendant une longue période - nous ne savons pas.

L'un des moyens de faire rapidement cela serait d'utiliser la demande Sysinternals Manipulals application sur le fichier ayant le problème. Étant donné que cette erreur a un code d'erreur dans SQL Server pour cela, vous devriez pouvoir créer une alerte d'agent pour exécuter un travail qui appelle un petit fichier de commandes ou PowerShell ou tout ce que vous créez pour exécuter la poignée contre le fichier. Cela devrait aider à essayer de saisir rapidement les informations (mais pourrait ne pas être suffisamment rapide).

Une autre façon d'y aller, surtout si vous pouvez le reproduire assez fréquemment ou facile, c'est d'exécuter moniteur de processus (Procmon) qui est un autre outil Sysinternals pour capturer ce qui touche ce fichier autre que SQL Server.

7
Sean Gallardy