SET ANSI_WARNINGS (Transact-SQL)
Określa zachowanie standardowe ISO dla kilku warunki wystąpienia błędu.
SET ANSI_WARNINGS { ON | OFF }
Remarks
zestaw ANSI_WARNINGS wpływa na następujące warunki:
Gdy zestaw on, jeśli wartości null są wyświetlane w funkcji agregujących, takich jak SUM, AVG, MAX, MIN, STDEV, STDEVP, VAR, WARIANCJA.POPUL lub COUNT, komunikat ostrzegawczy zostanie wygenerowany.Gdy zestaw dla OFF, ostrzeżenie nie został wystawiony.
Gdy zestaw on, błędy Przepełnienie arytmetyczne i dzielenie przez zero powodują instrukcję, aby można wycofać i generowany jest komunikat o błędzie.Gdy zestaw do OFF, błędy Przepełnienie arytmetyczne i dzielenie przez zero powodują wartości null, które mają zostać zwrócone.Zachowanie, w której błąd dzielenia przez zero lub arytmetyczne przepełnienie powoduje, że wartości null, które mają zostać zwrócone występuje wtedy, gdy to INSERT lub UPDATE zostanie podjęta próba characterUnicode, lub binary Kolumna, w których długość nową wartość przekracza maksymalny rozmiar kolumny. zestaw ANSI_WARNINGS jest włączone, INSERT lub UPDATE jest anulowane określone w normie ISO.Końcowe spacje są ignorowane w wypadku kolumn, znaków i końcowych wartości Null są ignorowane w wypadku kolumn, binarne.Gdy OFF, dane zostaną obcięte do rozmiaru kolumna i instrukcja powiedzie się.
Uwaga
Kiedy obcinania występuje w żadnej konwersji do lub z binary lub varbinary przyznaje się dane, nie ostrzeżenie lub błąd, niezależnie od opcji zestaw.
Uwaga
Nośnik zabezpieczony hasłem może zostać zastąpiony tylko przez ponowne sformatowanie.Na przykład, jeśli zmienna jest zdefiniowana jako char(3), a następnie ustaw na wartość większą niż trzy znaki, danych jest obcinana do określonego rozmiaru i INSERT lub instrukcja UPDATE zakończy się pomyślnie.
Można użyć Opcje użytkownika Opcja sp_configure do zestaw domyślne zestaw ting dla ANSI_WARNINGS dla wszystkich połączeń z serwerem.Aby uzyskać więcej informacji zobacz sp_configure (języka Transact-SQL) lub Setting Server Configuration Options.
zestaw ANSI_WARNINGS musi być włączone, podczas tworzenia lub modyfikowania indeksów dla kolumny obliczanej lub widoków indeksowanych.zestaw ANSI_WARNINGS jest wyłączona, nie będzie instrukcji CREATE, UPDATE, INSERT i DELETE na tabelach z indeksów dla kolumny obliczanej lub widoków indeksowanych.Aby uzyskać więcej informacji dotyczących wymaganych ustawień opcji zestaw z widoków indeksowanych i indeksów na kolumny obliczane zobacz "Zagadnienia podczas podczas Użyj zestaw deklaracji" w SET (Transact-SQL).
SQL Server zawiera ANSI_WARNINGS opcja bazy danych.Jest to równoważne zestaw ANSI_WARNINGS.zestaw ANSI_WARNINGS jest włączone, są wywoływane błędy lub ostrzeżenia dzielenie przez zero, ciąg jest za duży dla kolumna bazy danych i inne podobne błędy.Gdy zestaw ANSI_WARNINGS jest wyłączona, te błędy i ostrzeżenia nie jest uruchamiany.Wartość domyślna w Model bazy danych dla zestaw ANSI_WARNINGS jest wyłączona.Jeśli nie zostanie określony, ustawienia ANSI_WARNINGS dotyczy.Jeśli zestaw ANSI_WARNINGS jest wyłączona, SQL Server używa wartości is_ansi_warnings_on kolumnasys.Databases Służy do wyświetlania katalogu. Aby uzyskać więcej informacji zobaczSetting Database Options.
ANSI_WARNINGS należy ustawić na ON wykonywania kwerendami rozproszonymi.
The SQL Server Native klient ODBC driver and SQL Server Native klient OLE DB dostawca for SQL Server automatically zestaw ANSI_WARNINGS to ON when connecting. ZMIANY WIĘCEJ WYKAZUDomyślną wartością zestaw ANSI_WARNINGS jest wyłączona dla połączeń z biblioteki DB aplikacji.
Gdy ANSI_DEFAULTS zestaw jest włączone, zestaw ANSI_WARNINGS jest włączona.
Ustawiono zestaw ANSI_WARNINGS na wykonać lub uruchomić czas, a nie w czasie analizowania.
Jeśli ARITHABORT zestaw lub zestaw ARITHIGNORE jest wyłączona i zestaw ANSI_WARNINGS jest włączone, SQL Server nadal zwraca komunikat o błędzie, gdy wystąpią błędy dzielenie przez zero lub przepełnienie.
Uprawnienia
Członkostwo w grupie wymaga publiczne roli.
Przykłady
W poniższym przykładzie pokazano trzy sytuacje, które są wcześniej wspomniano, z ANSI_WARNINGS zestaw on i OFF.
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