10

NHibernate と SQL Server 2005 を使用しており、テーブルの 1 つで計算列にインデックスを作成しています。

私の問題は、そのテーブルにレコードを挿入すると、次のエラーが発生することです。

次の SET オプションの設定が正しくないため、INSERT が失敗しました: 'ARITHABORT'

挿入の前に使用SET ARITHABORT ON;していますが、まだこのエラーがあります。

4

5 に答える 5

9

計算列を含むテーブルへの挿入には、次の設定オプションが必要です。

NUMERIC_ROUNDABORT オプションを OFF に設定し、次のオプションを ON に設定する必要があります。

ANSI_NULLS
ANSI_PADDING
ANSI_WARNINGS
ARITHABORT
CONCAT_NULL_YIELDS_NULL
QUOTED_IDENTIFIER

挿入の前にこれを追加してみてください:

set NUMERIC_ROUNDABORT off
set ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER on

insert ...
于 2013-02-19T09:40:31.727 に答える
1

また、アプリケーションからストアド プロシージャ (レコードを更新する) を実行しているときにこのエラーが発生し、これで問題が解決しました: https://support.microsoft.com/en-us/kb/305333

基本的に、ストアドプロシージャを実行する前にこのコードセットを追加しました

sqlConn = New SqlConnection(connectionString)
If sqlConn.State = ConnectionState.Closed Then sqlConn.Open()

sqlCmd = New SqlCommand()
With sqlCmd
   .Connection = sqlConn
   .CommandType = CommandType.text
   .CommandText = "SET ARITHABORT ON"
   .ExecuteNonQuery()

   .CommandType = CommandType.StoredProcedure
   .CommandText = "MY PROCEDURE"
   .ExecuteNonQuery()
End With

これが誰かに役立つことを願っています。

于 2015-07-22T02:51:33.487 に答える
1

SQL Server Mgt Studio を開き、サーバー名を右クリックして [プロパティ] を選択し、[接続] タブを開き、算術中止オプションを確認します。

于 2015-06-11T06:50:46.353 に答える
0

データベース オプションを変更できるため、SET オプションはグローバルに使用できます。

    ALTER DATABASE [$(DatabaseName)]
        SET ANSI_NULLS OFF,
            ANSI_PADDING OFF,
            ANSI_WARNINGS OFF,
            ARITHABORT OFF,
            CONCAT_NULL_YIELDS_NULL OFF,
            NUMERIC_ROUNDABORT OFF,
            QUOTED_IDENTIFIER OFF 
        WITH ROLLBACK IMMEDIATE;
于 2015-04-13T20:49:05.903 に答える