MSSQLSERVER_5120

S’applique à :SQL Server

Détails

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 5120
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique DSK_FCB_FAILURE
Texte du message Erreur de table, Impossible d'ouvrir le fichier physique "%.*ls". Erreur %d du système d'exploitation : "%ls".

Explication

SQL Server n’a pas pu ouvrir un fichier de base de données. L’erreur de système d’exploitation fournie dans le message pointe vers des raisons sous-jacentes plus spécifiques pour l’échec. Cette erreur est souvent associée à d'autres erreurs telles que 17204 ou 17207 .

Action requise

Analysez et corrigez cette erreur de système d'exploitation, puis tentez à nouveau l'opération. Plusieurs états peuvent aider Microsoft à limiter la zone dans le produit où la partie à problème se trouve.

l’accès est refusé.

Si vous recevez l’erreur de système d’exploitation Access is Denied = 5, envisagez les méthodes suivantes :

  • Vérifiez les autorisations définies pour le fichier en examinant les propriétés du fichier dans l’Explorateur Windows. SQL Server utilise des groupes Windows pour approvisionner Access Control sur les diverses ressources de fichiers. Assurez-vous que le groupe approprié [avec des noms tels que SQLServerMSSQLUser$NomOrdinateur$MSSQLSERVER ou SQLServerMSSQLUser$NomOrdinateur$NomInstance] dispose des autorisations requises sur le fichier de base de données mentionné dans le message d’erreur. Consultez Configurer les autorisations du système de fichiers pour l'accès au moteur de base de données pour plus de détails. Assurez-vous que le groupe Windows comprend réellement le compte de démarrage du service SQL Server ou le SID du service.

  • Examinez le compte d’utilisateur sous lequel le service SQL Server est en cours d’exécution. Vous pouvez utiliser le gestionnaire des tâches de Windows pour accéder à ces informations. Recherchez la valeur « Nom d’utilisateur » pour l’exécutable « sqlservr.exe ». En outre, si vous avez récemment modifié le compte de service SQL Server, sachez que la méthode prise en charge pour effectuer cette opération consiste à utiliser l’utilitaire Gestionnaire de configuration SQL Server.

  • Selon le type d’opération (ouverture de bases de données au démarrage serveur, attachement d’une base de données, restauration d’une base de données, etc.), le compte utilisé pour l’emprunt d’identité et l’accès au fichier de base de données peut être différent. Passez en revue la rubrique Sécurisation des fichiers de données et des fichiers journaux pour savoir quelle opération définit quelles autorisations pour quels comptes. Utilisez un outil tel que Windows SysInternals Process Monitor pour déterminer si l’accès au fichier se produit dans le contexte de sécurité du compte de démarrage du service d’instance de SQL Server [ou du SID de service] ou d’un compte avec emprunt d’identité.

    Si SQL Server emprunte les informations d’identification de l’utilisateur de la connexion qui exécute l’opération ALTER DATABASE ou CREATE DATABASE, vous remarquerez les informations suivantes dans l’outil Process Monitor (exemple).

    Date & Time:      3/27/2010 8:26:08 PM
    Event Class:        File System
    Operation:          CreateFile
    Result:                ACCESS DENIED
    Path:                  C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\DATA\attach_test.mdf
    TID:                   4288
    Duration:             0.0000366
    Desired Access:Generic Read/Write
    Disposition:        Open
    Options:            Synchronous IO Non-Alert, Non-Directory File, Open No Recall
    Attributes:          N
    ShareMode:       Read
    AllocationSize:   n/a
    Impersonating: DomainName\UserName
    

Attachement de fichiers résidant sur un stockage connecté au réseau

Si vous ne pouvez pas rattacher une base de données qui réside sur un stockage attaché au réseau, un message similaire à celui-ci peut être consigné dans le Journal des applications.

Msg 5120, Level 16, State 101, Line 1 Unable to open the physical file "\\servername\sharename\filename.mdf". Operating system error 5: (Access is denied.).

Ce problème se produit parce que SQL Server réinitialise les autorisations de fichier lorsque la base de données est détachée. Lorsque vous essayez de rattacher la base de données, une erreur se produit en raison d’autorisations de partage limitées.

Pour résoudre ce problème, effectuez les étapes suivantes :

  1. Utilisez l’option de démarrage-T pour démarrer SQL Server. Utilisez cette option de démarrage pour activer l’indicateur de trace 1802 dans le Gestionnaire de configuration SQL Server (consultez Indicateurs de trace pour plus d’informations sur 1802). Pour plus d’informations sur comment modifier les options de démarrage de service, consultez Options de démarrage du service du Moteur de base de données.

  2. Utilisez la commande suivante pour détacher la base de données.

     exec sp_detach_db DatabaseName
     go 
    
  3. Utilisez la commande suivante pour rattacher la base de données.

    exec sp_attach_db DatabaseName, '\\Network-attached storage_Path\DatabaseMDFFile.mdf', '\\Network-attached storage_Path\DatabaseLDFFile.ldf'
    go