KB4492899 - 修正:在 SQL Server 2016 和 2017 中啟動資料庫之後,無法存取 FileTable 資料庫層級目錄

Applies To
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

症狀

在 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 用來說明軟體更新的術語。