症狀
在 Microsoft SQL Server 2016 和 2017 啟動期間,如果使用者嘗試在資料庫啟動前連線到資料庫,使用者工作階段可能會導致資料庫自動啟動。 發生這種情況時,如果資料庫包含 FileTable 且已啟用 FILESTREAM non_transacted_access ,則資料庫啟動後將無法存取資料庫層級 FileTable 目錄。 如果您嘗試透過檔案總管存取資料夾,可能表示該資料夾無法使用。 當您從命令提示字元執行「dir」命令時,它傳回 「系統找不到指定的檔案」。
此外,您可能會在錯誤記錄檔中看到下列錯誤,表示使用者工作階段觸發資料庫自動啟動:
日期時間 登入錯誤:18456,嚴重性:14,狀態:38。
日期時間 登入 使用者 'UserName' 登入失敗。 原因:無法開啟明確指定的資料庫 'DatabaseName'。 [用戶端: IPNumber]
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
解決方式
此問題已在下列 SQL Server 累積更新中修正:
關於 SQL Server 的累積更新:
SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:
因應措施
此問題的解決方法是停用並重新啟用資料庫的 FILESTREAM non_transacted_access。
ALTER DATABASE [DatabaseName] 使用 ROLLBACK IMMEDIATE 設定SINGLE_USER
ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF )
ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL )
ALTER DATABASE [DatabaseName] 使用 ROLLBACK IMMEDIATE 設定MULTI_USER
參考資料
了解 Microsoft 用來說明軟體更新的術語。