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'
GO
RECONFIGURE WITH OVERRIDE
GO

データベースレベル

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.databases
WHERE name = 'database_name'

image

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

image

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

動作検証用サンプル

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

サンプルスクリプト

-- drop database arithaborttest
-- go
create database arithaborttest
go
set ansi_warnings off
go
use arithaborttest
go
alter database arithaborttest set arithabort on
go
select 1/0
go
alter database arithaborttest set arithabort off
go
select 1/0
go

 

SQLCMD での実行例

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

Skip to main content