Aracılığıyla paylaş


set ANSI_WARNINGS (Transact-SQL)

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

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

Sözdizimi

SET ANSI_WARNINGS { ON | OFF }

Açıklamalar

set ANSI_WARNINGS, aşağıdaki koşullar etkiler:

  • İşlevler küme null değerleri toplu içinde görünüyorsa, açık, sum, avg, max, MIN, STDSAPMA, STDSAPMAS, var, VARS veya Say gibi bir uyarı iletisi oluşturulur.Ne zaman küme için off hiçbir uyarı yapılmamıştır.

  • Sıfır ile bölme ve aritmetik taşma hataları küme için on neden olduğunda geri alınmasını deyim ve bir hata iletisi oluşturulur.Ne zaman küme için off döndürülmesi için null değerleri sıfır ile bölme ve aritmetik taşma hatalarına neden.İçinde bir bölme sıfır veya aritmetik taşma hatası neden döndürülmesi için null değerleri davranış ortaya bir INSERT veya update çalışmış bir character, Unicode veya binary sütun içinde yeni bir değer uzunluğunu aşıyor sütunen büyük boyutu.INSERT veya update set ANSI_WARNINGS on olarak ayarlanmışsa, iptal ISO standardı tarafından belirtildiği gibi.Character sütunları için arkadaki boşluklar yoksayılır ve sondaki boş değerlere ikili sütunlar için yoksayılır.Ne zaman kapalı, veri sütun boyutunu kesilir ve deyim başarılı olur.

    Not

    Kesilme oluştuğunda herhangi dönüştürme uygulamaya veya bu uygulamadan binary veya varbinary verileri, herhangi bir uyarı veya hata verildiği, ne olursa olsun set seçenekleri.

    Not

    ANSI_WARNINGS, bir saklı yordam, kullanıcı tanımlı işlevparametreleri iletmek veya bildirmek ve toplu iş deyimdeğişkenlerini ayarlama ödenen değil.Örneğin, bir değişken olarak tanımlanır, char(3)ve sonra küme üç karakterden daha büyük bir değere, tanımlanan boyutu ve eklemek için veriler kesildi veya update deyim başarılı.

Kullanabileceğiniz user options seçeneği sp_configure ANSI_WARNINGS sunucu tüm bağlantılar için varsayılan ayarı küme içinDaha fazla bilgi için, bkz. sp_configure (Transact-SQL) veya Sunucu yapılandırma seçenekleri ayarlama.

Oluştururken veya dizinler üzerinde hesaplanan sütunlar veya dizin oluşturulmuş görünümler işlemek set ANSI_WARNINGS on olması gerekir.set ANSI_WARNINGS 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."Değerlendirmeleri yaparken, kullanım AYARLAMAK Statements" 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: in set seçenekleri (Transact-SQL).

SQL Serveriçeren ANSI_WARNINGS veritabanı seçeneği.Bu set ANSI_WARNINGS için eşdeğerdir.set ANSI_WARNINGS on olarak ayarlandığında, hata veya uyarılar, bölme sıfır, dize veritabanı sütuniçin çok büyük ve diğer benzer hatalar üretilir.set ANSI_WARNINGS kapalı olduğunda, bu hatalar ve uyarılar oluşturuldu değil.Varsayılan değer model veritabanı için set ANSI_WARNINGS kapalı olduğundanBelirtilmezse, ayarı ANSI_WARNINGS geçerlidir.set ANSI_WARNINGS kapalı, ise SQL Server değerini kullanır is_ansi_warnings_on sütun sys.databases Katalog görünümü.Daha fazla bilgi için, bkz. Veritabanı seçeneklerini ayarlama.

ANSI_WARNINGS küme açık dağıtılmış sorguları yürütme için olmalıdır.

SQL Server Yerel istemci odbc sürücüsü ve SQL Server yerel istemci ole DB sağlayıcısı için SQL Server otomatik olarak küme ANSI_WARNINGS bağlanırken açık.Bu odbc veri kaynaklarında, odbc bağlantı özniteliklerini veya ole DB bağlantı özelliklerini küme bağlanmadan önce uygulamasındaki yapılandırılabilir.ANSI_WARNINGS AYARLAMAK için off DBbağlantılarını varsayılır-kitaplık uygulamaları.

set ANSI_WARNINGS ANSI_DEFAULTS set on olduğunda etkinleştirilir.

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

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ı.

İzinler

Üyelik gerektiren public rolü.

Örnekler

Aşağıdaki örnek, daha önce açık set ANSI_WARNINGS ile açıklanan üç durumlarda gösterir ve kapalı.

USE AdventureWorks2008R2;
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