Ustaw ANSI_WARNINGS (Transact-SQL)
Określa zachowanie standard ISO dla kilku warunków błędów.
Składnia
SET ANSI_WARNINGS { ON | OFF }
Uwagi
Ustaw ANSI_WARNINGS wpływa na następujące warunki:
Gdy zestaw na, jeśli wartości null są wyświetlane w wartość zagregowana funkcje takie jak Suma, średnia, MAX, MIN, STDEV, STDEVP, VAR, VARP lub liczba, generowany jest komunikat ostrzegawczy.Gdy zestaw na wyłączone, nie ostrzeżenie.
Gdy zestaw na, powodują błędy przepełnienie arytmetyczne i dzielenie przez zero jest generowana instrukcja , aby wycofać i komunikat o błędzie.Gdy zestaw na wyłączone, błędy przepełnienie arytmetyczne i dzielenie przez zero spowodować wartości null mają być zwrócone.Zachowanie, w którym błąd dzielenia przez zero lub przepełnienie arytmetyczne powoduje, że wartości null mają być zwrócone występuje, gdy INSERT lub UPDATE zostanie podjęta próba character, Unicode, lub binary kolumna , w której długość nową wartość przekracza maksymalny rozmiar kolumna.Jeśli ANSI_WARNINGS ustawienie jest włączone, INSERT lub UPDATE zostanie anulowane jak określono w normie ISO.Końcowe spacje są ignorowane w wypadku kolumn znaków i końcowe wartości Null są ignorowane w wypadku kolumn binarny.Kiedy, dane zostaną obcięte do rozmiaru kolumna i instrukcja zakończy się pomyślnie.
Ostrzeżenie
Kiedy obcięte w żadnej konwersji do lub z binary lub varbinary danych, nie błąd lub ostrzeżenie zostało wydane, niezależnie od ustawienia opcji.
Ostrzeżenie
Nie jest honorowane ANSI_WARNINGS, przekazując parametry procedura składowana, zdefiniowanej przez użytkownika funkcjalub deklarowania i ustawiania zmiennych winstrukcja partia. Na przykład, jeśli zmienna jest zdefiniowana jako char(3), a następnie zestaw na wartość większą niż trzy znaki, dane są obcięte zdefiniowany rozmiar i WSTAW lub instrukcja UPDATE zakończy się pomyślnie.
Można użyć user options opcji sp_configure zestaw domyślne ustawienie ANSI_WARNINGS dla wszystkich połączeń do serwera.Aby uzyskać więcej informacji, zobacz sp_configure (języka Transact-SQL) lub Ustawianie opcji konfiguracji serwera.
Ustaw ANSI_WARNINGS musi być ON podczas tworzenia lub manipulowania indeksów dla kolumny obliczanej lub widoki indeksowane.Jeśli USTAWIONA ANSI_WARNINGS jest wyłączona, instrukcji CREATE, UPDATE, INSERT i DELETE na tabelach z indeksów dla kolumny obliczanej lub widoki indeksowane nie powiedzie się.Aby uzyskać więcej informacji o wymagane ustawienia opcji zestaw Widoki indeksowane i indeksy kolumny obliczane zobacz "Zagadnienia podczas możesz użycia zestawu sprawozdań" in ZESTAW instrukcji (Transact-SQL).
SQL Serverzawiera ANSI_WARNINGS opcji bazy danych.Jest to równoważne ANSI_WARNINGS zestawu.Ustaw ANSI_WARNINGS jest włączone, są wywoływane błędy lub ostrzeżenia dzielenie przez zero, ciąg za duży dla kolumnabazy danych i inne podobne błędy.Gdy ANSI_WARNINGS USTAWIONY jest wyłączona, te błędy i ostrzeżenia nie są wywoływane.Wartość domyślna w model bazy danych, aby USTAWIĆ ANSI_WARNINGS jest wyłączony.Jeśli nie określono, ustawienie ANSI_WARNINGS dotyczy.Jeśli USTAWIONA ANSI_WARNINGS jest wyłączona, SQL Server używa wartości is_ansi_warnings_on kolumna w sys.databases katalogu widoku.Aby uzyskać więcej informacji, zobacz Ustawianie opcji bazy danych.
ANSI_WARNINGS powinno być zestaw na wykonywanie kwerend rozproszonych.
SQL Server Sterownika ODBC macierzystym klienta i SQL Server macierzystego klienta OLE DB Provider for SQL Server automatycznie zestaw ANSI_WARNINGS on podczas łączenia.Można również skonfigurować w źródeł danych ODBC w atrybuty połączenia ODBC lub OLE DB połączenia właściwości zestaw w aplikacji przed połączeniem.Domyślne ustawienie ANSI_WARNINGS jest wyłączona dla połączeń z DB— aplikacje biblioteczne.
Gdy ustawienie ANSI_DEFAULTS jest włączone, ustawienie ANSI_WARNINGS jest włączona.
Ustawienie ANSI_WARNINGS USTAWIONY jest zestaw na wykonać lub czas jednostkowy i nie analizować czas.
Jeśli zestawu ARITHABORT lub ARITHIGNORE USTAWIONA jest wyłączenie i zestawu ANSI_WARNINGS jest włączone, SQL Server nadal zwraca komunikat o błędzie, gdy wystąpią dzielenie przez zero lub przepełnienie błędy.
Uprawnienia
Wymaga członkostwa w public rolę.
Przykłady
Poniższy przykład ilustruje trzech sytuacjach wymienionych wcześniej, z zestawu ANSI_WARNINGS on i OFF.
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