ALTER tablo (Transact-SQL)

Tablo tanımını değiştirme, ekleme veya sütun kısıtlamaları, bölümü yeniden atama veya devre dışı bırakma veya etkinleştirme kısıtlamaları ve tetikleyiciler bırakarak değiştirir.

Topic link iconTransact-SQL sözdizimi kuralları

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} }
}

Bağımsız değişkenler

  • database_name
    , Veritabanı adı tablo oluşturuldu.

  • schema_name
    Olan şema adı tablo ait.

  • table_name
    Değiştirilecek tablonun adı'dır.Tablo geçerli veritabanında değil veya geçerli kullanıcıya ait şema bulunmayan, veritabanı ve şema açıkça belirtilmelidir.

  • SÜTUN DEĞİŞTİRME
    Adlandırılmış sütun değiştirilmiş veya değiştirilmiş olduğunu belirtir.ALTER sütun uyumluluk düzey 65 veya daha düşük olması durumunda izin verilmez.Daha fazla bilgi için bkz: sp_dbcmptlevel (Transact-SQL).

    Değiştirilmiş bir sütun, aşağıdakilerden biri olamaz:

    • Bir sütun içeren birtimestampveri türü.

    • Tablo ROWGUIDCOL.

    • Bir hesaplanan sütun veya hesaplanmış bir sütunda kullanılır.

    • Sütun değilse, dizin içinde kullanılan birvarchar,nvarchar, orvarbinaryveri türü veri türü değiştirilmiş, yeni boyutunu eşit veya eski boyutundan büyük ve dizin değil sonuç birincil anahtar kısıtlaması.

    • Sütun değilse STATISTICS CREATE deyim ile oluşturulan istatistiklere kullanılan birvarchar,nvarchar, orvarbinaryveri türünü veri türü değişmez ve yeni boyutu eski boyutundan büyük veya eşit veya sütun null null. değiştirilirseİlk olarak, DROP STATISTICS deyim ile İstatistikler kaldırın.sorgu iyileştiricisi tarafından otomatik olarak oluşturulan istatistikleri ALTER sütun tarafından otomatik olarak bırakılır.

    • birincil anahtar veya [yabancı anahtar] başvurular bir kısıtlama kullanılır.

    • CHECK veya benzersiz kısıtlama kullanılır.Ancak, bir CHECK veya UNIQUE sınırlamasıyla kullanılan bir değişken uzunlukta sütun uzunluğunu değiştirme verilir.

    • Bir varsayılan ilişkili.Veri türü değişmez, ancak, uzunluk, duyarlık ve sütun ölçeğini değiştirebilirsiniz.

      Veri türütext,ntextveimagesütun yalnızca aşağıdaki gibi değiştirilebilir:

      • texttovarchar(max),nvarchar(max), orxml

      • ntexttovarchar(max),nvarchar(max), orxml

      • image Kime varbinary(max)

      Bazı veri türü değişiklikleri verilerde değişiklik neden olabilir.Değiştirerek örneğin, birncharornvarcharsütuncharorvarcharneden dönüştürme genişletilmiş karakterler.Daha fazla bilgi için bkz: CAST ve CONVERT (Transact-SQL). sütun ölçeğini ve duyarlılığını azaltarak, veri kesilmesi neden olabilir.

      Bölümlenmiş tablonun sütun veri türü değiştirilemez.

  • column_name
    Is the name of the column to be altered, added, or dropped.column_name can be a maximum of 128 characters.Yeni sütun için column_nameoluşturulan sütunlar için atlanabilir birtimestampveri türü.Adıtimestamphiçbir kullanılırcolumn_nameiçin belirtilen birtimestampveri türü sütununu tıklatın.

  • [ 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:

    • ASQL Serververi türü.

    • Bir diğer ad veri türü esas alan birSQL Serververi türü.diğer ad ad veri türleri, Tablo tanımı kullanılmadan önce CREATE TYPE deyim ile oluşturulur.

    • 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.

    Aşağıda ölçütleritype_namedeğiştirilmiş bir sütun:

    • Önceki veri türü için yeni veri türüne örtük olarak dönüştürülebilir olmalıdır.

    • type_nameolamaztimestamp.

    • ANSI_NULL varsayılan ALTER sütun için; her zaman bulunan belirtilmediğinde, sütuna NULL olur.

    • ANSI_PADDING doldurma, her zaman için ALTER sütun açık olur.

    • Değiştirilmiş bir sütun kimlik sütunu isenew_data_typedestekleyen veri türü olmalıdır kimlik özelliğini.

    • ARITHABORT küme için geçerli ayarları dikkate alınmaz.ARITHABORT ON olarak ayarlandığında, ALTER tablo çalışır.

    Not

    sütun veri türünü değiştirme, COLLATE yan tümcesini belirtilmezse, veritabanının varsayılan harmanlama harmanlama değişiklik neden olur.

  • precision
    Belirtilen veri türü için duyarlılık belirtilir.Geçerli kesinlik değerleri hakkında daha fazla bilgi için bkz:Duyarlık, Ölçek ve Uzunluk (Transact-SQL).

  • scale
    Belirtilen veri türünün ölçeği belirtilir.Geçerli ölçek değerleri hakkında daha fazla bilgi için bkz:Duyarlık, Ölçek ve Uzunluk (Transact-SQL).

  • en büyük
    Yalnızca geçerlivarchar,nvarchar, vevarbinaryveri türlerini depolamak 2 ^ 31-1 bayt karakteri, ikili veri ve Unicode veri.

  • xml_schema_collection
    Yalnızca geçerlixmlveri türü ilişkilendirme bir XML şeması yazın.Yazmadan önce birxmlsütun için bir şema koleksiyon şema koleksiyon gereken ilk oluşturulabilir kullanarak veritabanındakiCREATE XML SCHEMA koleksiyon.

  • COLLATE < collation_name >
    Değiştirilen sütun için yeni alfabe belirtir.Belirtilmezse, sütun veritabanının varsayılan harmanlama olarak atanır.Harmanlama adı, bir Windows harmanlama adı veya bir SQL Harmanlaması adı olabilir.Liste ve daha fazla bilgi için bkz:Windows harmanlaması adı (Transact-SQL)veName (Transact-SQL) SQL Server harmanlama.

    HARMANLAMA yan tümcesini, yalnızca sütunların harmanlamaları değiştirmek için kullanılabilirchar,varchar,nchar, venvarcharveri türü.diğer ad ad kullanıcı tanımlı veri türünü sütunun harmanlama değiştirmek için sütun değiştirmek için ALTER tablo deyimleri ayrı çalıştırmak birSQL ServerSistem verilerini yazın ve değiştirin, harmanlama ve değiştirin sütun yeniden diğer ad ad adı yazın.

    ALTER sütun, harmanlama değiştirme olamaz, bir veya daha aşağıdaki koşulları:

    • CHECK kısıtlaması, değişen sütun yabancı anahtar kısıtlaması veya hesaplanmış sütun başvurusu.

    • Herhangi bir dizin, sütun istatistikleri ve tam metin dizini oluşturulur.Sütun harmanlama değiştirilirse Değişti sütunu otomatik olarak oluşturulan istatistikleri bırakılır.

    • Bir şemaya bağlı görünüm veya işlevin sütun başvuruyorsa.

    Daha fazla bilgi için bkz: (Transact-SQL) HARMANLA.

  • SEYREK | NULL | BOŞ DEĞİL
    Sütun seyrek bir sütun veya null değerleri kabul edebilir olup olmadığını belirtir.Değiştirilecek sütun seyrek sütun ise, bu özellik veya sütunu nonsparse bir sütun döner açıkça belirtmeniz gerekir.Seyrek sütun olamaz belirlenmiş olarak bir NOT NULL.Nonsparse için seyrek veya nonsparse seyrek için Kilit sütun dönüştürme tablo komut yürütme süresi.

    Ek kısıtlamalar ve seyrek sütunlar ve null atanabilirlik, daha fazla bilgi için bkz:Seyrek sütunları kullanma.

    Sütun için varsayılan bir değer belirtirseniz veya tüm tabloyu boşsa null değerlere izin vermeyen sütunlara ALTER tablo ile eklenebilir.NOT NULL yalnızca PERSISTED de belirtilmişse hesaplanan sütunlar için belirtilebilir.Yeni bir sütun null değeri ve varsayılan belirtilen izin veriyorsa, yeni sütun her satır için null değer içerir tablo.Yeni bir sütun null değerlere izin verir ve varsayılan tanımını yeni bir sütun eklenir, VALUES ile yeni bir sütun var her satırı için varsayılan değer depolamak için kullanılabilir tablo.

    Yeni bir sütun null değerlere izin vermiyorsa, tablo olan boş değil, varsayılan tanımlama ile yeni bir sütun eklenmesi ve varolan her satırın. yeni sütunlar varsayılan değer yeni sütunu otomatik olarak yükler

    NULL, birincil anahtar kısıtlamaları sütun haricinde, boş değerlere izin vermek için NOT NULL sütun zorlamak için ALTER COLUMN de belirtilebilir.NOT NULL sütun null değer içeriyorsa ALTER COLUMN belirtilebilir.ALTER sütun NOT NULL, örneğin izin verilmeden önce boş değerler bazı değere güncelleştirilmelidir:

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

    Oluşturma veya değiştirme CREATE TABLE ya da ALTER TABLE deyimleri içeren bir tablo veritabanı ve oturum ayarlarını etkileyen ve büyük olasılıkla veri türünde bir sütun tanımında kullanılan null atanabilirlik geçersiz kılar.Her zaman, açıkça bir sütun boş olarak tanımlamak veya NOT NULL sütunlarını noncomputed öneririz.

    Bir kullanıcı tanımlı veri türüne sahip bir sütun eklerseniz, sütun null özellik kullanıcı tanımlı veri türü olarak aynı null atanabilirlik ile tanımlar ve sütun için varsayılan bir değer belirtmeniz önerilir.Daha fazla bilgi için bkz: tablo (Transact-SQL) CREATE.

    Not

    , NULL veya NOT NULL ALTER sütun'ile belirtilennew_data_type(precision,scale])] de belirtilmelidir.Veri türü, kesinlik ve ölçek değiştirilmez, geçerli sütun değerlerini belirtin.

  • [{EKLE | BIRAK} ROWGUIDCOL]
    ROWGUIDCOL özellik eklenen veya belirtilen bırakılan belirtir sütun.ROWGUIDCOL sütun satır GUID sütun gösterir.Tek biruniqueidentifierher sütunun tablo ROWGUIDCOL sütun olarak belirlenmiş ve ROWGUIDCOL özellik yalnızca atanan biruniqueidentifiersütun.ROWGUIDCOL olamaz atanmış bir sütun kullanıcı tanımlı veri türü.

    ROWGUIDCOL değil zorunlu saklanan değerlerin benzersiz sütun ve tabloya eklenen yeni satırlar için değerleri otomatik olarak oluşturmaz.Her sütun için benzersiz değerleri oluşturmak için NEWID işlevini INSERT deyimlerini kullanın ya NEWID işlev sütun için varsayılan olarak belirtin.

  • [{EKLE | BIRAK} KALICI]
    PERSISTED özellik eklenen veya belirtilen sütundan bırakılan belirtir.Sütun olması gereken bir hesaplanan sütun belirli bir ifadeyle tanımlanır.PERSISTED ' belirtilen sütunlar içinDatabase Enginefiziksel olarak hesaplanan değerler tabloda saklar ve hesaplanan sütun bağımlı olduğu diğer sütunlara güncelleştirildiğinde değerlerini güncelleştirir.Hesaplanan bir sütun PERSISTED olarak işaretleyerek belirli ancak kesin olmayan ifadelerini tanımlanan hesaplanan sütunlar üzerinde dizinler oluşturabilirsiniz.Daha fazla bilgi için bkz: Hesaplanan sütunlar üzerinde dizin oluşturma.

    Herhangi bir bölümleme sütununda bir bölümlenmiş kullanılan sütun hesaplanan tablo açıkça PERSISTED. işaretlenmelidir

  • ÇOĞALTMA İÇİN BIRAKIN
    Değerleri çoğaltma aracıları ekleme işlemi gerçekleştirdiğinizde kimlik sütunlarının artırılır belirtir.Yalnızca bu yan belirtilebilircolumn_namebir kimlik sütun.Daha fazla bilgi için bkz: Sınırlamaları, kimlik ve Tetikleyicileri NOT ile denetlemek IÇIN çoğaltma.

  • SEYREK
    Seyrek sütun sütun eklenir veya kayıp olduğunu belirtir.Depolama Birimi seyrek sütun null değerleri için optimize edilmiştir.Seyrek sütun olamaz belirlenmiş olarak bir NOT NULL.Nonsparse için seyrek veya nonsparse seyrek için Kilit sütun dönüştürme tablo komut yürütme süresi.

    Not

    Her seferinde SPARSE özelliğini belirlemelisiniz sütunu değiştirmek ya da sütun nonsparse bir sütun döner.

    Ek kısıtlamalar ve seyrek sütunları hakkında daha fazla bilgi için bkz:Seyrek sütunları kullanma.

  • ONAY İLE | NOCHECK İLE
    Tablo verileri veya bir yeni eklenen veya yeniden yabancı anahtar veya CHECK kısıtlaması karşı doğrulanır olup olmadığını belirtir.Yoksa belirtilen ile CHECK yeni kısıtlamalar için kabul edilir ve NOCHECK ile yeniden kısıtlamaları kabul edilir.

    Varolan verilere karşı yeni CHECK veya yabancı anahtar kısıtlamaları doğrulamak istiyorsanız, WITH NOCHECK kullanın.Nadiren de olsa, dışında yapılması önerilmez.Yeni bir kısıtlama, daha sonra tüm veri güncelleştirmelerini değerlendirilecek.Kısıtlama eklendiğinde, ile NOCHECK tarafından görüntülenmez kısıtlama ihlalleri gelecekteki güncelleştirmeleri, kısıtlama ile uyumlu veri satırları güncelleştirmesi başarısız olmasına neden olabilir.

    Sorgu iyileştirici kısıtlamaları olan NOCHECK ile tanımlanan dikkate almaz.Bu tür kısıtlamalar kadar ALTER tablo kullanarak re-enabled yoksayılırtableCHECK CONSTRAINT ALL.

  • ADD
    Bu bir veya daha fazla sütun tanımları, hesaplanmış bir sütun tanımları belirtir veya tablo kısıtlamalara eklenir.

  • DROP {[CONSTRAINT] constraint_name| sütun column_name}
    Belirtirconstraint_nameorcolumn_namekaldırılır tablo.Birden çok sütun ve kısıtlamaları listelenebilir.

    Kısıtlamanın sistem tarafından sağlanan ya da kullanıcı tanımlı adını sorgulayarak belirlenebilirsys.check_constraint, sys.default_constraintssys.key_constraints ve sys.foreign_keys katalog görünümleri.

    A birincil anahtar kısıtlaması olamaz kesildiğinde, bir XML dizini mevcut tablo.

    , Bir sütun kesilmesini olamaz:

    • Dizin içinde kullanılır.

    • Bir CHECK, yabancı anahtar, UNIQUE veya birincil anahtar kısıtlaması kullanılır.

    • VARSAYILAN anahtar sözcüğüyle tanımlanan veya ilişkili bir varsayılan nesne için varsayılan bir ilişkili.

    • Bağlı bir kural.

    Not

    Bir sütuna bırakarak sütunun disk alanını geri değil.Büyütülmüş sütun disk alanını geri kazanmak olabilir, satır boyutunu bir tablo ya da aştı, sınırına yakın olduğu.Geri alan kümelenmiş dizin oluşturarak tablo veya varolan bir yeniden kümelenmiş dizin kullanarakALTER INDEX.

  • İLE > < drop_clustered_constraint_option
    Kümelenmiş kısıtlama seçeneklerini küme, bir veya daha fazla bırakma belirtir.

  • MAXDOP = max_degree_of_parallelism
    Geçersiz kılaren büyük ölçüde parallelism yalnızca süre operasyon. yapılandırma seçeneği Daha fazla bilgi için bkz: parallelism seçeneği en büyük ölçüde.

    Paralel planı yürütme kullanılan işlemci sayısını sınırlamak için MAXDOP seçeneğini kullanın.En fazla 64 işlemci ' dir.

    max_degree_of_parallelism Aşağıdaki değerlerden biri olabilir:

    • 1
      Paralel planı oluşturma bastırır.

    • >1
      Işlemci için belirtilen bir paralel dizin işleminde kullanılan en fazla sayısını sınırlar.

    • 0 (varsayılan)
      Işlemci veya daha az geçerli sistem iş yükünün alarak fiili numarasını kullanır.

    Daha fazla bilgi için bkz: Parallel ındex işlemi yapılandırma.

    Not

    Paralel dizin işlemleri yalnızca kullanılabilir SQL Server Enterprise Developer ve değerlendirme sürümleri.

  • ONLINE = { ON | Kapalı }
    Temel tabloları ve ilişkili dizinler için dizini işlemi sırasında sorguları ve veri değişikliği kullanılabilir olup olmadığını belirtir.Varsayılan değer KAPALı'dır.YENİDEN çevrimiçi bir işlem olarak gerçekleştirilebilir.

    • AÇIK
      Uzun süreli tablo kilitlerin dizin işlemi süresince tutulur.Ana dizin işlem aşamasında, kaynağı üzerinde yalnızca bir hedefi Paylaştır'ı (IS) kilit tutulduğu tablo.Bu, sorgu veya temel alınan tablo ve devam etmek için dizin güncelleştirmelerini sağlar.İşlem başlangıcında, paylaşılan (S) kilit çok kısa bir saat için kaynağı nesnesinde tutulur.Kısa bir saat için işlemi sonunda kümelenmemiş bir dizin oluşturulursa; kaynak S (paylaşılan) bir kilit alınan veya bir SCH-M (şema değişikliği) kilit, kümelenmiş dizin oluşturulduğunda veya çevrimiçi bıraktı ve bir küme veya kümelenmemiş dizin yeniden alındı.ÇEVRIMIÇI olamaz küme dizin yerel geçici tablo oluşturulduğunda) açık.

    • Kapalı
      Tablo kilidi dizin işlemi süresince geçerli olur.Üzerinde bir Şema değiştirme (Sch-M) kilit oluşturur, yeniden oluşturur, kümelenmiş dizin düşünceye veya yeniden oluşturur veya kümelenmemiş bir dizin düşünceye çevrimdışı dizin işlem edinme tablo.Bu, tüm kullanıcı erişimini engeller temel alınan tablo işlemi süresince.Bir çevrimdışı dizin işlem kümelenmemiş bir dizin oluşturur, paylaşılan (S) kilit üzerinde edinme tablo.Bu güncelleştirmelerin temel tablonun engeller, ancak okuma işlemleri için SELECT deyimlerinin gibi sağlar.

    Daha fazla bilgi için bkz: Çevrimiçi'ne dizin işlem çalışma. Kilitlerin hakkında daha fazla bilgi için bkz: Kilit modu.

    Not

    Çevrimiçi bir dizin işlemleri yalnızca kullanılabilir SQL Server Enterprise Developer ve değerlendirme sürümleri.

  • MOVE TO { partition_scheme_name**(** column_name [ 1**,** ... n] ) | filegroup | "default" }
    Veri satırları şu anda kümelenmiş dizin yaprak düzeyine taşımak için bir konum belirtir.Tabloyu yeni konuma taşınır.

    Not

    Bu bağlamda, varsayılan anahtar değil.It is an identifier for the default filegroup and must be delimited, as in MOVE TO "default" or MOVE TO [default].If" varsayılan " belirtilmişse, QUOTED_IDENTIFIER seçeneği açık olmalıdır geçerli oturum. için Bu, varsayılan ayardır.Daha fazla bilgi için bkz: küme QUOTED_IDENTIFIER (Transact-SQL).

  • {DENETLEME | NOCHECK} KISITLAMA
    Belirtirconstraint_nameetkin veya devre dışı.Bu seçenek yalnızca yabancı anahtar ve CHECK) kısıtlamaları ile kullanılabilir.NOCHECK belirtildiğinde kısıtlamadır devre dışı bırakılmış ve gelecekte ekler veya sütuna güncelleştirmeleri kısıtlama koşullara karşı doğrulanır.DEFAULT, birincil anahtar, UNIQUE kısıtlamaları devre dışı bırakılamaz.

  • ALL
    Tüm kısıtlamalar NOCHECK seçeneği devre dışı veya CHECK seçeneği etkin olduğunu belirtir.

  • {ETKİNLEŞTİRMEK | DEVRE DIŞI} TETİKLEYİCİ
    Belirtirtrigger_nameetkin veya devre dışı.Tetikleyici devre dışı bırakıldığında, hala tablo için tanımlanmış; ancak, INSERT, UPDATE veya DELETE deyimleri, tetikleyici eylemleri tabloda yürütülen değil gerçekleştirilir tetikleyici yeniden etkinleştirilinceye kadar.

  • ALL
    Tüm tetikleyen içinde olduğunu belirtir tablo etkin veya devre dışı.

  • trigger_name
    Etkinleştirmek veya devre dışı bırakmak için tetikleyici adını belirtir.

  • {ETKİNLEŞTİRMEK | DEVRE DIŞI} CHANGE_TRACKING
    Değişiklik izleme tablo için etkinleştirilen devre dışı olduğunu belirtir.Varsayılan olarak, değişiklik izlemeyi devre dışı bırakılır.

    Bu seçenek, yalnızca değişiklik izleme veritabanı için etkinleştirildiğinde kullanılabilir.Daha fazla bilgi için bkz: DATABASE küme seçenekleri (Transact-SQL) ALTER.

    İzleme, değişiklik yapabilmek için tablo bir birincil anahtar olmalıdır.

  • WITH**(** TRACK_COLUMNS_UPDATED = { ON | OFF } )
    Belirtir olupDatabase Engine, izlenen sütunları değiştirme parçaları güncelleştirilmiş.Varsayılan değer KAPALı'dır.

  • ANAHTAR [PARTITION source_partition_number_expression] TO [ schema_name**.** ] target_tablePARTITION target_ partition_number_expression]
    Bir veri blok, aşağıdaki yollardan biriyle geçer:

    • Bir bölümü zaten-varolan bir tablonun tüm verileri yeniden atar bölümlenmiş tablo.

    • Bir bölümü, bir geçiş bölümlenmiş tablo diğerine.

    • Tüm verileri bir bölümünü yeniden atar bir bölümlenmiş tablo olmayan varolan-bölümlenmiş tablo.

    Iftablebölümlenmiş bir tablosource_partition_number_expressionbelirtilmelidir.Iftarget_tablebölümlenmiş,target_partition_number_expressionbelirtilmelidir.Bir tablonun verisini bir bölümü zaten varolan bölümlenmiş tablo veya bölüm bölümlenmiş bir tablodan diğerine geçmek için yeniden atama, hedef bölüm olması gerekir ve boş olması gerekir.

    Bir bölümün veri tek bir tablo oluşturmak için yeniden atama, hedef tabloda zaten oluşturulmalı ve boş olması gerekir.Hem kaynak tablo veya bölüm ve hedef tablo veya bölüm, aynı dosya grubu içinde yer alması gerekir.İlgili dizin veya dizin bölümleri aynı dosya grubu da bulunması gerekir.Bölümler arasında geçiş için birçok ek kısıtlamalar uygulanır.For more information, see Veri bölümü değiştirme'yi kullanarak verimli aktarılıyor.table and target_table cannot be the same.target_table can be a multi-part identifier.

    source_partition_number_expressionvetarget_partition_number_expressionolan sabit ifadeler değişkenleri ve işlevleri başvuruBu tür kullanıcı tanımlı değişkenler ve kullanıcı tanımlı işlevler içerir.Oldukları olamazTransact-SQLifadeler.

    Not

    SWITCH deyim, yinelenen tablolarda kullanamazsınız.

  • küme**(** FILESTREAM_ON = { partition_scheme_name|filestream_filegroup_name|"default" | "NULL"} )
    FILESTREAM verilerin depolandığı belirtir.

    Tablonun FILESTREAM bir sütun varsa, ALTER tablo FILESTREAM_ON küme yan tümce ile başarılı olur.FILESTREAM sütun, ikinci bir ALTER tablo deyim kullanılarak eklenebilir.

    Ifpartition_scheme_namebelirtilen kurallarıCREATE tablo apply.Tablo zaten satır veri bölümlenmesi ve FILESTREAM bölümleme düzeni olarak bölümü ile aynı işlev ve sütunlar, bölümün düzeni kullanmanız gerekir.

    filestream_filegroup_name FILESTREAM dosya grubunun adını belirtir.dosya grubu kullanarak dosya grubu için tanımlanan bir dosya olmalıdır birCREATE DATABASEALTER DATABASE deyimini veya hataya neden oldu.

    " varsayılan " varsayılan özellik kümesi. ile FILESTREAM dosya grubu belirtir Hiçbir FILESTREAM dosya grubu varsa, hata oluşur.

    "NULL" belirtir FILESTREAM dosya gruplarını tablosu için yapılan tüm başvurular kaldırılacak. Tüm FILESTREAM sütunlarının ilk bırakılan gerekir.küme FILESTREAM_ON kullanmanız gerekir**="NULL"** bir tablo. ile ilişkili olan tüm FILESTREAM verileri silmek için

  • küme ( LOCK_ESCALATION = {AUTO | tablo | DISABLE})
    kilit yükseltme bir tablo için izin verilen yöntemlerini belirtir.

    • OTOMATİK
      Bu seçenek sağlarSQL Server Database EngineTablo şeması. uygunsa kilit yükseltme taneciklik seçmek için

      • Tablo bölümlere ayrılmışsa, kilit yükseltme bölüme verilir.Kilit bölüm escalated sonra düzey, kilit daha sonra tablo taneciklik için escalated değil.

      • Bölümlenmiş tablonun, kilit yükseltme için tablo parçalı'yapı yapılır.

    • TABLO
      kilit yükseltme tablo bölümlere veya değil bölümlenmiş Tablo düzey taneciklik sırasında bakılmaksızın yapılır.Bu davranış aynı değilSQL Server 2005.Tablo varsayılan değerdir.

    • Disable
      Çoğu durumda kilit yükseltme engeller.Tablo düzey kilit tamamen izni değil.Örneğin, bir tablo taraması olan seri hale getirilebilir yalıtım düzeyinin altında kümelenmiş dizin yokDatabase Enginekoruma bir tablo kilit olması gerekir veri bütünlüğünü.

  • YENİDEN OLUŞTURMA
    Tüm bölümler de dahil olmak üzere tüm tabloyu yeniden oluşturmak için yeniden ile sözdizimini kullanın bir bölümlenmiş tablo.tablo Kümelenmiş bir dizin olan yeniden oluşturma seçeneği kümelenmiş dizin oluşturur.YENİDEN çevrimiçi bir işlem olarak gerçekleştirilebilir.

    Bölümlenmiş bir tek bölümü yeniden yeniden PARTITION sözdizimini kullanın tablo.

  • BÖLÜM = ALL
    Tüm bölümlerin bölüm sıkıştırma ayarlarını değiştirirken oluşturur.

  • İLE yeniden (< rebuild_option >)
    kümelenmiş dizin içeren bir tablo için tüm seçenekleri uygulanır.tablo Yığın yapısı kümelenmiş dizin yalnızca etkilenen seçeneklerden bazıları sahip olur.

    Yeniden oluşturma seçenekleri, tam açıklaması için bkz:index_option (Transact-SQL).

  • data_compression
    Veri sıkıştırma seçeneği belirtilen tablo, bölüm numarası veya bölüm aralık belirtir.Seçenekler aşağıdaki gibidir:

    • Yok
      Tablo ya da belirli bölümlerini sıkıştırılır değil.

    • SATIR
      Tablo ya da belirtilen bölümleri satır sıkıştırması kullanılarak sıkıştırılır.

    • SAYFA
      Tablo ya da belirtilen bölümleri sayfa sıkıştırması kullanılarak sıkıştırılır.

    Aynı anda birden çok bölümü yeniden oluşturmak için bkz:index_option (Transact-SQL).tablo Öbek ve kümelenmemiş dizinleri veri sıkıştırma yeniden değiştirerek, kümelenmiş dizin yok.Sıkıştırma hakkında daha fazla bilgi için bkz: Sıkıştırılmış tablolar ve dizinler oluşturma.

  • column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS
    Sütun adı küme.Bir sütunun küme yapılandırılmış bir çıkış tablosunun seyrek sütunların tümünü birleştiren bir türlenmemiş XML temsilidir.Bir sütun kümesi eklenemiyor bir tablo, seyrek sütun içerir.Sütun kümeleri hakkında daha fazla bilgi için bkz:Sütun kümesi'ni kullanma.

Remarks

Yeni veri satırları eklemek için kullanın.INSERT.Veri satırlarını kaldırmak içinDELETE or TRUNCATE tablo.Varolan satır değerlerini değiştirmek içinUPDATE.

Başvuru tablosu, ALTER tablo, sonraki yürütülmesine derlenmiş çekirdekler için işaretler bir yürütme planları yordam önbelleği varsa.

sütun boyutunu değiştirme

ALTER COLUMN yan tümcesindeki sütun veri türü için yeni bir boyut belirterek, uzunluk, duyarlık ve bir sütunun ölçeğini değiştirebilirsiniz.Yeni boyutu, veri sütun varsa, verilerin en büyük boyuttan daha küçük olamaz.Sütun değilse de, sütun bir dizinde tanımlanamaz birvarchar,nvarchar, orvarbinaryveri türü dizin ise değil sonuç birincil anahtar kısıtlaması.Örnek: P.

Kilitler ve ALTER tablo

ALTER tablo'içinde belirtilen değişiklikler hemen uygulanır.Tablodaki satırların değişiklikleri değişiklikler gerektiren, ALTER tablo satırları güncelleştirir.ALTER tablo edinme bir şemayı başka bir bağlantı sırasında en çok kısa bir SCH-M kilit gerektiren çevrimiçi dizin işlemleri dışında değişikliği bile meta veriler tablosu için başvuru olduğundan emin olmak için tablonun üzerinde kilit değiştirin.ALTER tablo…SWITCH işleminde, kilit kaynak ve hedef tabloyu elde.Tabloya yapılan değişiklikler şunlardır: oturum açmış ve tümüyle kurtarılabilir.Değişiklikleri bir sütun silmek gibi çok büyük tablolarda tüm satırları etkiler veya NOT NULL bir varsayılan bir sütun ekleyerek birçok günlük kayıtları oluşturun ve bir uzun saat alabilir.Bu ALTER tablo deyimleri içeren bir INSERT, UPDATE olarak aynı bakım yürütülmelidir veya DELETE deyim, çok sayıda etkiler.

Paralel planı yürütme

InSQL Server 2008 Enterprise, işlemci görevli bir tek ALTER tablo ADD (dizin göre) çalıştırılacak CONSTRAINT veya DROP (kümelenmiş dizin) CONSTRAINT deyiminin tarafından belirleniren büyük ölçüde parallelism yapılandırma seçeneği ve geçerli iş yükünü.,Database Enginealgılar, sistemin meşgul, önce otomatik olarak işlem parallelism ölçüde azaltılır deyim yürütme başlar.MAXDOP seçeneği belirterek deyim çalıştırmak için kullanılan işlemci sayısını el ile yapılandırabilirsiniz.

Bölümlenmiş tablolar

bölümlenmiş tablo S ilgili anahtar işlemleri gerçekleştirme yanında, ALTER TABLE sütunlar, kısıtlamaları ve tetikleyiciler, durumunu değiştirmek için kullanılabilir bir bölümlenmiş tablo gibi yalnızca nonbölümlenmiş tablos için kullanılır.Ancak, bu deyim biçimini değiştirmek için kullanılamaz tablo kendisini bölümlendirilir.Bölümlenmiş bir yeniden tablo, kullanmaALTER PARTITION düzeni ve ALTER PARTITION işlev . Ayrıca, bölümlenmiş bir sütundaki veri türünü değiştiremezsiniz tablo.

Şema bağlı görünüm ile tablo kısıtlamaları

ALTER tablo deyimleri Görünümü şemaya bağlı olan tablolara uygulanan kısıtlamalar basit bir dizini olan tablolarda değişiklik yapıldığında şu anda uygulanan kısıtlamalar ile aynıdır.Bir sütun ekleyerek izin verilir.Ancak, kaldırma veya değiştirme herhangi bir şemaya bağlı Görünüm sütun izin verilmez.ALTER tablo deyim bir şemaya bağlı görünümünde, ALTER tablo başarısız kullanılmakta olan sütun değiştirme gerektiriyorsa,Database Engineharekete geçiren bir hata iletisi.Şema cilt payı, dizin oluşturulmuş görünümler hakkında daha fazla bilgi için bkz:VIEW (Transact-SQL) CREATE.

Ekleme veya kaldırma temel tablolarda tetikler, tablolara başvuran bir şemaya bağlı görünümü oluşturarak etkilenmez.

Dizinler ve ALTER tablo

Kısıtlama bırakılır, bir parçası olarak oluşturulan dizinler bırakılır.CREATE INDEX ile oluşturulmuş bir dizini DROP INDEX ile bırakılan gerekir.ALTER INDEX deyim bir kısıtlama tanımı bir dizin bölümünü yeniden oluşturmak için kullanılabilir; kısıtlama bırakılan ve ALTER tablo ile yeniden eklenmesini gerekmez.

Tüm dizinler ve kısıtlamaları temel alan bir sütun sütun kaldırmadan önce kaldırılmalıdır.

Kümelenmiş bir dizin oluşturulmuş bir sınırlama silindiğinde yaprak düzeyinde kümelenmiş dizin, depolanmış veriler satır saklanır, kümelenmemiş bir tablo.Kümelenmiş dizin açılır ve ortaya çıkan Tablo tek bir işlemle başka dosya grubu veya bölümünü düzenine taşımak için seçeneğini belirleyerek taşıyabilirsiniz.MOVE TO seçeneği aşağıdaki sınırlamalar vardır:

  • TAŞIMAK için dizin oluşturulmuş görünümler veya kümelenmemiş dizinler için geçerli değil.

  • bölümleme düzeni ya da dosya grubu bulunması gerekir.

  • MOVE TO belirtilmezse, tablonun aynı bölümleme düzeni ya da dosya grubu kümelenmiş dizin için tanımlanan bulunur.

, Doğrudan bir kümelenmiş dizin, çevrimiçi belirttiğiniz**=**AÇILAN INDEX için sorgular ve değişiklikler temel verilerin ve ilişkili nonkümelenmiş dizines seçeneği hareket engellemez.

ONLINE**=**AÇIK aşağıdaki sınırlamalar bulunmaktadır:

  • ONLINE**=** AÇIK olan da devre dışı. kümelenmiş dizinler için geçerli değil. Devre dışı dizinler gerekir iptal kullanarak çevrimiçi**=** OFF.

  • Bir defada yalnızca bir dizini kesilmesini.

  • ONLINE**=** Açık Dizin oluşturulmuş görünümler ve yerel geçici tablolar. dizinlerde kümelenmemiş dizinler için geçerli değil

Kümelenmiş bir dizini silmek için varolan küme dizin boyutuna eşit geçici disk alanı gerekir.Bu ek alan operasyon tamamlandı olarak yayımlanır.

Not

Altında listelenen seçenekleri<drop_clustered_constraint_option>kümelenmiş dizinleri tablolar üzerinde uygulanan ve edemiyor uygulanan kümelenmiş dizin görünümleri veya kümelenmemiş dizinleri.

Şema değişiklikleri çoğaltılıyor

Yayınlanan bir tabloda ALTER tablo'ı çalıştırdığınızda, varsayılan olarak, birSQL ServerYayımcı, değişikliği tüm yayılmasınıSQL ServerAboneler.Bu işlev, bazı kısıtlamaları vardır ve devre dışı bırakılabilir.Daha fazla bilgi için bkz: Üzerinde yayın Databases şema değişiklikleri yapma.

Veri sıkıştırma

Sistem tabloları için sıkıştırma etkin duruma getirilemez.Tablo bir yığın, yeniden oluşturma işlemi tek olacak iş.Veri sıkıştırma hakkında daha fazla bilgi için bkz: Sıkıştırılmış tablolar ve dizinler oluşturma.

Sıkıştırma durumunu değiştirme nasıl etkileyeceğini değerlendirmek için bir tablo, bir dizin veya bir bölümü, kullanım sp_estimate_data_compression_savings saklı yordamını.

Bölümlenmiş tablolar için aşağıdaki kısıtlamalar geçerlidir:

  • Tablo varsa sıkıştırma tek bir bölümde ayarını değiştiremezsiniz nonaligned dizinler.

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

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

İzinler

Tablo üzerinde ALTER iznine gerek duyar.

Bir ALTER TABLE anahtar deyim her iki tablo için ALTER TABLE izinleri uygulanır.Geçmiş herhangi bir veri güvenliği hedef alır tablo.

Tüm sütunları ALTER tablo deyim içinde bir ortak dil çalýþma zamaný (CLR) türü kullanıcı tanımlı veya diğer ad ad veri türü olarak tanımlanır, başvurular izin türü gereklidir.

Örnekler

C.Yeni bir sütun ekleme

Aşağıdaki örnek, bir varsayılan tanımı ile sağlanan değer null değerlere izin verir ve bir sütun ekler., Yeni sütun, her bir satır olacakNULL.

b.sütun siliniyor

Aşağıdaki örnek, sütun kaldırmak için tablo değiştirir.

c.sütun veri türünü değiştirme

Aşağıdaki örnekte sütun değiştirir bir tablo danINTtoDECIMAL.

d.Bir sınırlama sütun ekleme

Aşağıdaki örnek, yeni bir sütun ekler birUNIQUEkısıtlama.

e.Doğrulanmamış bir CHECK kısıtlaması için varolan bir sütun ekleme

Aşağıdaki örnek, varolan bir sütun için bir kısıtlama ekler tablo.Sütun kısıtlamayı ihlal eden bir değere sahiptir.Bu nedenle,WITH NOCHECKeklenmesi için kısıtlama izin veren ve varolan satırlara karşı doğrulanmış kısıtlamayı önlemek için kullanılır.

f.Varolan bir sütun için varsayılan kısıtlama ekleme

Aşağıdaki örnek, iki sütun bir tablo oluşturur ve ilk sütuna bir değer ekler ve diğer sütuna null kalır.ADEFAULTkısıtlaması ikinci sonra eklenen sütun.Varsayılan değer olarak uygulanır, başka bir değer ilk sütun eklenir doğrulamak için tablo sorgulanır.

g.Kısıtlamaları olan birkaç sütun ekleme

Aşağıdaki örnek, yeni bir sütun ile tanımlanan kısıtlamalarına sahip birden fazla sütun ekler.İlk yeni sütun olan birIDENTITYözellik.Tablodaki her satır Kimliği sütununda yeni artımlı değerler vardır.

h.Varsayılan değer null bir sütun ekleme

Aşağıdaki örnek, bir null sütun ekler birDEFAULTtanımı ve kullanımıWITH VALUESTablo. varolan her satırın değerlerini sağlamak içinVALUES ile kullanılırsa, her satırın yeni bir sütun NULL değeri vardır.

İ.Devre dışı bırakma ve yeniden bir kısıtlama

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.Bir bırakma

Aşağıdaki örnek kaldırır birUNIQUEkısıtlama bir tablo.

k.Bölüm tabloları arasında geçiş yapma

Aşağıdaki örnek bölümlenmiş tablo, bu bölümleme düzeni kabul oluştururmyRangePS1önceden oluşturulmuş veritabanı.Sonra olmayan bölümlenmiş bir tablo oluşturulur ve aynı dosya grubu bölümlenmiş tablo aynı yapıya sahipPARTITION 2TabloPartitionTable.VerileriPARTITION 2TabloPartitionTabledaha sonra tabloya geçtiNonPartitionTable.

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.Devre dışı bırakma ve yeniden bir tetikleyici

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.

M.birincil anahtar kısıtlaması dizin seçenekleri ile oluşturma

Aşağıdaki örnek, birincil anahtar kısıtlaması oluştururPK_TransactionHistoryArchive_TransactionIDve seçenekleriFILLFACTOR,ONLINE, vePAD_INDEX.Elde edilen kümelenmiş dizin kısıtlama aynı ada sahip olacaktır.

N.birincil anahtar kısıtlaması çevrimiçi modunda bırakma

Aşağıdaki örnek bir birincil anahtar kısıtlaması ile silerONLINEseçeneği belirlemekON.

O.Ekleme ve yabancı anahtar kısıtlaması siliniyor

Aşağıdaki örnek tabloyu oluştururContactBackupve sonra tablo, ilk olarak değiştiren birFOREIGN KEYTablo başvuruları kısıtlamaContact, sıralama ölçütü bırakmaFOREIGN KEYkısıtlama.

P.sütun boyutunu değiştirme

Aşağıdaki örnek boyutunu büyütür birvarcharsütun duyarlık ve ölçeği birdecimalsütun.Sütunlar verileri içerdiğinden, yalnızca sütun boyutu artırılabilir.Ayrıca da dikkat edincol_atanımlanmış benzersiz dizin.Boyutucol_ahala artırılabilir, veri türü olduğundan birvarcharve dizin değil sonuç birincil anahtar kısıtlaması.

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');

S.kilit yükseltme bölümlenmiş tablolarda izin verme

Aşağıdaki örnek bölümlendirilmiş bir bölüm düzeyinde kilitleme yükseltmesi sağlar tablo.tablo İse bölümlenmiş değil, kilit yükseltme için olan tablo düzey.

ALTER TABLE T1 SET (LOCK_ESCALATION = AUTO)
GO

R.Değişiklik izleme, yapılandırma bir tablo

Değişiklik izleme, aşağıdaki örnekte sağlayanPerson.Contact, tabloAdventureWorksveritabanı.

Aşağıdaki örnek, değişiklik izlemeyi etkinleştirir ve değişikliği sırasında güncelleştirilen sütunların izlemeyi etkinleştirir.

Aşağıdaki örnek, değişiklik üzerinde izleme devre dışı bırakırPerson.Contact, tabloAdventureWorksVeritabanı:

S.Değişiklik bir tablo sıkıştırma değiştirmek için

Aşağıdaki örnek bir nonpartitioned sıkıştırmasını değiştirir tablo.Yığın veya kümelenmiş dizin yeniden oluşturulacak.Tablo bir yığın, tüm kümelenmemiş dizinler yeniden oluşturulacak.

ALTER TABLE T1 
REBUILD WITH (DATA_COMPRESSION = PAGE);

Aşağıdaki örnek bölümlenmiş tablo sıkıştırılmasını değiştirir.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üm bölümlerde aynı işlemi diğer aşağıdaki sözdizimini kullanarak neden tablo yeniden oluşturulması.

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

Ek veri sıkıştırma örnekler için bkz: Sıkıştırılmış tablolar ve dizinler oluşturma.

T.Seyrek bir sütun ekleme

Aşağıdaki örnekler, ekleme ve seyrek tablo T1 sütunları değiştirme gösterir.Tablo oluşturmak için kodT1ise aşağıdaki gibi.

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

Ek olarak seyrek bir sütun eklemek içinC5yürütmek aşağıdaki deyim.

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

Dönüştürmek içinC4seyrek bir sütuna seyrek olmayan sütun yürütmek aşağıdaki deyim.

ALTER TABLE T1
ALTER COLUMN C4 ADD SPARSE ;
GO

Dönüştürmek içinC4 seyrek nonsparse sütunu, sütun yürütmek aşağıdaki deyim.

ALTER TABLE T1
ALTER COLUMN C4 DROP SPARSE;
GO

U.Bir sütun ekleyerek küme

Aşağıdaki örnekler tablo için bir sütun eklemeT2.Bir sütunun küme seyrek sütun içeren bir tabloya eklenir.Tablo oluşturmak için kodT2ise aşağıdaki gibi.

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

Aşağıdaki üç ifade küme adlı bir sütun eklemeCSve sonra sütun değiştirmeC2veC3toSPARSE.

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

Değişiklik Geçmişi

Güncelleştirilmiş içerik

Otomatik seçeneği kilit yükseltme sabit.

[SPARSE] sözdizimi özelliklerine eklenir (önce [NULL | NOT NULL].

Bilgiler, UDTs ve varsayılan bağımsız değişkenleri bölümüne null atanabilirlik eklendi.

SPARSE sözdizimi tanımına değişkenleri bölümünde ek bilgiler eklendi.