徵狀
當您在 Microsoft SQL Server 2008、SQL Server 2008 R2、SQL Server 2012 或 SQL Server 2014 中查詢二進位大型物件(BLOB)欄資料時,您可能會收到下列錯誤:
錯誤:5180無法開啟 [檔案控制銀行] (FCB),找出資料庫 [tempdb] 中的無效檔案 ID 0。 確認檔案位置。 執行 DBCC CHECKDB。
原因
發生這個問題是因為 SQL Server 在讀取 BLOB 資料時,沒有適當地處理(取消)訊息。 這個問題只會在停用內部記憶體中的 BLOB 緩衝時發生。 停用快取時,快取資料會切換到資料庫 tempdb。 此後,SQL Server 會從資料庫 tempdb (而非記憶體中的快取)中讀取 BLOB 資料。 視 BLOB 資料大小或伺服器記憶體情況而定,內部記憶體中的 BLOB 快取是停用。
解決方案
此問題最初是在 SQL Server 的後續累積更新中修正。
SQL Server 2012 SP2 累積更新2 /en-us/help/2983175
SQL Server 2012 SP1 累積更新11 /en-us/help/2975396
針對 SQL Server 2008 R2 SP2 累積更新13 /en-us/help/2967540
SQL Server 2014 的累積更新2 /en-us/help/2967546
SQL Server 2008 SP3 的累積更新17 /en-us/help/2958696
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。