徵狀
請試想下列案例:
-
您的資料庫使用的是 Microsoft SQL Server 2008、SQL Server 2008 R2、SQL Server 2012 或 SQL Server 2014 中的 BULK_LOGGED 或 簡單 的恢復模型。
-
您開啟 [ 設定 XACT_ABORT ] 開關。
-
您嘗試在單一分散式交易中執行多個 大容量插入 語句。
在這種情況下, 大容量插入 語句可能失敗,而且您會收到下列錯誤訊息:
位置: pageref:913Expression: IS_OFF (BUF_MINLOGGED,m_buf->bstat) | |pageModifyType! = PageModifyType_Contents | |GetPagePtr ()->IsTextPage () SPID: 56Process ID: 2136Msg 3624、Level 20、State 1、Line 7A 系統斷言檢查已失敗。 如需詳細資訊,請參閱 SQL Server 錯誤記錄。 通常,宣告失敗是由軟體錯誤或資料損毀所導致。 若要檢查資料庫是否損毀,請考慮執行 DBCC CHECKDB。 如果您同意在安裝期間將轉儲傳送至 Microsoft,則會將迷你轉儲傳送至 Microsoft。 您可以在最新 Service Pack 中的 Microsoft 或從技術支援的 QFE 中取得更新。 Msg 0、Level 20、State 0、Line 0,在目前的命令上發生嚴重的錯誤。 結果(如果有的話)應該捨棄。
此外,也可以在 SQL Server 記錄資料夾中產生袖珍轉儲檔案。 注意: 這個問題通常會在使用 SQL Server 整合服務(SSIS)時發生。 例如,如果TransactionOption套件階層屬性設定為 [必要],就會涉及 Microsoft 分散式交易處理協調器(MS DTC),以啟動分散式交易,以及設定 XACT_ABORT [開啟]。
原因
出現此問題的原因是 SQL Server 2008、SQL Server 2008 R2、SQL Server 2012 或 SQL Server 2014 中的錯誤。
解決方案
此問題最初是在 SQL Server 的後續累積更新中修正。
SQL Server 2014 的累積更新1 /en-us/help/2931693
SQL Server 2012 SP1 的累積更新8 /en-us/help/2917531
SQL Server 2008 R2 SP2 累計更新10 /en-us/help/2908087
SQL Server 2008 SP1 累計更新10 /en-us/help/2279604
SQL Server 2008 SP2 累積更新1 /en-us/help/2289254
SQL Server 2008 R2 累積更新5 /en-us/help/2438347
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:
因應措施
若要解決此問題,請將資料庫設定為 完整 的恢復模型。
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。
參考
如需 設定 XACT_ABORT 設定的詳細資訊,請造訪下列 Microsoft 開發人員網路(MSDN)網站:
「設定 XACT_ABORT」設定的一般資訊如需最低記錄作業的詳細資訊,請造訪下列 MSDN 網站:
最低記錄作業的一般資訊如需如何使用事務維護資料完整性的詳細資訊,請造訪下列 MSDN 網站:
如何使用事務來維護資料完整性的一般資訊如需有關 SQL Server 的增量服務模型的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
935897 您可以從 SQL Server 團隊取得增量服務模型,以提供已報告問題的修補程式如需 SQL Server 更新命名架構的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
822499Microsoft SQL Server 軟體更新套件的新命名架構如需軟體更新術語的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
824684 描述 Microsoft 軟體更新所使用的標準術語說明