【原創】INSERT 失敗,因為下列 SET 選項的設置不正確:'ARITHABORT'


錯誤描述: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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM