Symptômes
Au démarrage de Microsoft SQL Server 2016 et 2017, si un utilisateur tente pour se connecter à une base de données avant son démarrage, la session utilisateur peut entraîner le la base de données doit être démarrée automatiquement. Lorsque cela se produit, si la base de données contient une Le dump peut être activé et NON_TRANSACTED_ACCESS FileStream, puis au niveau de la base de données. Le répertoire de la base de données n’est pas accessible après le démarrage de la base de données. Si vous essayez d’accéder au dossier via l’Explorateur de fichiers, il est possible que le dossier soit pas disponible. Lorsque vous exécutez une commande « dir » à partir de l’invite de commandes, elle renvoie « le système ne trouve pas le fichier spécifié ».
Par ailleurs, il est possible que les erreurs suivantes apparaissent dans le journal des erreurs indiquant qu’une session utilisateur a déclenché le démarrage automatique de la base de données :
DateTime Erreur de connexion : 18456, gravité : 14, État : 38.
DateTime Échec de la connexion d’ouverture de session pour le nom d'utilisateur. Raison : échec de l’ouverture de la base de données explicitement spécifiée « NomBaseDeDonnées ». [CLIENT : IPNumber]
Statut
Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Résolution
Ce problème a été résolu dans les mises à jour cumulatives de SQL Server suivantes :
À propos des mises à jour cumulatives pour SQL Server :
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Solution de contournement
Pour résoudre ce problème, il est possible de désactiver et réactiver la non_transacted_access FILESTREAM de la base de données.
MODIFIER une base de données [DatabaseName] définir SINGLE_USER avec la fonction Rollback immédiate
MODIFIER une base de données [DatabaseName] définir FILESTREAM (NON_TRANSACTED_ACCESS = désactivé)
ALTER DATABASE [DatabaseName] Set FILESTREAM (NON_TRANSACTED_ACCESS = Full)
MODIFIER une base de données [DatabaseName] définir MULTI_USER avec la fonction Rollback immédiate
Références
En savoir plus sur leterminologie utilisée par Microsoft pour décrire les mises à jour logicielles.