錯誤描述:DELETE 失敗,因為下列 SET 選項的設置不正確:'ARITHABORT'。請確保 SET 選項可正確用於計算列和/或查詢通知和/或 xml 數據類型方法的索引視圖和/或索引。
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: DELETE 失敗,因為下列 SET 選項的設置不正確:'ARITHABORT'。請確保 SET 選項可正確用於計算列和/或查詢通知和/或 xml 數據類型方法的索引視圖和/或索引。
錯誤原因:
當你在SQL Server上試圖更新一個索引視圖引用的表時,你可能回收到如下有錯誤
INSERT 失敗,因為下列 SET 選項的設置不正確: 'ARITHABORT'
在計算列或索引視圖上創建或操作索引時,SET ANSI_NULLS 也必須為 ON。如果 SET ANSI_NULLS 為 OFF,計算列或索引視圖上帶索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 語句將失敗。SQL Server 將返回一個錯誤,列出所有違反所需值的 SET 選項。另外,在執行 SELECT 語句時,如果 SET ANSI_NULLS 為 OFF,則 SQL Server 將忽略計算列或視圖上的索引值並解析選擇,就好象表或視圖上沒有這樣的索引一樣.
解決方案:
1.你可以在TSQL前Set ARITHABORT ON,代碼如下
Set ARITHABORT ON
GO
INSERT INTO ta ..
2.在ADO.NET中,你可以這樣來寫(C#代碼)
MyConnection.Execute("SET ARITHABORT ON");
如果以上你都覺得很麻煩或由於一些原因沒法更改,你可以嘗試修改SQL Server服務器選項
3.exec sp_dboption 'yourdb','ARITHABORT','true'
還可以
4.ALTER DATABASE db_bpms SET ARITHABORT ON