Aracılığıyla paylaş


küme ARITHABORT (Transact-SQL)

Sorgu yürütülürken bir taşma ya da sıfıra bölme hatası oluştuğunda, sorguda sona erdirir.

Topic link iconTransact-SQL sözdizimi kuralları

SET ARITHABORT { ON | OFF }
[ ; ]

Remarks

küme ARITHABORT AÇıK'tır ve küme ANSI UYARıLAR AÇıK olduğundan, bu hata koşulu sona erdirmek sorgu neden.küme ARITHABORT AÇıK'tır ve ANSI UYARıLAR küme KAPALı'dır, bu hata koşulu sona erdirmek toplu iş neden.Işlemde Hatalar oluşursa hareketi geri döndürülüyor.küme ARITHABORT KAPALı'dır ve bu hatalardan biri oluşur, bir uyarı iletisi görüntülenir ve NULL Aritmetik işlem sonucu atanır.

Not

küme ARITHABORT ya da küme ARITHIGNORE, ayarlanmışsa SQL Server NULL döndürüyor ve sorgu yürütüldükten sonra bir uyarı iletisi verir.

küme ting ANSı_WARNıNGS'IÇIN örtülü olarak küme s veritabanı uyumluluk düzey olduğunda açık ARITHABORT ON küme 90.Veritabanı uyumluluk düzey 80 veya daha önceki ayarlı ise, ON ARITHABORT seçeneği açıkça ayarlanmalıdır.

küme ARITHABORT, INSERT, KAPALı, olduğunda ifade değerlendirme sırasında DELETE veya UPDATE ifade bir aritmetik hata, taşma, sıfıra bölme veya bir etki alanı hata karşılaşır SQL Server ekler veya bir NULL değeri güncelleştirir. Hedef sütun null değilse, ekleme veya güncelleştirme işlemi başarısız olur ve kullanıcı bir hata alır.

küme ARITHABORT veya küme ARITHIGNORE KAPALı'dır ve ON, küme ansı_warnıngs SQL Server yine de hata iletisi sıfıra bölme veya taşma hataları oluşuyor döndürür.

küme ARITHABORT KAPALı olarak küme ve Boole koşul bir IF ifadesinin sırasında değerlendirmeyi durdurma hata oluşur, YANLıŞ şube yürütülür.

Oluştururken veya hesaplanmış sütunları ya da dizin oluşturulmuş görünümler dizinleri değiştirme küme ARITHABORT AÇıK olması gerekir.küme ARITHABORT KAPALı'dır, dizinleriyle hesaplanan sütunlar veya dizin oluşturulmuş görünümler tabloları CREATE, UPDATE, INSERT ve DELETE deyimlerini başarısız olur.Hesaplanmış bir sütun üzerinde dizin oluşturulmuş görünümler ve dizinler gerekli küme seçenek ayarları hakkında daha fazla bilgi için bkz: sonuçlar etkiler, küme seçenekleri.

küme ARITHABORT ayarını ayarlayın yürütmek veya saat ve çözümleme saat değil.

İzinler

Üyelik gerektirir Ortak roldür.

Örnekler

Aþaðýdaki örnek, her ikisi de sıfır ile bölme ve taşma hataları 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