ALTER tabela (języka Transact-SQL)

Zmienia definicję tabela modyfikacji, dodając lub upuszczanie kolumn i ograniczeń, ponowne przypisywanie partycji lub wyłączanie lub włączanie ograniczenia i wyzwalaczy.

Topic link iconKonwencje składni języka Transact-SQL

ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name 
{ 
    ALTER COLUMN column_name 
    { 
        [ type_schema_name. ] type_name [ ( { precision [ , scale ] 
            | max | xml_schema_collection } ) ] 
        [ COLLATE collation_name ] 
        [ SPARSE | NULL | NOT NULL ] 
    | {ADD | DROP } 
        { ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION | SPARSE }
    } 
        | [ WITH { CHECK | NOCHECK } ]

    | ADD 
    { 
        <column_definition>
      | <computed_column_definition>
      | <table_constraint> 
      | <column_set_definition> 
    } [ ,...n ]

    | DROP 
    { 
        [ CONSTRAINT ] constraint_name 
        [ WITH ( <drop_clustered_constraint_option> [ ,...n ] ) ]
        | COLUMN column_name 
    } [ ,...n ] 

    | [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT 
        { ALL | constraint_name [ ,...n ] } 

    | { ENABLE | DISABLE } TRIGGER 
        { ALL | trigger_name [ ,...n ] }

    | { ENABLE | DISABLE } CHANGE_TRACKING 
        [ WITH ( TRACK_COLUMNS_UPDATED = { ON | OFF } ) ]

    | SWITCH [ PARTITION source_partition_number_expression ]
        TO target_table 
        [ PARTITION target_partition_number_expression ]

    | SET ( FILESTREAM_ON = { partition_scheme_name | filegroup | 
                "default" | "NULL" } )

    | REBUILD 
      [ [PARTITION = ALL]
        [ WITH ( <rebuild_option> [ ,...n ] ) ] 
      | [ PARTITION = partition_number 
           [ WITH ( <single_partition_rebuild_option> [ ,...n ] ) ]
        ]
      ]

    | (<table_option>)
}
[ ; ]

<column_set_definition> ::= 
        column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS

<drop_clustered_constraint_option> ::=  
    { 
        MAXDOP = max_degree_of_parallelism
      | ONLINE = {ON | OFF }
      | MOVE TO { partition_scheme_name ( column_name ) | filegroup
          | "default" }
    }
<table_option> ::=
    {
        SET ( LOCK_ESCALATION = { AUTO | TABLE | DISABLE } )
    }

<single_partition_rebuild__option> ::=
{
      SORT_IN_TEMPDB = { ON | OFF }
    | MAXDOP = max_degree_of_parallelism
    | DATA_COMPRESSION = { NONE | ROW | PAGE} }
}

Argumenty

  • database_name
    Jest nazwą bazy danych, w którym został utworzony w tabela.

  • schema_name
    To nazwa schematu, do której należy tabela.

  • table_name
    Jest nazwą tabela, która ma zostać zmieniony.Jeśli tabela nie znajduje się w bieżącej bazie danych lub nie jest zawarty w schemacie, stanowią własność przez bieżącego użytkownika, baza danych i schematu musi być jawnie określony.

  • ZMIANA kolumna
    Określa, że kolumna o nazwie ma zostać zmieniona lub zmieniony.ALTER kolumna nie jest dozwolone, jeśli 65 lub niższy poziom zgodności.Aby uzyskać więcej informacji zobaczsp_dbcmptlevel (języka Transact-SQL).

    kolumna zmodyfikowaną nie może być jeden z następujących czynności:

    • Kolumna z timestamp Typ danych.

    • ROWGUIDCOL dla tabela.

    • A obliczona kolumn lub używane kolumna obliczana.

    • Używane do indeksu, chyba że kolumna jest varchar, nvarchar, lub varbinary Typ danych nie zostanie zmieniony typ danych, nowy rozmiar jest równy lub większy niż rozmiar starego i indeks nie jest wynikiem ograniczenia klucz podstawowy.

    • W statystyk generowanych przez instrukcja CREATE STATISTICS, chyba że kolumna varchar, nvarchar, lub varbinary Typ danych nie zostanie zmieniony typ danych, a nowy rozmiar jest równy lub większy niż rozmiar stare lub jeśli kolumny jest zmieniana z nie null na null. Najpierw należy usunąć za pomocą instrukcja DROP STATISTICS statystyki.Statystyki, które są generowane automatycznie przez optymalizator kwerendy są automatycznie usuwane przez instrukcji ALTER kolumna.

    • Używany w ograniczenia klucz podstawowy lub materiały referencyjne [klucz obcy].

    • Używany w ograniczeniu wyboru lub UNIQUE.Jednak dozwolona jest zmiana długości kolumna o zmiennej długości, używanych w wyboru lub ograniczenie UNIQUE.

    • Skojarzone z domyślnej definicji.Jednakże długości, precyzji i skali kolumna można zmienić, gdy nie zostanie zmieniony typ danych.

      Typ danych text, ntext i image kolumny mogą być zmieniane tylko w następujący sposób:

      • text Aby varchar(max), nvarchar(max), lub xml

      • ntext Aby varchar(max), nvarchar(max), lub xml

      • image Aby varbinary(max)

      Niektóre zmiany typu danych może spowodować zmiany w danych.Na przykład zmiana nchar lub nvarchar kolumna char lub varchar może to spowodować konwersji znaków z rozszerzonego zestawu znaków. Aby uzyskać więcej informacji zobaczCAST and CONVERT (Transact-SQL).Zmniejszanie precyzji lub skali kolumna może spowodować obcięcie danych.

      Nie można zmienić typ danych kolumna tabela partycjonowana.

  • column_name
    Is the name of the column to be altered, added, or dropped.column_name can be a maximum of 128 characters.Dla nowej kolumny column_name można pominąć w przypadku kolumn utworzonych za pomocą timestamp Typ danych. Nazwa timestamp jest używana, jeśli nie column_name jest określony dla timestamp Typ danych kolumna.

  • [ type_schema_name**.** ] type_name
    Is the new data type for the altered column, or the data type for the added column.type_name cannot be specified for existing columns of partitioned tables.type_name can be any one of the following:

    • A SQL Server Systemowy typ danych.

    • Na podstawie typu danych alias SQL Server Systemowy typ danych. Alias typy danych są tworzone przy użyciu instrukcja CREATE TYPE, zanim będą mogły być użyte w definicji tabela.

    • A .NET Framework user-defined type, and the schema to which it belongs..NET Framework user-defined types are created with the CREATE TYPE statement before they can be used in a table definition.

    Poniżej podano kryteria type_name zmieniony kolumna:

    • Poprzednie typem danych musi być niejawnie konwertowany do nowego typu danych.

    • type_name Nie można timestamp.

    • ANSI_NULL wartości domyślne są zawsze w instrukcji ALTER COLUMN; (Jeśli nie jest określony, kolumna jest pustych.

    • uzupełnienie ANSI_PADDING zawsze jest włączone dla instrukcji ALTER kolumna.

    • Jeśli w kolumnie zmodyfikowaną kolumna tożsamości new_data_type musi być typu danych, która obsługuje właściwość tożsamości.

    • Bieżące ustawienia ARITHABORT zestaw jest ignorowana.ALTER tabela działa tak, jakby ARITHABORT jest ustawiona na ON.

    Uwaga

    Jeżeli nie określono klauzula COLLATE, zmiana typu danych kolumna spowoduje, że zmiana sortowanie w domyślnym sortowaniem w bazie danych.

  • precision
    Jest dokładność określony typ danych.Aby uzyskać więcej informacji na temat wartości dokładności prawidłowy zobacz Precyzja, skala i długość (języka Transact-SQL).

  • scale
    Czy skala określony typ danych.Aby uzyskać więcej informacji na temat prawidłowych skali wartości zobacz Precyzja, skala i długość (języka Transact-SQL).

  • MAX
    Dotyczy tylko varchar, nvarchar, a varbinary typy danych do przechowywania 2 ^ 31-1 bajtów danych binarnych, znaków, a dane Unicode.

  • xml_schema_collection
    Dotyczy tylko xml Typ danych do kojarzenia z typem schematu XML. Przed wpisaniem xml kolumna do kolekcja schematu, kolekcja schematu należy najpierw utworzyć w bazie danych przy użyciu TWORZENIE SCHEMATU XML kolekcja.

  • COLLATE < collation_name >
    Określa nowe sortowanie zmodyfikowanej kolumny.Jeśli nie zostanie określone, do kolumny zostanie przypisane domyślne sortowanie bazy danych.Nazwa sortowania może być zarówno nazwą sortowania systemu Windows, jak i nazwą sortowania programu SQL.Aby zapoznać się z listą i uzyskać więcej informacji, zobacz Windows Collation Name (Transact-SQL) i SQL Server Collation Name (Transact-SQL).

    Klauzula COLLATE może służyć do zmiany ustawień sortowania tylko z kolumn char, varchar, nchar, a nvarchar typy danych. Aby zmienić sortowanie kolumn typu danych zdefiniowanych przez użytkownika alias, należy wykonać oddzielne instrukcji ALTER tabela, aby zmienić kolumna, która ma zostać SQL Server dane systemowe wpisz i zmienić jego sortowania, a następnie zmień kolumna do typu danych alias.

    ALTER kolumna nie mogą mieć zmiany sortowanie, jeśli jedna lub więcej z następujących warunków istnieją:

    • Jeśli ograniczenie typu CHECK, ograniczenia klucz obcy lub kolumna obliczane się odwołać do kolumna zmienione.

    • Jeśli indeks, dane statystyczne lub indeks pełnotekstowy są tworzone na podstawie kolumna.Statystyki tworzone automatycznie na podstawie kolumna zmienione są odrzucane w przypadku zmiany sortowanie kolumna.

    • Jeżeli związanych ze schematem widoku lub funkcja odwołuje się do kolumna.

    Aby uzyskać więcej informacji zobacz COLLATE (Transact-SQL).

  • RZADKIE | NULL | NIE JEST PUSTY
    Określa, czy kolumna jest kolumna rozrzedzona mogą akceptować wartości null.Jeśli kolumna zmiany jest kolumna rozrzedzona, należy jawnie określić powróci do nonsparse kolumna ta właściwość lub kolumnę.Rzadkie kolumny nie może być wyznaczony jako NOT NULL.Konwertowanie kolumna z rozrzedzone do nonsparse lub nonsparse do rozrzedzone blokad w tabela na czas trwania wykonania polecenia.

    Dodatkowe ograniczenia i dowiedzieć się więcej na temat kolumn rzadkie i opcje dopuszczania wartości null znajdują się Using Sparse Columns.

    Za pomocą instrukcji ALTER tabela można można dodawać kolumnach akceptujących wartości null, tylko wtedy, gdy można określić wartość domyślną dla kolumna lub całą tabela, jest pusta.NOT NULL można określić dla kolumny obliczane tylko wtedy, gdy określony jest również PERSISTED.Jeśli nowa kolumna zezwala na wartości null i domyślnie nie jest określony, nowa kolumna zawiera wartości null dla każdego wiersza w tabela.Jeśli nowa kolumna zezwala na wartości null wartości i domyślnej definicji dodaje się nową kolumnę z wartości można używać do przechowywania wartości domyślne w nowej kolumnie dla każdego istniejącego wiersza w tabela.

    Nowa kolumna nie zezwala na wartości null w tabela nie jest pusta, DOMYŚLNĄ definicją należy dodać nową kolumnę, a nowa kolumna ładuje się automatycznie w nowych kolumn w każdym wierszu istniejącą wartość domyślną.

    W instrukcji ALTER kolumna wymusić kolumna NOT NULL, aby zezwolić na wartości null, z wyjątkiem dla kolumn w ograniczenia klucz podstawowy można określić wartość NULL.NOT NULL mogą być określone w instrukcji ALTER COLUMN tylko wtedy, gdy kolumna zawiera wartości null, nie.Wartości null muszą zostać zaktualizowane na pewną wartość, zanim instrukcji ALTER kolumna NOT NULL jest dozwolona, na przykład:

    UPDATE MyTable SET NullCol = N'some_value' WHERE NullCol IS NULL
    ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL
    

    Podczas tworzenia lub alter tabela z instrukcji CREATE tabela lub ALTER tabela, ustawienia bazy danych i sesja wpływ i ewentualnie zastępują opcje dopuszczania wartości null typu danych, który jest używany w kolumna definicji.Firma Microsoft zaleca, aby zawsze jawnie zdefiniować kolumna jako wartość NULL lub NOT NULL noncomputed kolumn.

    Dodania kolumna o typie danych zdefiniowanych przez użytkownika, zaleca się zdefiniowanie kolumna z tego samego opcje dopuszczania wartości null jako null właściwość typu danych zdefiniowanego przez użytkownika i określić wartość domyślną dla kolumna.Aby uzyskać więcej informacji zobaczCREATE TABLE (Transact-SQL).

    Uwaga

    Jeśli NULL lub NOT NULL jest określany za pomocą instrukcji ALTER kolumna new_data_type(precision,scale należy także określić]]. Jeśli typ danych, precyzji i skali nie ulegają zmianie, należy określić bieżące wartości kolumna.

  • [{DODAĆ | UPUŚĆ} ROWGUIDCOL]
    Określa właściwość ROWGUIDCOL jest dodawana do lub z określonej kolumna.ROWGUIDCOL oznacza, że kolumna wiersza kolumna identyfikatora GUID.Tylko jeden uniqueidentifier Kolumna tabela może być wyznaczony jako ROWGUIDCOL kolumny, a właściwość ROWGUIDCOL mogą być przypisywane tylko do uniqueidentifier Kolumna. Nie można przypisać ROWGUIDCOL z kolumną typu danych zdefiniowanego przez użytkownika.

    ROWGUIDCOL nie wymusza unikatowość wartości, które są przechowywane kolumna, a nie generuje automatycznie wartości dla nowych wierszy, które są wstawiane do tabela.STNumPoints

  • [{DODAĆ | UPUŚĆ} UTRWALONE]
    Określa, że właściwość PERSISTED jest dodawana do lub z określonej kolumna.Kolumna musi być kolumna obliczana, który jest zdefiniowany za pomocą wyrażenie deterministyczny.W przypadku kolumn określone jako PERSISTED Database Engine fizycznie przechowywania obliczonych wartości w tabela, a kiedy są aktualizowane inne kolumna, od których zależy kolumna obliczeniowej powoduje zaktualizowanie wartości. Oznaczając kolumna obliczana jako PERSISTED, można utworzyć indeksy na kolumny obliczane zdefiniowane na wyrażeń, które są deterministyczny, ale nie dokładne.Aby uzyskać więcej informacji zobaczTworzenie indeksów na kolumny obliczane.

    Kolumna obliczana, który jest używany jako kolumna partycjonowania tabela partycjonowana muszą być jawnie oznaczone PERSISTED.

  • UPUŚĆ NIE DO replikacja
    Określa, że podczas replikacja agentów wykonywania operacji wstawiania wartości są zwiększane w kolumnach identyfikacyjnych.Tę klauzulę można określić tylko wtedy, gdy column_name kolumna tożsamości. Aby uzyskać więcej informacji zobaczKontrolowanie ograniczenia tożsamości i wyzwalaczy z nie dla replikacja.

  • RZADKIE
    Określa, że w kolumnie mają być dodane lub usunięte kolumna rozrzedzona.Przechowywanie rozrzedzone kolumn jest zoptymalizowana ze względu na wartości null.Rzadkie kolumny nie może być wyznaczony jako NOT NULL.Konwertowanie kolumna z rozrzedzone do nonsparse lub nonsparse do rozrzedzone blokad w tabela na czas trwania wykonania polecenia.

    Uwaga

    Musisz określić właściwość ROZRZEDZANIA za każdym razem zmienić kolumna lub kolumna zostaną przywrócone do nonsparse kolumna.

    Dodatkowe ograniczenia i dowiedzieć się więcej na temat rozrzedzone kolumn zobacz Using Sparse Columns.

  • Z WYBORU | Z NOCHECK
    Określa, czy dane w tabela jest lub nie jest sprawdzany na nowo dodane lub ponownego włączenia ograniczenie klucz obcy lub CZEK.Jeśli nie, WITH Sprawdź przyjęto dla nowych ograniczeń i WITH NOCHECK przyjęto, że do ponownego włączenia ograniczeń.

    Jeśli nie chcesz zweryfikować nowego wyboru lub klucz obcy ograniczeń dla istniejących danych, należy użyć NOCHECK WITH.Nie zaleca się w ten sposób, z wyjątkiem w rzadkich przypadkach.Nowe ograniczenie będą oceniane wszystkich późniejszych aktualizacji danych.Naruszenie ograniczenia, są pomijane przez WITH NOCHECK po dodaniu ograniczenie może spowodować, że się nie powieść, jeśli ich aktualizowania wierszy z danymi, które nie są zgodne z ograniczeniem przyszłych aktualizacji.

    optymalizator kwerendy nie bierze pod uwagę ograniczenia, które są zdefiniowane NOCHECK WITH.Te ograniczenia są ignorowane, dopóki nie są one re-enabled przy użyciu instrukcji ALTER tabela table SPRAWDŹ, CZY WSZYSTKIE OGRANICZENIA.

  • DODAWANIE
    Określa, że dodać jeden lub kilka definicji kolumn, definicji kolumna obliczana lub ograniczenia tabela.

  • DROP {[CONSTRAINT] constraint_name | KOLUMNA column_name }
    Określa, że constraint_name lub column_name zostaną usunięte z tabela. Można podawać wiele kolumn i ograniczeń.

    Zdefiniowane przez użytkownika lub dostarczanych przez system nazwę ograniczenia, można określić za pomocą kwerend wysyłanych do sys.check_constraint, sys.default_constraints, sys.key_constraints, and sys.foreign_keys widoki wykazu.

    Nie można go usunąć ograniczenia klucz podstawowy, jeśli istnieje indeks XML w tabela.

    Nie można go usunąć kolumna, gdy jest to:

    • Używane do indeksu.

    • Używany w ograniczeniu wyboru, klucz obcy, unikatowy lub klucz podstawowy.

    • Skojarzony z domyślną jest zdefiniowane przy użyciu słowa kluczowego DEFAULT lub związany z domyślnego obiektu.

    • Powiązane z reguły.

    Uwaga

    Upuszczanie kolumna nie odzyskania miejsca na dysku kolumna.Może zajść potrzeba odzyskania miejsca na dysku były gubione kolumna rozmiar wiersza tabela znajduje się w pobliżu lub przekroczył limit.Odzyskania miejsca przez tworzenie indeksu klastrowanego w tabela lub przebudowy istniejący indeks klastrowany przy użyciu ZMIANA INDEKSU.

  • WITH drop_clustered_constraint_option < >
    Określa, że jeden lub więcej upuść klastrowanych ograniczenie, które opcje są ustawione.

  • MAXDOP = max_degree_of_parallelism
    Zastępuje maksymalny stopień proste opcja konfiguracja tylko na czas trwania operacji.Aby uzyskać więcej informacji zobaczmax degree of parallelism Option.

    Opcja MAXDOP umożliwia ograniczenie liczby procesorów używanych w realizacji planu równoległych.Maksymalna to 64 procesorów.

    max_degree_of_parallelism może mieć jedną z następujących wartości:

    • 1
      Wyłącza generowanie planu równoległych.

    • >1
      Ogranicza maksymalną liczbę procesorów używanych w operacji indeksu równolegle do określonej liczby.

    • 0 (domyślny)
      Używa rzeczywista liczba procesorów lub mniej oparte na bieżącym obciążenia systemu.

    Aby uzyskać więcej informacji zobacz Konfigurowanie równoległa operacje indeksu.

    Uwaga

    Są dostępne tylko w operacji równoległych indeksu SQL Server Wersje Enterprise Developer i oceny.

  • ONLINE**=** { ON | WYŁĄCZANIE }
    Określa, czy są dostępne do modyfikacji kwerendy i danych podczas operacji indeksu tabel i indeksów skojarzonych.Wartością domyślną jest OFF.ODBUDOWYWANIE może być wykonywana jako operacja ONLINE.

    • DALEJ
      Długotrwałe blokady tabeli nie są nakładane przez czas trwania operacji indeksu.Podczas głównej fazy operacji indeksu jest nałożona tylko blokada Udostępnianie zamierzone tabeli źródłowej.Umożliwia to kontynuowanie kwerend lub aktualizacji na wewnętrznej tabeli i indeksach.W chwili rozpoczęcia operacji indeksu na obiekt źródłowy przez bardzo krótki czas jest nakładana blokada Udostępnianie.Po zakończeniu operacji na źródło jest na bardzo krótko nakładana blokada Udostępnianie, o ile jest tworzony indeks nieklastrowany, pobrano blokadę Modyfikacja schematu podczas tworzenia lub upuszczania w trybie online indeksu klastrowanego bądź jest odbudowywany indeks klastrowany lub nieklastrowany.Opcji ONLINE nie można włączyć, jeśli jest tworzony indeks lokalnej tabeli tymczasowej.

    • WYŁĄCZANIE
      W takich przypadkach można pominąć te wpisy dziennika za pomocą flagi śledzenia 3226, jeśli żadna ze skryptów zależy od tych zapisów.Obcinania dziennik transakcjiAby uniknąć wypełnianie dziennik transakcji bazy danych, niezbędne są rutynowego tworzenia kopii zapasowych.W obszarze proste model odzyskiwanie, obcinania dziennika zostanie automatycznie po wykonanie tworzyć kopię zapasową zapasowej bazy danych oraz w pełni model odzyskiwanie, po wysłaniu tworzyć kopię zapasową zapasowej dziennik transakcji.Jednak czasami proces obcinania może być opóźnione.

    Aby uzyskać więcej informacji zobaczHow Online Index Operations Work.Aby uzyskać więcej informacji na temat blokady Zobacz Tryby blokada.

    Uwaga

    Są dostępne tylko w operacji indeksu online SQL Server Wersje Enterprise Developer i oceny.

  • MOVE TO { partition_scheme_name**(** column_name [ 1**,** ... n] ) | filegroup | "default" }
    Określa lokalizację, w której chcesz przenieść wiersze danych aktualnie na poziomie poziom liścia indeks klastrowany.W tabela jest przenoszony do nowej lokalizacji.

    Uwaga

    W tym kontekście domyślnie nie jest słowem kluczowym.It is an identifier for the default filegroup and must be delimited, as in MOVE TO "default" or MOVE TO [default].Jeśli "domyślne " jest określona opcja QUOTED_IDENTIFIER musi być włączone dla bieżącej sesja.Jest to ustawienie domyślne.Aby uzyskać więcej informacji zobaczzestaw QUOTED_IDENTIFIER (języka Transact-SQL).

  • {SPRAWDŹ | NOCHECK} OGRANICZENIA
    Określa, że constraint_name Włączenie lub wyłączenie. Tej opcji można używać tylko z ograniczeniami klucz obcy i wyboru.Po określeniu NOCHECK ograniczenie jest wyłączone i przyszłych Wstawia lub aktualizacje do kolumna nie są sprawdzane przed warunkami ograniczenia.Nie można wyłączyć DEFAULT klucz podstawowy i ograniczeń UNIQUE.

  • ALL
    Określa, że wszystkie ograniczenia są wyłączone z opcją NOCHECK lub włączona opcja wyboru.

  • {WŁĄCZYĆ | WYŁĄCZONA} WYZWALACZ
    Określa, że trigger_name Włączenie lub wyłączenie. Po wyłączeniu wyzwalacz jest nadal zdefiniowany w tabela; jednak wykonywania instrukcji INSERT, UPDATE lub DELETE przed tabela działań w wyzwalaczu uruchamiane są nie wykonywane do momentu ponownego włączenia wyzwalacza.

  • ALL
    Określa, że wszystkie wyzwalacze w tabela są włączone lub wyłączone.

  • trigger_name
    Określa nazwę wyzwalacz ma być włączona lub wyłączona.

  • {WŁĄCZYĆ | WYŁĄCZONA} CHANGE_TRACKING
    Określa, czy śledzenie zmian jest włączone wyłączone dla tabela.Domyślnie śledzenie zmian jest wyłączone.

    Ta opcja jest dostępna tylko, jeżeli śledzenie zmian jest włączone dla bazy danych.Aby uzyskać więcej informacji zobaczALTER DATABASE SET Options (Transact-SQL).

    Aby włączyć śledzenie zmian, w tabela musi mieć klucz podstawowy.

  • WITH ( TRACK_COLUMNS_UPDATED = { ON | WYŁĄCZANIE } )
    Określa, czy Database Engine śledzi zmiany śledzone kolumny zostały zaktualizowane. Wartością domyślną jest OFF.

  • Przełącznik [PARTITION source_partition_number_expression ] DO [ schema_name**.** ] target_tablePARTITION target_partition_number_expression ]
    Przełącza blok danych w jednym z następujących sposobów:

    • Ponownie przypisuje wszystkie dane z tabeli jako partycję do już istniejącego tabela partycjonowana.

    • Przełącza partycję z jednej tabela partycjonowana.

    • Ponownie przypisuje wszystkie dane w jednej partycji tabela partycjonowana do istniejącego nie-tabela partycjonowana.

    Jeśli table jest tabelą podzielonym na partycje source_partition_number_expression musi być określona. Jeśli target_table jest już podzielony na partycje, target_partition_number_expression musi być określona. Jeśli ponowne przypisywanie danych tabeli, jak partycje do już istniejącej tabeli w podzielonym na partycje lub przełączanie partycję z jednej tabela partycjonowana, partycji miejsce docelowe musi istnieć i musi być pusty.

    Jeśli ponowne przypisywanie jednej partycji danych do utworzenia pojedynczej tabeli, tabela miejsce docelowe już musi zostać utworzony i może być pusta.Zarówno w tabela źródłowej lub partycji i tabela miejsce docelowe lub partycji, musi znajdować się w tym samym grupa plików.Indeksy odpowiednich lub partycji indeksu musi być również przechowywany w grupę tych samych plików.Wiele dodatkowe ograniczenia dotyczą przełączanie partycji.For more information, see Wydajne przesyłania danych przy użyciu przełączania partycji.table and target_table cannot be the same.target_table can be a multi-part identifier.

    source_partition_number_expression i target_partition_number_expression są stała wyrażeń, które mogą odwoływać się do zmiennych i funkcji. Obejmują one typ zdefiniowany przez użytkownika, zmiennych i funkcji zdefiniowanych przez użytkownika.Te nie mogą odwoływać się do Transact-SQL wyrażenia.

    Uwaga

    Nie można używać instrukcja SWITCH w zreplikowanych tabelach.

  • zestaw ( FILESTREAM_ON = { partition_scheme_name | filestream_filegroup_name | **"**domyślne " | "NULL" } )
    Określa, w której są przechowywane dane FILESTREAM.

    ALTER tabela z klauzula zestaw FILESTREAM_ON powiodą się tylko wtedy, gdy w tabela nie ma FILESTREAM kolumn.Kolumny FILESTREAM można dodać za pomocą drugiej instrukcja ALTER tabela.

    Jeśli partition_scheme_name jest określony, zasady TWORZENIE tabela zastosowania.W tabela powinien już być podzielone na partycje dla wiersza danych, a jego schemat partycji muszą używać tej samej funkcja partycji i kolumn jako FILESTREAM schemat partycji.

    filestream_filegroup_name Określa nazwę grupa plików FILESTREAM.grupa plików, w musi mieć jeden plik, który jest zdefiniowany dla grupa plików, w przy użyciu TWORZENIE BAZY DANYCH or ZMIENIANIE BAZY DANYCH instrukcja lub błąd jest uruchamiany.

    **"**domyślne " Określa grupa plików FILESTREAM domyślny zestaw właściwość.Jeśli nie ma żadnych FILESTREAM grupa plików, uruchamiany jest błąd.

    "NULL" Określa, że zostaną usunięte wszystkie odwołania do filegroups FILESTREAM dla tabela.Wszystkie kolumny FILESTREAM musi być najpierw usunięta.Należy użyć FILESTREAM_ON zestaw**="NULL"** usunąć wszystkie dane FILESTREAM skojarzony z tabela.

  • zestaw ( LOCK_ESCALATION = {AUTO | tabela | DISABLE} )
    Określa dozwolone metody eskalacja blokad dla tabela.

    • AUTOMATYCZNE
      Ta opcja umożliwia SQL Server Database Engine Aby wybrać eskalacja blokad rozdrobnienia, który jest odpowiedni dla schematu tabela.

      • Jeśli w tabela jest podzielony na partycje, eskalacja blokad będzie mógł partycji.Po blokada jest przekazany do poziom partycji, blokada będzie nie być przekazany później do ziarnistość tabela.

      • Jeśli tabela nie jest podzielony na partycje, eskalacja blokad zostaną wykonane, aby ziarnistość TABLE.

    • Liczba odczytów logiczne wykonywane podczas ostatniego wyzwalacz został wykonany.
      eskalacja blokad zostaną wykonane poziom tabela ziarnistość niezależnie od tego, czy w tabela jest podzielony na partycje lub nie na partycje.To zachowanie jest takie same, jak w SQL Server 2005. Tabela jest wartością domyślną.

    • WYŁĄCZANIE
      Zapobiega eskalacji blokada w większości przypadków.Blokowania poziom tabela nie są całkowicie niedozwolone.Na przykład jeśli skanujesz tabela, ma klastrowanego indeksu w obszarze poziom izolacji możliwy do serializacji Database Engine musi mieć blokadę tabela ochronę integralność danych.

  • ODBUDOWYWANIE
    Należy użyć składni ODBUDOWAĆ WITH odbudować całej tabeli do tabela partycjonowana w tym wszystkich partycji.Jeśli tabela ma indeks klastrowany, opcja ODBUDOWYWANIA odtwarza indeks klastrowany.ODBUDOWYWANIE może być wykonywana jako operacja ONLINE.

    Aby ponownie utworzyć pojedynczą partycję w tabela partycjonowana, należy użyć składni ODBUDOWAĆ PARTITION.

  • PARTYCJA = ALL
    Buduje ponownie wszystkie partycje, zmieniając ustawienia kompresji partycji.

  • ODBUDUJ WITH (rebuild_option < >)
    Wszystkie opcje odnoszą się do tabela z indeks klastrowany.Jeśli tabela ma indeks klastrowany, strukturę stosu ma tylko wpływ niektóre opcje.

    Pełny opis opcji odbudowywania można znaleźć w temacie index_option (Transact-SQL).

  • DATA_COMPRESSION
    Określa opcję kompresji danych dla określonej tabela, numer partycji lub zakres partycji.Dostępne są następujące opcje:

    • BRAK
      Tabela lub określonej partycji nie są kompresowane.

    • WIERSZ
      tabela lub określone partycje są kompresowane przy użyciu kompresji wierszy.

    • strona
      tabela lub określone partycje są kompresowane przy użyciu kompresji strona.

    Aby ponownie utworzyć wiele partycji, w tym samym czasie, zobacz index_option (Transact-SQL). Jeśli tabela ma indeks klastrowany, zmienianie kompresji danych odtwarza sterty i ponownego zbudowania indeksów nie klastrowanych.Aby uzyskać więcej informacji dotyczących kompresji zobacz Creating Compressed Tables and Indexes.

  • column_set_name ALL_SPARSE_COLUMNS DLA COLUMN_SET XML
    Jest to nazwa kolumna zestawu.Zestaw kolumn jest bez typu reprezentacji XML, który łączy wszystkie rozrzedzone kolumna tabela w strukturze danych wyjściowych.Nie można dodać zestaw kolumn do tabela, która zawiera rozrzedzone kolumna.Aby uzyskać więcej informacji na temat kolumna zestawów, zobacz Korzystanie z zestawów kolumna.

Remarks

Aby dodać nowych wierszy danych, należy użyć WSTAWIANIE.Aby usunąć wiersze danych, należy użyć USUWANIE or OBCIĄĆ tabela.Aby zmienić wartości w istniejących wierszach, należy użyć AKTUALIZACJA.

W przypadku wszystkich planów wykonania pamięć podręczna procedury odwołanie w tabela, ALTER tabela oznaczy je jest ponownie kompilowana na ich wykonanie następnego.

Zmiana rozmiaru kolumna

Długości, precyzji i skali kolumna można zmienić, określając rozmiaru dla typu danych kolumna w klauzula instrukcji ALTER kolumna.Jeśli dane kolumna, nowy rozmiar nie może być mniejszy niż maksymalny rozmiar danych.Ponadto w kolumnie nie można zdefiniować w indeksie, chyba że kolumna jest varchar, nvarchar, lub varbinary Typ danych i indeks nie jest wynikiem ograniczenia klucz podstawowy. Zobacz przykład P.

Blokady i ALTER tabela

Zmiany określone w instrukcji ALTER tabela są wykonywane natychmiast.Jeśli zmiany wymagają modyfikacji wierszy w tabela, ALTER tabela aktualizuje wierszy.ALTER tabela nabywa schemat zmodyfikować blokadę w tabela, aby upewnić się, że nie inne połączenia odwołać nawet metadane dla tabela podczas zmiany, z wyjątkiem operacji online indeksu, które wymagają bardzo krótki blokada SCH-M na końcu.W przypadku operacji ALTER tabela…SWITCH jest blokada w tabela źródłowej i miejsce docelowe.Zmian wprowadzonych w tabela są rejestrowane i pełni możliwych do odzyskania.Zmiany, które mają wpływ na wszystkie wiersze w bardzo dużych tabel, na przykład usunięcie kolumna lub dodanie kolumna NOT NULL z domyślną, może zająć dużo czas i generować dużą liczbę rekordów dziennika.Tych instrukcja ALTER tabela powinny zostać wykonane z taką samą starannością jak wszelkie INSERT, UPDATE, lub DELETE instrukcja, która ma wpływ na wiele wierszy.

Wykonanie planu równoległe

W SQL Server 2008 Enterprise, liczba procesorów stosowanych do uruchomienia, pojedynczej instrukcji ALTER tabela ADD (indeks oparty) CONSTRAINT lub DROP (indeks klastrowany) CONSTRAINT instrukcja jest określana przez maksymalny stopień proste opcja konfiguracja i bieżące obciążenie pracą.Jeśli Database Engine wykrywa, że system jest zajęty, stopień proste operacji automatycznie jest ograniczona, zanim rozpocznie się wykonywanie instrukcja. Liczba procesorów, które są używane do uruchamiania w instrukcja przez określenie opcji MAXDOP można konfigurować ręcznie.

Tabele podzielonym na partycje

Oprócz wykonywania przełącznik operacje, które są związane z tabelami podzielonym na partycje, można użyć instrukcji ALTER TABLE zmianę stanu kolumn, ograniczenia i wyzwalaczy tabela partycjonowana, tak samo, jak jest on używany dla nonpartitioned tabel.Jednak ta instrukcja nie może być używana do zmiany sposobu, w samej tabela jest podzielony na partycje.Aby podzielić na partycje tabela partycjonowana, należy użyć ZMIANY SCHEMATU PARTYCJI and ZMIANY funkcja PARTYCJI.Ponadto nie można zmienić typ danych kolumna tabela partycjonowana.

Ograniczenia dotyczące tabel z widoków powiązany schematu

Ograniczenia, które będą stosowane do instrukcji ALTER tabela na tabelach z widokami związanych ze schematem są takie same jak aktualnie stosowany podczas modyfikowania tabel z indeksem prostych ograniczeń.Dodanie kolumna jest dozwolone.Jednakże usunięcie lub zmiana kolumn, które uczestniczą w dowolnym widoku związanych ze schematem jest niedozwolone.Jeśli w instrukcja ALTER tabela konieczna jest zmiana kolumna w widoku związanych ze schematem, ALTER tabela nie powiedzie się, Database Engine wywołuje komunikat o błędzie. Aby uzyskać więcej informacji na temat wiązanie schematu i widoki indeksowane zobacz CREATE VIEW języka Transact-SQL).

Dodawanie lub usuwanie wyzwalaczy w tabelach podstawowych nie dotyczy tworzenia widoku związanych ze schematem, która odwołuje się do tabel.

Indeksy i ALTER tabela

Indeksy tworzone jako część ograniczenia są usuwane, gdy ograniczenie zostało zerwane.Indeksy, które zostały utworzone za pomocą CREATE INDEX musi być odrzucone z DROP indeks.Można użyć instrukcja ALTER INDEX odbudować indeks się częścią definicji ograniczenie; ograniczenie ma być usunięty i ponownie dodany za pomocą instrukcja ALTER tabela.

Należy usunąć wszystkie indeksy i ograniczenia na podstawie kolumna, aby można było usunąć kolumna.

Po usunięciu ograniczenie utworzyć indeks klastrowany wierszy danych, które były przechowywane na poziomie poziom liścia indeksu klastrowanego są przechowywane w tabela nieklastrowany.Można usunąć indeks klastrowany i przenieść utworzoną tabela do innego schematu grupa plików lub partycji w jedną transakcję poprzez określenie opcji MOVE TO.Opcji MOVE TO ma następujące ograniczenia:

  • MOVE TO nie jest prawidłowy dla widoków indeksowanych lub ponownego zbudowania indeksów nie klastrowanych.

  • Schemat partycji lub grupa plików musi już istnieć.

  • Jeśli MOVE TO nie zostanie określona, w tabela będą znajdować się w ten sam schemat partycji lub grupa plików, jak został zdefiniowany dla indeks klastrowany.

Po upuszczeniu indeks klastrowany można określić ONLINE = NA opcję tak, aby INDEX ROZWIJANEJ transakcji nie blokuje kwerendy i zmiany w danych źródłowych i skojarzone ponownego zbudowania indeksów nie klastrowanych.

TRYB ONLINE = ON ma następujące ograniczenia:

  • TRYB ONLINE = ON nie jest prawidłowy dla indeksów klastrowanych, które również są wyłączone.Wyłączone indeksy muszą być usunięte za pomocą ONLINE = WYŁĄCZANIE.

  • Tylko jeden indeks w danej chwili może być usunięty.

  • TRYB ONLINE = ON nie jest prawidłowy dla widoków indeksowanych, ponownego zbudowania indeksów nie klastrowanych lub indeksy w lokalnych tabelach tymczasowych.

Upuść indeks klastrowany wymaga tymczasowego miejsca na dysku równy rozmiarowi istniejącego indeks klastrowany.Ten dodatkowy obszar jest publikowana zaraz po zakończeniu operacji.

Uwaga

Opcje wyświetlane w obszarze <drop_clustered_constraint_option> stosowanie indeksów klastrowanych w tabelach i nie można zastosować do indeksów klastrowanych w widokach lub ponownego zbudowania indeksów nie klastrowanych.

Replikowanie zmian schematu

Domyślnie, podczas wykonywania instrukcji ALTER tabela na opublikowaną tabela w SQL Server Wydawca, że zmiany są propagowane do wszystkich SQL Server Subskrybentów. Ta funkcja ma pewne ograniczenia i mogą być wyłączone.Aby uzyskać więcej informacji zobaczWprowadzanie zmian schematu na bazy danych w publikacja.

Kompresja danych

Tabele systemowe nie można włączyć kompresję.Jeśli tabela jest sterty, operacja odbudowywania zostanie pojedynczego wątku.Aby uzyskać więcej informacji dotyczących kompresji danych zobacz Creating Compressed Tables and Indexes.

Aby ocenić, jak zmiana stanu kompresji wpłynie na tabela, indeks lub partycji, należy użyć sp_estimate_data_compression_savings procedura przechowywana.

Do tabel podzielonym na partycje, obowiązują następujące ograniczenia:

  • Nie można zmienić kompresji ustawienie jedną partycję, gdy tabela zawiera indeksy nonaligned.

  • The ALTER TABLE <table> REBUILD PARTITION ...syntax rebuilds the specified partition.

  • The ALTER TABLE <table> REBUILD WITH ...syntax rebuilds all partitions.

Uprawnienia

Wymaga ALTER uprawnienia w tabela.

ALTER tabela uprawnienia stosują się do obu tabel w instrukcja ALTER tabela przełącznik.Dane, które jest włączane dziedziczy zabezpieczenia tabela miejsce docelowe.

Jeśli jest używany typ języka (CLR) w czasie wykonywania przez użytkownika lub alias, typ danych są zdefiniowane wszystkie kolumny w instrukcja ALTER tabela, wymagane jest uprawnienie materiały referencyjne na temat typu.

Przykłady

A.Dodawanie nowej kolumna

W następującym przykładzie dodano kolumna, która zezwala na wartości null i nie zawiera przez DOMYŚLNĄ definicją.W nowym kolumna, każdy wiersz będzie miał NULL.

B.Usunięcie kolumna

W poniższym przykładzie modyfikuje tabela, aby usunąć kolumna.

C.Zmiana typu danych kolumna

W poniższym przykładzie zmienia kolumna tabela z INT Aby DECIMAL.

D.Dodawanie kolumna z ograniczeniem

W następującym przykładzie dodano nową kolumna z UNIQUE ograniczenie.

E.Dodawanie niezweryfikowany ograniczenie typu CHECK do istniejącej kolumna

W następującym przykładzie dodano ograniczenie do istniejącej kolumna w tabela.Kolumna ta ma wartość naruszający ograniczenie.Dlatego też WITH NOCHECK jest używana uniemożliwić ograniczenie jest sprawdzany na istniejących wierszy i umożliwiające ograniczenie ma być dodany.

F.Dodawanie ograniczenie domyślne do istniejącej kolumna

W poniższym przykładzie jest tworzona tabela z dwiema kolumnami i wstawia wartości w pierwszej kolumnie, a inne kolumna jest NULL.A DEFAULT ograniczenie jest następnie dodawany do drugiej kolumna. Aby sprawdzić, czy wartość domyślna jest zainstalowana, inną wartość zostanie wstawiony pierwszy kolumna, i w tabela dotyczy kwerenda.

G.Dodawanie kilku kolumn z ograniczeniami

W następującym przykładzie dodano kilka kolumn z ograniczeniami zdefiniowane przy użyciu nowej kolumna.Jest pierwszą kolumną nowej IDENTITY Właściwość. Każdy wiersz w tabela ma nowe pierwotnych wartości kolumna tożsamości.

H.Dodawanie pustych kolumna z wartościami domyślnymi

W następującym przykładzie dodano nullable kolumna z DEFAULT definicji i zastosowania WITH VALUES Aby podać wartości dla każdego istniejącego wiersza w tabela. Jeśli nie jest używany z wartości, każdy wiersz ma wartość NULL w nowym kolumna.

I.Wyłączenie i ponowne włączenie ograniczenia

The following example disables a constraint that limits the salaries accepted in the data.NOCHECK CONSTRAINT is used with ALTER TABLE to disable the constraint and allow for an insert that would typically violate the constraint.CHECK CONSTRAINT re-enables the constraint.

J.Usunięcie ograniczenia

W następującym przykładzie usunięto UNIQUE ograniczenie z tabela.

Wiersze mogą być tak szerokie, czasami dany operator nie może przetworzyć w wierszu.Przełączanie partycje między tabelami

Poniższy przykład tworzy tabela partycjonowana, przy założeniu, że ten schemat partycji myRangePS1 już jest tworzony w bazie danych. Następnie tabeli innej niż na partycje jest tworzony z taką samą strukturę jak tabela partycjonowana i na tym samym grupa plików jako PARTITION 2 z tabeli PartitionTable. Dane PARTITION 2 z tabela PartitionTable następnie jest włączane do tabela NonPartitionTable.

CREATE TABLE PartitionTable (col1 int, col2 char(10))
ON myRangePS1 (col1) ;
GO
CREATE TABLE NonPartitionTable (col1 int, col2 char(10))
ON test2fg ;
GO
ALTER TABLE PartitionTable SWITCH PARTITION 2 TO NonPartitionTable ;
GO

L.Wyłączenie i ponowne włączenie wyzwalacza

The following example uses the DISABLE TRIGGER option of ALTER TABLE to disable the trigger and allow for an insert that would typically violate the trigger.ENABLE TRIGGER is then used to re-enable the trigger.

Podmioty związanych ze schematem.Tworzenie ograniczenia klucz podstawowy przy użyciu opcji indeksu

Poniższy przykład tworzy ograniczenia klucz podstawowy PK_TransactionHistoryArchive_TransactionID i ustawia opcje FILLFACTOR, ONLINE, a PAD_INDEX. Wynikowy indeks klastrowany będą miały taką samą nazwę jak ograniczenia.

Podmioty bazy danych poza granice i wielu serwerów.Upuszczanie ograniczenia klucz podstawowy w trybie ONLINE

W następującym przykładzie usunięto ograniczenia klucz podstawowy z ONLINE Ustaw wartość opcji ON.

O.Dodanie i usunięcie ograniczenia klucz obcy

Poniższy przykład tworzy w tabela ContactBackup, a następnie dodając zmienia najpierw tabela, FOREIGN KEY ograniczenie, które odwołuje się do tabela Contact, następnie według upuszczanie FOREIGN KEY ograniczenie.

STR.Zmiana rozmiaru kolumna

Poniższy przykład powoduje zwiększenie rozmiarów varchar kolumny, precyzji i skali decimal Kolumna. Ponieważ dane w kolumnach danych, rozmiar kolumna tylko może być zwiększana.Również zauważyć, że col_a jest zdefiniowany w indeks unikatowy. Rozmiar col_a wciąż może być zwiększana, ponieważ typ danych jest varchar i indeks nie jest wynikiem ograniczenia klucz podstawowy.

IF OBJECT_ID ( 'dbo.doc_exy', 'U' ) IS NOT NULL 
    DROP TABLE dbo.doc_exy;
GO
-- Create a two-column table with a unique index on the varchar column.
CREATE TABLE dbo.doc_exy ( col_a varchar(5) UNIQUE NOT NULL, col_b decimal (4,2));
GO
INSERT INTO dbo.doc_exy VALUES ('Test', 99.99);
GO
-- Verify the current column size.
SELECT name, TYPE_NAME(system_type_id), max_length, precision, scale
FROM sys.columns WHERE object_id = OBJECT_ID(N'dbo.doc_exy');
GO
-- Increase the size of the varchar column.
ALTER TABLE dbo.doc_exy ALTER COLUMN col_a varchar(25);
GO
-- Increase the scale and precision of the decimal column.
ALTER TABLE dbo.doc_exy ALTER COLUMN col_b decimal (10,4);
GO
-- Insert a new row.
INSERT INTO dbo.doc_exy VALUES ('MyNewColumnSize', 99999.9999) ;
GO
-- Verify the current column size.
SELECT name, TYPE_NAME(system_type_id), max_length, precision, scale
FROM sys.columns WHERE object_id = OBJECT_ID(N'dbo.doc_exy');

Q.Zezwalanie eskalacja blokad na tabelach podzielonym na partycje

Poniższy przykład włącza eskalacja blokad poziom partycji na podzielonym na partycje tabela.Jeśli tabela nie jest podzielony na partycje, eskalacji blokada jest tabela poziomie.

ALTER TABLE T1 SET (LOCK_ESCALATION = AUTO)
GO

R.Konfigurowanie zmian w tabela

Poniższy przykład włącza śledzenie zmian Person.Contact Tabela w AdventureWorks Baza danych.

Poniższy przykład włącza rejestrowanie zmian i umożliwia śledzenie kolumny, które są aktualizowane podczas zmiany.

Następujący przykład wyłącza śledzenie zmian Person.Contact Tabela w AdventureWorks Baza danych:

Po przerwaniu tabela, widok jest niezdatny do użytku.Modyfikowanie tabela, aby zmienić kompresji

W poniższym przykładzie zmienia kompresję nonpartitioned tabela.Sterty lub indeks klastrowany zostaną zbudowane ponownie.Jeśli tabela jest sterty, wszystkie nieklastrowany indeksy zostaną zbudowane ponownie.

ALTER TABLE T1 
REBUILD WITH (DATA_COMPRESSION = PAGE);

W poniższym przykładzie zmienia kompresję tabela partycjonowana.The REBUILD PARTITION = 1 syntax causes only partition number 1 to be rebuilt.

ALTER TABLE PartitionTable1 
REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  NONE) ;
GO

Tę samą operację, używając następującej składni alternatywne powoduje, że wszystkie partycje w tabela, która ma zostać ponownie zbudowana.

ALTER TABLE PartitionTable1 
REBUILD PARTITION ALL 
WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(1) ) ;

Dodatkowe dane kompresji przykłady można znaleźć w temacie Creating Compressed Tables and Indexes.

T.Dodawanie kolumna rozrzedzona

Następujące przykłady pokazują, dodawanie i modyfikowanie rozrzedzone kolumn w tabela T1.Kod, który chcesz utworzyć tabela T1 jest następująca:

CREATE TABLE T1
(C1 int PRIMARY KEY,
C2 varchar(50) SPARSE NULL,
C3 int SPARSE NULL,
C4 int ) ;
GO

Aby dodać dodatkową kolumna rozrzedzona C5, wykonaj następujące czynności instrukcja.

ALTER TABLE T1
ADD C5 char(100) SPARSE NULL ;
GO

Aby przekonwertować C4 -sparse kolumna do kolumna rzadkie, wykonaj następujące instrukcja.

ALTER TABLE T1
ALTER COLUMN C4 ADD SPARSE ;
GO

Aby przekonwertować C4 kolumna rozrzedzona nonsparse kolumnę, wykonać następującą instrukcję.

ALTER TABLE T1
ALTER COLUMN C4 DROP SPARSE;
GO

U.Dodawanie zestaw kolumn

Poniższe przykłady pokazują, dodając kolumna do tabela T2. Nie można dodać zestaw kolumn do tabela, która już zawiera rozrzedzone kolumn.Kod, który chcesz utworzyć tabela T2 jest następująca:

CREATE TABLE T2
(C1 int PRIMARY KEY,
C2 varchar(50) NULL,
C3 int NULL,
C4 int ) ;
GO

Trzy następujące instrukcje dodania kolumna nazwanego zestaw CS, a następnie zmodyfikować kolumna C2 i C3 Aby SPARSE.

ALTER TABLE T2
ADD CS XML COLUMN_SET FOR ALL_SPARSE_COLUMNS ;
GO

ALTER TABLE T2
ALTER COLUMN C2 ADD SPARSE ; 
GO

ALTER TABLE T2
ALTER COLUMN C3 ADD SPARSE ;
GO

Historia zmian

Microsoft Learning

Stałe eskalacji blokada opcji AUTO.

Dodany do właściwości składni [SPARSE] (przed [NULL | NOT NULL].

Dodatkowe informacje na temat UDTs, wartości domyślne i opcje dopuszczania wartości null do sekcji argumenty.

Dodano informacje dodatkowe do definicji ROZRZEDZANIA składni sekcji argumenty.