IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Problème avec DBCC CHECKDB


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2011
    Messages : 14
    Par défaut Problème avec DBCC CHECKDB
    Bonjour à tous,

    Je travaille actuellement sous SQL Server 2008 R2, et dans les traitements nocturnes, j'effectue un traitement de vérification d'intégrité de mes bases de données avec la commande:

    Pour l'une d'entre elles, j'obtiens régulièrement (pas systématiquement) le message d'erreur suivant :
    "L'instruction de vérification a été abandonnée. La base de données n'a pas pu être vérifiée, car un instantané de base de données n'a pas pu être créé et la base de données ou la table n'a pas pu être verrouillée."

    La BDD n'est à priori sollicitée par aucun autre processus bloquant, et même en faisant au préalable un "ALTER DATABASE MaBDD SET SINGLE_USER" pour fermer toutes les connexions en cours, rien n'y fait.

    Quelqu'un aurait-il une idée à ce sujet ?

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Il est très probable que SQL Server n'ait pas la place suffisante pour créer un snapshot de la base de données concernée. DBCC CHECKDB crée par défaut un snapshot de la base de données avant de procéder aux différentes vérifications sur le même disque où réside cette dernière.

    La première chose à vérifier est donc l'espace libre restant sur le disque concerné. Ensuite tu peux éviter la création du snapshot en utilisant l'option TABLOCK. Cependant DBCC CKECDB devra verrouiller les objets pour opérer.

    Il te reste également une dernière solution qui est de créer toi même un snapshot de bases de données (si tu es en édition Enterprise) sur un disque où il y a de la place et de lancer DBCC CHECKDB sur ce snapshot.

    ++

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2011
    Messages : 14
    Par défaut
    Il me semble que j'avais déjà tenté l'option "WITH TABLOCK", mais ça ne me coûte pas grand chose de réessayer.

    La piste de l'espace disque est bonne. La question est : à quel emplacement est effectué le snapshot ? si c'est au même endroit que les fichiers de BDD, alors il s'agit d'autre chose.

    Je suis en version Enterprise, donc je vais tenter le snapshot "manuel".

    Petite précision : ma BDD possède plusieurs groupes de fichiers, et une table partitionnée. Les plus anciens (en M-2) sont mis en lecture seule.
    Si l'erreur n'était pas "ponctuelle", j'aurais pensé que ça venait de là, mais en général, ça fonctionne, donc..

    Merci pour ton aide en tous cas.
    Je reviendrais dire ce qu'il en est !

  4. #4
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    La piste de l'espace disque est bonne. La question est : à quel emplacement est effectué le snapshot ? si c'est au même endroit que les fichiers de BDD, alors il s'agit d'autre chose.
    C'est cela. Est-ce que tu aurais éventuellement plus d'information sur l'erreur quand cela arrive ?

    As-tu éventuellement essayer avec un DBCC CHECKFILEGROUP pour voir si cela venait d'une partition en particulier ? (je suppose ici qu'une partition = un FG)

    ++

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2011
    Messages : 14
    Par défaut
    En effet, une partition = 1 FG. Mais je n'ai pas plus d'information dans mon log.

    Je viens de tomber sur un article intéressant de la MSDN :

    Aucune capture instantanée de base de données interne n'est créée lors de l'exécution d'une commande DBCC :

    [...]
    * Sur une base de données autre que master, si cette base de données a été placée en mode mono-utilisateur à l'aide de la commande ALTER DATABASE.

    * Sur une base de données en lecture seule.
    [...]
    * Si l'option WITH TABLOCK est utilisée. Dans ce cas, DBCC satisfait la demande en ne créant pas de capture instantanée de la base de données.

    Les commandes DBCC utilisent des verrous de table au lieu de captures instantanées internes de base de données lorsque la commande est exécutée sur les bases de données suivantes :

    * un groupe de fichier en lecture seule ;

    * un système de fichiers FAT ;

    * un volume qui ne prend pas en charge les « flux nommés » ;

    * un volume qui ne prend pas en charge les « flux de remplacement ».
    Source : http://msdn.microsoft.com/fr-fr/libr...ql.100%29.aspx

    Donc l'option "TABLOCK" est systématiquement utilisée lorsque j'effectue un CHECKDB sur ma base.
    Je continue les investigations

    Merci

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 997
    Billets dans le blog
    6
    Par défaut
    ben non si vous faites un DBCC CHECKDB (mabase) c'est bien un snapshot qu'il fait.
    Vous ne pouvez pas faire un snapshot manuel, car ce ne sont pas les mêmes types de snapshot.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Par défaut
    Citation Envoyé par nookie67 Voir le message
    La piste de l'espace disque est bonne. La question est : à quel emplacement est effectué le snapshot ? si c'est au même endroit que les fichiers de BDD, alors il s'agit d'autre chose.
    Le database snapshot pour CHECKDB est matérialisé sous la forme d'un ou plusieurs alternate data streams NTFS par fichier de données nommés Fic.mdf:MSSQL_DBCC##:$DATA ou Fic.ndf:MSSQL_DBCC##:$DATA.

    Ils sont visibles lors du passage de la commande en utilisant un dir /R. Il sont toujours créés sous le même répertoire que leur fichier origine.

Discussions similaires

  1. [2008R2] Problème avec DBCC CHECKDB.
    Par Kropernic dans le forum Administration
    Réponses: 23
    Dernier message: 19/03/2014, 10h22
  2. Problème 'DBCC CHECKDB'
    Par Kagami dans le forum Développement
    Réponses: 27
    Dernier message: 30/09/2013, 16h54
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo