set ARITHABORT (Transact-SQL)

Sorgu yürütme sırasında taşma veya sıfır ile bölme hatası oluştuğunda, bir sorgu sona erdirir.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

SET ARITHABORT { ON | OFF }
[ ; ]

Açıklamalar

set ARITHABORT on set ANSI uyarılar açık ise, bu hata durumları sonlandırmak sorgu neden.set ARITHABORT on ve off set ANSI uyarılar ise, bu hata koşulları toplu iş sonlandırmak neden.Bir işlemde hatalar oluşursa, işlem geri alınır.set ARITHABORT kapalı'dır ve bu hatalar biri oluşur, bir uyarı iletisi görüntülenir ve aritmetik işlem sonucunu null atanır.

Not

set ARITHABORT ya da set ARITHIGNORE kümeise SQL Server null döndürür ve sorgu yürütüldükten sonra bir uyarı iletisi verir.

Veritabanı Uyumluluk düzey 90 küme olduğunda ANSI_WARNINGS on olarak örtülü olarak ayarlanması ARITHABORT on olarak ayarlar.Veritabanı Uyumluluk düzey küme 80 veya daha önceki sürümlerde, ARITHABORT seçeneği açıkça küme açık olmalıdır.

set ARITHABORT kapalı, INSERT, zaman ifade değerlendirme sırasında delete veya update deyim bir aritmetik hata, taşma, bölme sıfır veya bir etki alanı hata karşılaştığında SQL Server ekler veya güncelleştiren bir null değeri.hedefsütun null değilse, INSERT veya update eylem başarısız olur ve kullanıcı bir hata alır.

set ARITHABORT veya ARITHIGNORE set off ve set ANSI_WARNINGS on, varsa SQL Server yine de bir hata iletisi bölme sıfır karşılaşıyor döndürür veya taşma hataları.

set ARITHABORT için off küme ve IF deyim Boole durumunu değerlendirme sırasında durdurma hata oluşur, yanlış şube yürütülür.

Oluştururken veya dizinler üzerinde hesaplanan sütunlar veya dizin oluşturulmuş görünümler değiştirme set ARITHABORT on olması gerekir.set ARITHABORT kapalı ise, dizinler üzerinde hesaplanan sütunlar veya dizin oluşturulmuş görünümler ile tablolar oluşturma, update, INSERT ve delete deyimlerini başarısız olur.Hesaplanan sütunlar üzerinde dizin oluşturulmuş görünümler ve dizinler ile gerekli set seçenek ayarları hakkında daha fazla bilgi için bkz: Sonuçları etkileyen seçeneklerini ayarlama.

set ARITHABORT ayarı yürütmek sırasında küme veya çalışma saat ve ayrıştırma saatzaman.

İzinler

Üyelik gerektiren ortak rolü.

Örnekler

Aşağıdaki örnek, hem de sıfır ile bölme ve Taşma hatalarını gösterir SET ARITHABORT ayarlar.

-- SET ARITHABORT
-------------------------------------------------------------------------------
-- Create tables t1 and t2 and insert data values.
CREATE TABLE t1 (
   a TINYINT, 
   b TINYINT
);
CREATE TABLE t2 (
   a TINYINT
);
GO
INSERT INTO t1 
VALUES (1, 0);
INSERT INTO t1 
VALUES (255, 1);
GO

PRINT '*** SET ARITHABORT ON';
GO
-- SET ARITHABORT ON and testing.
SET ARITHABORT ON;
GO

PRINT '*** Testing divide by zero during SELECT';
GO
SELECT a / b AS ab 
FROM t1;
GO

PRINT '*** Testing divide by zero during INSERT';
GO
INSERT INTO t2
SELECT a / b AS ab  
FROM t1;
GO

PRINT '*** Testing tinyint overflow';
GO
INSERT INTO t2
SELECT a + b AS ab 
FROM t1;
GO

PRINT '*** Resulting data - should be no data';
GO
SELECT * 
FROM t2;
GO

-- Truncate table t2.
TRUNCATE TABLE t2;
GO

-- SET ARITHABORT OFF and testing.
PRINT '*** SET ARITHABORT OFF';
GO
SET ARITHABORT OFF;
GO

-- This works properly.
PRINT '*** Testing divide by zero during SELECT';
GO
SELECT a / b AS ab  
FROM t1;
GO

-- This works as if SET ARITHABORT was ON.
PRINT '*** Testing divide by zero during INSERT';
GO
INSERT INTO t2
SELECT a / b AS ab  
FROM t1;
GO
PRINT '*** Testing tinyint overflow';
GO
INSERT INTO t2;
SELECT a + b AS ab 
FROM t1;
GO

PRINT '*** Resulting data - should be 0 rows';
GO
SELECT * 
FROM t2;
GO

-- Drop tables t1 and t2.
DROP TABLE t1;
DROP TABLE t2;
GO