küme ANSI_WARNINGS (Transact-SQL)

Birkaç hata koşulları için ISO standart davranışını belirtir.

Topic link iconTransact-SQL sözdizimi kuralları

SET ANSI_WARNINGS { ON | OFF }

Remarks

küme ANSI_WARNINGS, aşağıdaki koşullar etkiler:

  • Zaman küme ON, null değerleri toplamak işlevleri (SUM, AVG, MAX, MIN, STDSAPMA, STDSAPMAS, VAR, VARP veya, COUNT gibi görünen bir uyarı iletisi oluşturulur.Zaman küme için OFF, hiçbir uyarı yapılmamıştır.

  • Zaman küme ON için deyimn geri alınmasını bölme sıfır değilse ve aritmetik taşma hataları neden ve bir hata iletisi oluşturulur.Zaman küme OFF, sıfıra bölme'ı ve aritmetik taşma hataları döndürülecek null değerleri neden.Bir INSERT veya UPDATE çalışmış, bir bölme sıfır ya da aritmetik taşma hatası döndürülecek null değerleri neden olan davranış bir characterUnicode veya binary sütun içinde yeni bir değer uzunluğunu sütunun en büyük boyutu aşıyor. INSERT veya UPDATE küme ANSI_WARNINGS AÇıK, iptal ISO standardı ile belirtilen.Izleyen boşluk karakteri sütunlar için dikkate alınmaz ve sonunda boşluk, ikili sütunlar için yoksayılır.KAPALı, veriler için kesildi, sütun ve deyim boyutunu başarılı olur.

    Not

    Veya herhangi bir dönüştürme, kesme oluşuyor binary veya varbinary küme seçenekleri dikkate almadan verileri, herhangi bir uyarı veya hata verilir.

    Not

    Bir tam dosya oluşturma yedek, ikincil dosya gruplarıÖrneğin, bir değişken olarak tanımlanmış olması durumunda char(3)ve üç karakterden daha büyük bir değere ayarlanırsa verileri tanımlı boyutunu ve INSERT kesiliyor veya UPDATE deyim başarılı.

Kullanabileceğiniz Kullanıcı seçenekleri seçeneğisp_configure için küme varsayılan küme ting ANSI_WARNINGS için sunucuya bağlantılarda tüm.Daha fazla bilgi için bkz: sp_configure (Transact-SQL) veya Sunucu yapılandırma seçenekleri ayarlama.

Oluştururken veya hesaplanmış sütunları ya da dizin oluşturulmuş görünümler dizinlerde işleme küme ANSI_WARNINGS AÇıK olması gerekir.küme ANSI_WARNINGS 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 "Konuları, size kullan küme Statements" konusuna bakın. küme (Transact-SQL).

SQL Server içeren ansi_warnings veritabanı seçeneği.Bu işlem için küme ANSI_WARNINGS eşdeğerdir.küme ANSI_WARNINGS AÇıK olduğunda, hata veya uyarı sıfıra bölme, veritabanı sütun için çok büyük bir dize ve diğer benzer hatalar oluşturuldu.küme ANSI_WARNINGS KAPALı olduğunda, bu hatalar ve uyarılar oluşturuldu değil.Varsayılan değer modeli veritabanı için küme ANSI_WARNINGS KAPALı'dır.Ayarı, belirtildiği takdirde ansi_warnings uygulanır.küme ANSI_WARNINGS, KAPALı ise SQL Server değerini kullanan is_ansi_warnings_on sütunsys.Databases kataloğunu görüntüleyin.Daha fazla bilgi için bkz:Veritabanı seçeneklerini ayarlama.

Dağıtılmış sorgular çalıştırmak için ANSI_WARNINGS ON olarak ayarlanması gerekir.

The SQL Server Native istemci ODBC driver and SQL Server Native istemci OLE DB sağlayıcı for SQL Server automatically küme ANSI_WARNINGS to ON when connecting. Bu, ODBC veri kaynaklarında, bağlantı özniteliklerini ODBC veya OLE DB bağlantı özelliklerini yapılandırılabilir küme bağlanmadan önce uygulamadaki.küme ANSI_WARNINGS için KAPALı DB-Library uygulamalardan gelen bağlantılar için varsayılandır.

küme ANSI_DEFAULTS AÇıK olduğunda, küme ANSI_WARNINGS etkinleştirilir.

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

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.

İzinler

Üyelik gerektirir Ortak roldür.

Örnekler

Aşağıdaki örnek, üç gibi durumlarda daha önce açık küme ANSI_WARNINGS ile belirtilen gösterir ve KAPALı.

USE AdventureWorks;
GO

CREATE TABLE T1 (
   a INT, 
   b INT NULL, 
   c VARCHAR(20)
);
GO

SET NOCOUNT ON

INSERT INTO T1 
VALUES (1, NULL, '');
INSERT INTO T1 
VALUES (1, 0, '');
INSERT INTO T1 
VALUES (2, 1, '');
INSERT INTO T1 
VALUES (2, 2, '');

SET NOCOUNT OFF;
GO
  
PRINT '**** Setting ANSI_WARNINGS ON';
GO
  
SET ANSI_WARNINGS ON;
GO
  
PRINT 'Testing NULL in aggregate';
GO
SELECT a, SUM(b) 
FROM T1 
GROUP BY a;
GO
  
PRINT 'Testing String Overflow in INSERT';
GO
INSERT INTO T1 
VALUES (3, 3, 'Text string longer than 20 characters');
GO
  
PRINT 'Testing Divide by zero';
GO
SELECT a / b AS ab 
FROM T1;
GO
  
PRINT '**** Setting ANSI_WARNINGS OFF';
GO
SET ANSI_WARNINGS OFF;
GO
  
PRINT 'Testing NULL in aggregate';
GO
SELECT a, SUM(b) 
FROM T1 
GROUP BY a;
GO
  
PRINT 'Testing String Overflow in INSERT';
GO
INSERT INTO T1 
VALUES (4, 4, 'Text string longer than 20 characters');
GO
SELECT a, b, c 
FROM T1
WHERE a = 4;
GO

PRINT 'Testing Divide by zero';
GO
SELECT a / b AS ab 
FROM T1;
GO

DROP TABLE T1