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 utilisateur
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.
Accès 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 le contrôle d’accès sur les différentes 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. Vérifiez que le groupe Windows inclut réellement le compte de démarrage du service SQL Server ou le SID de service.
Passez en revue 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 (un 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 car 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 :
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.
Utilisez la commande suivante pour détacher la base de données.
exec sp_detach_db DatabaseName go
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