現象
Microsoft SQL Server 2016 および 2017 の起動時に、ユーザーがデータベースを起動する前にデータベースに接続しようとすると、ユーザー セッションによってデータベースが自動起動される可能性があります。 この場合、データベースに FileTable が含まれており、FILESTREAM non_transacted_access が有効になっている場合、データベースの起動後にデータベース レベルの FileTable ディレクトリにアクセスできなくなります。 エクスプローラーを介してフォルダーにアクセスしようとすると、フォルダーが使用できないことを示している可能性があります。 コマンド プロンプトから "dir" コマンドを実行すると、"指定されたファイルが見つかりません" というメッセージが返されます。
さらに、ユーザー セッションによってデータベースの自動起動がトリガーされたことを示す次のエラーがエラー ログに表示される場合があります。
Datetime ログオン エラー: 18456、重大度: 14、状態: 38。
Datetime ユーザー 'UserName' のログオン ログインに失敗しました。 理由: 明示的に指定されたデータベース 'DatabaseName' を開けませんでした。 [CLIENT: IPNumber]
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。
解決策
この問題は、SQL Serverの次の累積的な更新プログラムで修正されています。
SQL Serverの累積的な更新プログラムについて:
SQL Serverの各新しい累積的な更新プログラムには、すべての修正プログラムと、以前の累積的な更新プログラムに含まれていたすべてのセキュリティ修正プログラムが含まれています。 SQL Serverの最新の累積的な更新プログラムを確認してください。
回避策
この問題の回避策は、データベースの FILESTREAM non_transacted_accessを無効にして再度有効にすることです。
ALTER DATABASE [DatabaseName] SET SINGLE_USER ROLLBACK IMMEDIATE
ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF )
ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL )
ALTER DATABASE [DatabaseName] SET MULTI_USER ROLLBACK IMMEDIATE
参考資料
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。