Aracılığıyla paylaş


CHANGETABLE (Transact-SQL)

Verir değişiklik izleme bilgilerinin bir tablo.You için bu deyim, bir tablonun tüm değişiklikleri geri dönmek veya belirli bir sıra için bilgi izleme değiştirmek için kullanabilirsiniz.

Topic link iconTransact-SQL sözdizimi kuralları

CHANGETABLE (
        { CHANGES table , last_sync_version
        | VERSION table , <primary_key_values> } )
[AS] table_alias [ ( column_alias [ ,...n ] )

<primary_key_values> ::=
( column_name [ , ...n ] ) , ( value [ , ...n ] )

Bağımsız değişkenler

  • CHANGEStable ,last_sync_version
    Yapılan tüm değişiklikler için bilgi izleme verir bir tablo tarafından belirtilen sürüm sonra oluştulast_sync_version.

    • table
      Kullanıcı tanımlı izlenen değişiklikleri almak istediğiniz tablodur.Tablo üzerinde değişiklik izleme etkinleştirilmiş olması gerekir.Bir tek, iki, üç- veya four-part tablo adı kullanılabilir.Tablo adı eşanlamlısı tablo olabilir.

    • last_sync_version
      Değişiklikleri aldığında, çağıran uygulama değişiklikleri gerekli olan noktası belirtmeniz gerekir.The last_sync_version bu noktayı belirtir.İşlev bu sürüm bu yana değiştirilen tüm satırlar için bilgi verir.Uygulama, last_sync_version büyük bir sürüm değişiklikleri almak için sorgulanıyor.

      Genellikle, önce değişiklikleri alır uygulama aramaCHANGE_TRACKING_CURRENT_VERSION()kullanılacak bir sürüm elde etmek için sonraki saat değişiklikleri gereklidir.Bu nedenle, yorumlar veya gerçek değerini anlamak uygulama yok.

      Çağıran uygulama tarafından last_sync_version elde edilir çünkü değerini kaldırmak uygulama vardır.Daha sonra uygulama, bu değer kaybederse verileri yeniden gerekir.

      .

      last_sync_versionisbigint.skaler değer olmalıdır.İfade sözdizimi hatası neden olur.

      Değer null ise, tüm izlenen değişiklikler döndürülür.

      last_sync_version Bazı veya tüm değişiklik bilgilerini saklama dönemi veritabanı için yapılandırılmış uyarınca temizlemiş çok eski değildir, çünkü emin olmak için doğrulanması.Daha fazla bilgi için bkz:CHANGE_TRACKING_MIN_VALID_VERSION (Transact-SQL)veDATABASE küme seçenekleri (Transact-SQL) ALTER.

  • Sürüm table, { <primary_key_values >}
    Son değişiklik izleme bilgilerinin belirli bir satır döndürür.Primary key values must identify the row.<primary_key_values> identifies the primary key columns and specifies the values.Birincil anahtar sütun adlarını, herhangi bir sırada belirtilebilir.

    • Table
      Kullanıcı tanımlı tablo üzerinde değişiklik elde etmek için bilgi izleme mı.Tablo üzerinde değişiklik izleme etkinleştirilmiş olması gerekir.Bir tek, iki, üç- veya four-part tablo adı kullanılabilir.Tablo adı eşanlamlısı tablo olabilir.

    • column_name
      Birincil anahtar sütunu veya sütun adını belirtir.Birden çok sütun adları, herhangi bir sırada belirtilebilir.

    • Value
      Birincil anahtar değeridir.Birden çok birincil anahtar sütunu varsa, görünür sütun gibi değerleri aynı sırada belirtilmelidircolumn_nameliste.

  • [AS]table_alias (column_alias ,...n ] ) ]
    CHANGETABLE tarafından döndürülen sonuçlar için bir ad sağlar.

    • table_alias
      Is the alias name of the table that is returned by CHANGETABLE.table_alias is required and must be a valid identifier.

    • column_alias
      Bir isteğe bağlı bir sütun diğer ad ad adı ya da sütun diğer ad ad adları CHANGETABLE ile döndürülen sütunlar listesi belirtilir.Bu sütun adları var olduğu durumlarda yinelenen adlar sonuçlar özelleştirilecek sağlar.

Dönüş Türleri

table

Dönüş değerleri

CHANGETABLE DEĞİŞİKLİKLER

Belirtilen değişiklikleri, aşağıdaki sütunları olan sıfır veya daha fazla satır döndürülür.

sütun Name:

Veri türü

Açıklama

SYS_CHANGE_VERSION

bigint

Son değişiklik için satırı ile ilişkili sürüm değeri

SYS_CHANGE_CREATION_VERSION

bigint

Son ile ilişkili olan sürüm değerleri ekleme işlemi.

SYS_CHANGE_OPERATION

nchar(1)

Değişikliğin türünü belirtir:

U = Güncelleştirme

I = Ekleme

D = Silme

SYS_CHANGE_COLUMNS

varbinary(4100)

Bu yana değişti sütunları listeler. temel sürüm.

NoteNote:
Computed sütunları değiştirildi olarak hiçbir zaman listelenen.

Aşağıdaki koşullardan biri doğru olduğunda değeri NULL olur:

  • Sütun değişiklik izlemenin etkin değil.

  • Ekleme veya silme işlemi işlemidir.

  • Tüm nonprimary anahtar sütunları, tek bir işlemde güncelleştirildi.Bu ikili değerini doğrudan yorumlanan değil.Bunun yerine, yorumlamak için kullanın.CHANGE_TRACKING_IS_COLUMN_IN_MASK().

SYS_CHANGE_CONTEXT

varbinary(128)

Kullanarak isteğe bağlı olarak belirtebileceğiniz bilgileri değiştirmekİle yan tümcenin parçası bir INSERT, UPDATE veya DELETE deyim.

<birincil anahtar sütun değeri>

Aynı kullanıcı tablo sütunları

İzlenen tablo için birincil anahtar değerleri.Bu değerler kullanıcı her satırı benzersiz olarak tanımlayan tablo.

CHANGETABLE SÜRÜM

Sürüm belirtildiğinde, aşağıdaki sütunları içeren bir satır döndürür.

sütun Name:

Veri türü

Açıklama

SYS_CHANGE_VERSION

bigint

Geçerli satırı ile ilişkili olan sürüm değeri değiştirin.

Değer null bir saklama dönemi izleme değişikliği uzun bir süre için yapılmış değil ya da değişiklik izleme etkinleştirildikten sonra satır değişmemiş olur.

SYS_CHANGE_CONTEXT

varbinary(128)

İLE kullanarak isteğe bağlı olarak belirtebileceğiniz bilgileri değiştirmek yan tümce bir INSERT, UPDATE veya DELETE deyiminin parçası olarak.

<birincil anahtar sütun değeri>

Aynı kullanıcı tablo sütunları

İzlenen tablo için birincil anahtar değerleri.Bu değerler kullanıcı her satırı benzersiz olarak tanımlayan tablo.

Remarks

The CHANGETABLE işlev normal olarak kullanılan bir sorgunun FROM yan tümcesinde gibi bu olan bir tablo.

CHANGETABLE(CHANGES...)

Yeni veya değiştirilmiş satırlar için satır veri elde etmek için kullanıcı için sonuç katılmak tablo birincil anahtar sütunlarını kullanarak.Tek satır döndürülür, değiştirilmiş olan kullanıcı tablosundaki her satır için bu yana aynı satıra birden çok değişiklik edilmiştir bilelast_sync_versiondeğer.

Birincil anahtar sütun değişiklikleri her zaman güncelleştirmeler olarak işaretlenir.Bir birincil anahtar değeri değişirse, eski değeri bir Sil ve yeni değeri, bir ekleme olarak kabul edilir.

Bir satırı silin ve sonra eski birincil anahtar olan bir satır ekleme, değişiklik sıradaki tüm sütunlar için bir güncelleştirme olarak görülür.

Satır taban çizgisine göre SYS_CHANGE_OPERATION ve SYS_CHANGE_COLUMNS sütunları için döndürülen değerleri sürüm, belirtilir.Örneğin, sürüm 10 ve bir güncelleştirme işlemi sırasında sürüm 15 bir ekleme işlemi yapılmış ve satır taban çizgisi,last_sync_version12 ise, güncelleştirme bildirilir.,last_sync_versiondeğeri 8 ise, bir ekleme bildirilir.SYS_CHANGE_COLUMNS hiçbir zaman güncelleştirilmiş olarak hesaplanan sütunlar bildirir.

Genellikle, birleştirme deyim de dahil olmak üzere, ekleme, güncelleştirme veya kullanıcı tablolarına veri silme, tüm işlemler izlenir.

Kullanıcı tablo verileri etkileyen aşağıdaki işlemleri izlenir:

  • UPDATETEXT deyim yürütme

    Bu deyim itiraz ve be removed sonraki sürümündeSQL Server.Ancak UPDATE deyiminin pucu yan tümce kullanarak yaptığınız değişiklikler izlenir.

  • TRUNCATE tablo kullanarak satır silme

    Bir tablo kesilir, yalnızca tabloda değişiklik izleme etkinleştirilmiş gibi değişiklik izleme tablosu ile ilişkili olan sürüm bilgileri sıfırlanır.Bir istemci uygulaması, her zaman eşitlenmiş en son sürüm doğrulamak.Tablo kesildi, doğrulama başarısız olur.

CHANGETABLE(sürüm...)

Varolmayan bir birincil anahtar belirtilmezse, bir boş sonuç kümesi verilir.

Bir tutma süresinden daha uzun yapmadıysa SYS_CHANGE_VERSION değeri null olabilir (örneğin, temizleme işlemini değişiklik bilgisini kaldırıldı) veya tablo için değişiklik izleme etkinleştirildikten sonra hiçbir satır değiştirildi.

İzinler

, Aşağıdaki izinleri gerektirir tablo tarafından belirtilentableizleme bilgilerini edinmek için değeri:

  • Birincil anahtar sütunlarını SELECT izni

  • DEĞİŞİKLİK İZLEMEYİ GÖRÜNTÜLE

Örnekler

C.Verilerin bir ilk eşitleme için satırları döndüren

Aşağıdaki örnek, tablo verilerinin bir ilk eşitleme için verileri elde etmek gösterilmiştir.Sorgu, tüm satır veri ve ilgili sürümlerine döndürür.Sonra eklemek veya bu verileri eşitlenmiş verileri içeren sisteme ekleyebilirsiniz.

B.Belirli sürüm bu yana yapılan tüm değişiklikler listesi

The following example lists all changes that were made in a table since the specified version (@last_sync_version).[Emp ID] and SSN are columns in a composite primary key.

C.Eşitleme için değiştirilen tüm verileri alma

Aşağıdaki örnek, değişen tüm verileri nasıl edinebilecekleri gösterir.Bu sorgu, kullanıcı tablo bilgisi verilir, izleme bilgilerinin kullanıcı tablo değişiklik birleştirir.ALEFT OUTER JOINböylece, silinen satırlar için satır döndürülür kullanılır

D.CHANGETABLE(sürüm...) kullanarak çakışmaları algılama

Aşağıdaki örnekte, yalnızca satır son eşitleme işleminden sonra değiştiyse, bir güncelleştirme gösterilmektedir.Belirli satır sürüm numarasını kullanarak elde edilirCHANGETABLE.Satır güncelleştirildi, değişiklik yapılmamış ve sorgu satırın en son değişiklik hakkında bilgi verir.