Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
Birkaç hata durumu için ISO standart davranışını belirtir.
Transact-SQL söz dizimi kuralları
Sözdizimi
SQL Server için söz dizimi, Azure Synapse Analytics'te sunucusuz SQL havuzu, Microsoft Fabric
SET ANSI_WARNINGS { ON | OFF }
Azure Synapse Analytics ve Analytics Platform Sistemi (PDW) için söz dizimi
SET ANSI_WARNINGS ON
Açıklamalar
SET ANSI_WARNINGS aşağıdaki durumları etkiler:
ON olarak ayarlandığında, SUM, AVG, MAX, MIN, STDEV, STDEVP, VAR, VARP veya COUNT gibi toplam fonksiyonlarda null değerler belirdiğinde, bir uyarı mesajı oluşturulur. KAPALı olarak ayarlandığında herhangi bir uyarı verilmez.
ON olarak ayarlandığında, sıfıra bölme ve aritmetik taşma hataları ifadenin geri alınmasına ve hata mesajı oluşturulmasına neden olur. OFF olarak ayarlandığında, sıfıra bölme ve aritmetik taşma hataları null değerlerin geri dönmesine neden olur. Sıfıra bölme veya aritmetik taşma hatasının null değerlerin döndürülmesine neden olduğu davranış, yeni bir değerin uzunluğu sütunun maksimum boyutunu aşan bir karakter, Unicode veya ikili sütunda veya INSERTUPDATE denendiğinde gerçekleşir. Eğer SETSET ANSI_WARNINGS ON'sa, INSERT veya UPDATE ISO standardında belirtildiği gibi iptal edilir. Karakter sütunları için takip eden boşluklar, ikili sütunlar için ise takip eden boşlar göz ardı edilir. KAPALı olduğunda, veri sütunun boyutuna kadar kısılır ve ifade başarılı olur.
Uyarı
Herhangi bir ikili veya varbiner veriye dönüşümde kesinti gerçekleştiğinde, seçenekler ne SET olursa olsun uyarı veya hata verilmez.
Uyarı
ANSI_WARNINGS parametre iletildiğinde bir işlemde, kullanıcı tanımlı fonksiyonda veya toplu ifadede değişkenler ilan edilip ayarlanırken dikkate alınmaz. Örneğin, bir değişken karakter(3) olarak tanımlanırsa ve üç karakterden büyük bir değere ayarlanırsa, veriler tanımlanan boyuta yuvarlanır ve INSERT veya UPDATE deyimi başarılı olur.
Sunucuya tüm bağlantılar için varsayılan ANSI_WARNINGS ayarı ayarlamak için kullanıcı seçenekleri seçeneğini sp_configure kullanabilirsiniz. Daha fazla bilgi için sp_configure (Transact-SQL) bölümüne bakınız.
ANSI_WARNINGS hesaplanan sütunlarda veya indekslenmiş görünümlerde indeksler oluştururken veya manipüle ederken AKONSİK olmalıdır. Eğer SETSET ANSI_WARNINGS OFF'sa, CREATE, UPDATE, INSERTve DELETE hesaplanan sütunlarda veya indekslenmiş görünümlerde indeksli tablolardaki ifadeler başarısız olacaktır. Hesaplanan sütunlarda indekslenmiş görünümler ve indekslerle ilgili gerekli SET seçenek ayarları hakkında daha fazla bilgi için, Statements (Transact-SQL) bölümündekiSET "Cümleleri Kullanırken SET Dikkate Alınan Durumlar" bölümüne bakınız.
SQL Server veritabanı ANSI_WARNINGS seçeneğini içerir. Bu, SET ANSI_WARNINGSeşdeğerdir. ON'da hata SET ANSI_WARNINGS veya uyarılar sıfıra bölme, veritabanı sütunu için fazla büyük dizi ve benzeri hatalar ortaya çıkar. KAPALı olduğunda SET ANSI_WARNINGS , bu hatalar ve uyarılar ortaya çıkmaz. Veritabanında model varsayılan değer KAPALıdır SET ANSI_WARNINGS . Belirtilmemişse, ' ANSI_WARNINGS ayarı uygulanır. Eğer SET ANSI_WARNINGS KAPALıysa, SQL Server sys.databases katalog görünümündeki is_ansi_warnings_on sütununun değerini kullanır.
Önemli
ANSI_WARNINGS dağıtılmış sorguları yürütmek için ON olarak ayarlanmalıdır.
SQL Server Native Client ODBC sürücüsü, SQL Server Native Client OLE DB Provider for SQL Server ve Microsoft JDBC Driver for SQL Server gibi istemciler bağlantı bayrağı ile otomatik olarak ON olarak ANSI_WARNINGS ayarlanır. Bu, ODBC veri kaynaklarında, ODBC bağlantı özelliklerinde, bağlanmadan önce uygulamada ayarlanan şekilde yapılandırılabilir. Varsayılan olarak SET ANSI_WARNINGS DB-Library uygulamalardan gelen bağlantılar için KAPALıdır. Ek bilgi için, Tablolu Veri Akışı (TDS) protokol spesifikasyonlarındaki LOGIN7'ye bakınız.
ON olduğunda ANSI_DEFAULTS etkindir ANSI_WARNINGS .
ayarı ANSI_WARNINGS , ayrıştırma zamanında değil yürütme veya çalışma zamanında tanımlanır. Tüm SET Açıklamalar gibi, SET ANSI_WARNINGS mevcut oturumu etkiler.
Herhangi biri SET ARITHABORT KAPALı SETSET ARITHIGNORE ve SETSET ANSI_WARNINGS AÇIKSA, SQL Server sıfıra bölme veya taşma hatalarıyla karşılaştığında yine de hata mesajı döndürür.
Bu ayarın mevcut ayarını görmek için aşağıdaki sorguyu çalıştırın.
DECLARE @ANSI_WARN VARCHAR(3) = 'OFF';
IF ( (8 & @@OPTIONS) = 8 ) SET @ANSI_WARN = 'ON';
SELECT @ANSI_WARN AS ANSI_WARNINGS;
Permissions
"" genel "" rolüne üyelik gerektirir.
Örnekler
Aşağıdaki örnek, daha önce bahsedilen üç durumu göstermektedir SET ANSI_WARNINGS : AÇIK ve KAPALı.
CREATE TABLE T1
(
a int,
b int NULL,
c varchar(20)
);
GO
SET NOCOUNT ON;
INSERT INTO T1
VALUES (1, NULL, '')
,(1, 0, '')
,(2, 1, '')
,(2, 2, '');
SET NOCOUNT OFF;
GO
Şimdi ON'a ayar ANSI_WARNINGS ve test et.
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
Şimdi ANSI_WARNINGS KAPALı ve test et.
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;