Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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; |
参考情報: SET ARITHABORT (Transact-SQL)
データベースレベルで設定した内容は、次のいずれかのクエリで確認可能です。
SELECT name, is_arithabort_on FROM sys.databasesWHERE name = 'database_name' |
SELECT DATABASEPROPERTYEX('database_name', 'IsArithmeticAbortEnabled') AS ARITHABORT |
参考情報: 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 行処理されました) |