KB4492899 - CORRECTIF : Le répertoire au niveau de la base de données FileTable est inaccessible après le démarrage de la base de données en SQL Server 2016 et 2017

S’applique à
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer Windows SQL Server 2017 Enterprise Windows SQL Server 2017 Enterprise Core Windows SQL Server 2017 Standard Windows

Symptômes

Au démarrage de Microsoft SQL Server 2016 et 2017, si un utilisateur tente de se connecter à une base de données avant le démarrage, la session utilisateur peut entraîner le démarrage automatique de la base de données. Dans ce cas, si la base de données contient une table FileTable et que FILESTREAM non_transacted_access est activé, le répertoire FileTable au niveau de la base de données est inaccessible après le démarrage de la base de données. Si vous essayez d’accéder au dossier à l’aide de l’Explorateur de fichiers, cela peut indiquer qu’il n’est pas disponible. Lorsque vous exécutez une commande « dir » à partir de l’invite de commandes, elle renvoie « Le fichier spécifié est introuvable ».

En outre, vous pouvez voir les erreurs suivantes 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 d’ouverture de session : 18456, Gravité : 14, État : 38.

DateTime Échec de la connexion pour l’utilisateur « UserName ». Raison : Échec de l’ouverture de la base de données explicitement spécifiée « DatabaseName ». [CLIENT : IPNumber]

État

Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

Résolution

Ce problème est résolu dans les mises à jour cumulatives suivantes pour SQL Server :

À propos des mises à jour cumulatives pour SQL Server :

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous 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

La solution de contournement à ce problème consiste à désactiver et à réactiver la non_transacted_access FILESTREAM de la base de données.

ALTER DATABASE [DatabaseName] DÉFINIR SINGLE_USER AVEC LA RESTAURATION IMMÉDIATE

ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF )

ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL )

ALTER DATABASE [DatabaseName] DÉFINIR MULTI_USER AVEC ROLLBACK IMMEDIATE

Références

En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.