Ustaw spowodowałyby (Transact-SQL)

Formanty sposób kolumna przechowuje wartości krótszy niż zdefiniowany rozmiar kolumnai sposób, w kolumna są przechowywane wartości, które mają końcowe czyszczący w char, varchar, binary, i varbinary danych.

Ważna informacjaWażne:

W przyszłej wersja programu Microsoft SQL Server spowodowałyby zawsze będzie ON i wszystkie aplikacje, że jawnie zestaw opcję OFF powoduje wygenerowanie błędu.Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

SET ANSI_PADDING { ON | OFF }

Uwagi

Kolumny zdefiniowane za pomocą char, varchar, binary, i varbinary typy danych mają zdefiniowany rozmiar.

To ustawienie dotyczy tylko definicję nowe kolumny.Po utworzeniu kolumna SQL Server przechowuje wartości na podstawie ustawienia podczas tworzenia kolumna .Później zmiana tego ustawienia nie wpływa na istniejących kolumn.

Ostrzeżenie

Zaleca się, że spowodowałyby być zawsze zestaw na.

W poniższej tabela przedstawiono skutków ustawienie ustawianie spowodowałyby podczas wstawiania wartości w kolumnach z char, varchar, binary, i varbinary typów danych.

Ustawienie

CHAR (n) nie NULL lub binarny (n) NOT NULL

CHAR (n) wartość NULL lub binarny (n) NULL

varchar (n) lub varbinary (n)

NA

Konsola oryginalnej wartości (z końcowe spacje dla char kolumny i końcowe zera dla binary kolumny) do długości kolumna.

Następuje w tym samym zasadom, char(n) lub binary(n) NOT NULL, gdy spowodowałyby USTAWIONA jest na.

Końcowe spacje wstawione do wartości znaku varchar kolumny nie zostaną obcięte.Końcowe zera w wartości binarnych wstawione do varbinary kolumny nie zostaną obcięte.Wartości nie są wyściełane, by długość kolumna.

WYŁĄCZANIE

Konsola oryginalnej wartości (z końcowe spacje dla char kolumny i końcowe zera dla binary kolumny) do długości kolumna.

Następuje w tym samym zasadom, varchar lub varbinary podczas spowodowałyby USTAWIONY jest wyłączony.

Końcowe spacje wstawione do wartości znaku varchar kolumna zostaną obcięte.Końcowe zera w wartości binarnych wstawione do varbinary kolumna zostaną obcięte.

Ostrzeżenie

Gdy wyściełane, char kolumny są wypełniane znakami spacji, a binary kolumny są wypełniane zerami.Po przycięciu, char kolumny mają spacje końcowe przycięte, a binary kolumny mają końcowe zera przycięta.

Ustaw spowodowałyby musi być ON podczas tworzenia lub zmieniania indeksów dla kolumny obliczanej lub widoki indeksowane.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).

Domyślne ustawienie spowodowałyby jest włączone.SQL Server Sterownika ODBC macierzystym klienta i SQL Server macierzystego klienta OLE DB Provider for SQL Server automatycznie zestaw spowodowałyby 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 spowodowałyby jest wyłączona dla połączeń z DB— aplikacje biblioteczne.

Ustaw spowodowałyby nie wpływa na nchar, nvarchar, ntext, text, imagei dużą wartość.Zachowanie Ustaw na spowodowałyby są zawsze wyświetlane.Oznacza to końcowe spacje i zer nie zostaną obcięte.

Gdy ustawienie ANSI_DEFAULTS jest włączone, ustawienie spowodowałyby jest włączona.

Ustawienie spowodowałyby USTAWIONY jest zestaw na wykonać lub czas jednostkowy i nie analizować czas.

Kiedy spowodowałyby zestaw na OFF kwerend obejmujących MIN, MAX lub TOP w kolumnach znaków może być wolniejsze niż w SQL Server 2000.

Uprawnienia

Wymaga członkostwa w public rolę.

Przykłady

W poniższym przykładzie pokazano, jak ustawienie wpływa na każdym z tych typów danych.

PRINT 'Testing with ANSI_PADDING ON'
SET ANSI_PADDING ON;
GO

CREATE TABLE t1 (
   charcol CHAR(16) NULL, 
   varcharcol VARCHAR(16) NULL, 
   varbinarycol VARBINARY(8)
);
GO
INSERT INTO t1 VALUES ('No blanks', 'No blanks', 0x00ee);
INSERT INTO t1 VALUES ('Trailing blank ', 'Trailing blank ', 0x00ee00);

SELECT 'CHAR' = '>' + charcol + '<', 'VARCHAR'='>' + varcharcol + '<',
   varbinarycol
FROM t1;
GO

PRINT 'Testing with ANSI_PADDING OFF';
SET ANSI_PADDING OFF;
GO

CREATE TABLE t2 (
   charcol CHAR(16) NULL, 
   varcharcol VARCHAR(16) NULL, 
   varbinarycol VARBINARY(8)
);
GO
INSERT INTO t2 VALUES ('No blanks', 'No blanks', 0x00ee);
INSERT INTO t2 VALUES ('Trailing blank ', 'Trailing blank ', 0x00ee00);

SELECT 'CHAR' = '>' + charcol + '<', 'VARCHAR'='>' + varcharcol + '<',
   varbinarycol
FROM t2;
GO

DROP TABLE t1
DROP TABLE t2