Jaa


ARITHABORT の設定

ARITHABORT の設定について、既定値や変更方法、設定の確認方法をご紹介します。

ARITHABORT の詳細は、SET ARITHABORT (Transact-SQL) を参照ください。

※内容は、2018 年1月 現在の情報となります。本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。

既定値

アプリケーションによって、セッションの既定値が異なります。主なアプリケーションとして、Management Studio と SQLCMDでは違いがあります。

アプリケーション

既定値

動作

Management Studio ON クエリ実行中にオーバーフローまたは 0 除算のエラーが発生した場合に、クエリを終了させる
SQLCMD OFF クエリ実行中にオーバーフローまたは 0 除算のエラーが発生した場合に、クエリを終了させず、続行する

 

変更方法

サーバーレベル、データベースレベル、セッションレベルでの変更が可能です。

サーバーレベル

EXEC sys.sp_configure N'user options', N'64'GORECONFIGURE WITH OVERRIDEGO

データベースレベル

ALTER DATABASE database_name SET ARITHABORT ON

セッションレベル

SET ARITHABORT ON

 

設定値の確認方法

サーバーレベル、セッションレベルで設定した内容は、次のクエリで確認可能です。

DECLARE @ARITHABORT VARCHAR(3) = 'OFF';IF ( (64 & @@OPTIONS) = 64 ) SET @ARITHABORT = 'ON';SELECT @ARITHABORT AS ARITHABORT;

image

参考情報: SET ARITHABORT (Transact-SQL)

データベースレベルで設定した内容は、次のいずれかのクエリで確認可能です。

SELECT name, is_arithabort_on FROM sys.databasesWHERE name = 'database_name'

image

SELECT DATABASEPROPERTYEX('database_name', 'IsArithmeticAbortEnabled') AS ARITHABORT

image

参考情報: DATABASEPROPERTYEX (Transact-SQL)   sys.databases (Transact-SQL)

動作検証用サンプル

サンプルとして、データベースレベルで設定変更する場合のスクリプトです。

サンプルスクリプト

-- drop database arithaborttest-- gocreate database arithaborttestgoset ansi_warnings offgouse arithaborttestgoalter database arithaborttest set arithabort ongoselect 1/0goalter database arithaborttest set arithabort offgoselect 1/0go

 

SQLCMD での実行例

C:\Tools>sqlcmd -E –Sserver011> drop database arithaborttest2> go1> create database arithaborttest2> go1> set ansi_warnings off2> go1> use arithaborttest2> goデータベース コンテキストが 'arithaborttest' に変更されました。1> alter database arithaborttest set arithabort on2> go1> select 1/02> goメッセージ 8134、レベル 16、状態 1、サーバー server01、行 10 除算エラーが発生しました。1> alter database arithaborttest set arithabort off2> go1> select 1/02> go-----------NULL(1 行処理されました)