Udostępnij za pośrednictwem


CHANGETABLE (Transact-SQL)

Śledzenie informacji o tabela.You zmian zwraca umożliwia tej instrukcja zwracają wszystkie zmiany dla tabela lub informacje dla określonego wiersza śledzenia zmian.

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

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 ] )

Argumenty

  • ZMIAN table , last_sync_version
    Zwraca śledzenie informacji dla wszystkich zmian do tabela, które nastąpiły od wersja, która jest określona przez last_sync_version.

    • table
      Jest tabelą zdefiniowanej przez użytkownika, na której pobierane są śledzone zmiany.W tabela, należy włączyć śledzenie zmian.Jedno-, dwu-, trzy- lub nazwa tabela four-part mogą być używane.Jest to synonim do tabela może to być nazwa tabela.

    • last_sync_version
      Podczas uzyska zmian, aplikacja wywołująca musi określić punkt, z którego są wymagane zmiany.The last_sync_version Określa, że punkt.Funkcja zwraca informacje dotyczące wszystkich wierszy, które zostały zmienione od czasu do tej wersja.Aplikacja jest kwerenda do otrzymywania zmian w wersja, które są większe niż last_sync_version.

      Zazwyczaj zanim uzyska zmian, aplikacja będzie wywoływać CHANGE_TRACKING_CURRENT_VERSION() następne zmiany czas są wymagane do uzyskania wersja, która będzie używana. W związku z tym aplikacja nie ma interpretować lub zrozumieć wartości rzeczywistej.

      Ponieważ last_sync_version uzyskuje się przez wywołania aplikacji, aplikacja musi wartości będą się powtarzać.Jeśli aplikacja straci tę wartość, a następnie będzie musiała re-initialize danych.

      .

      last_sync_version jest bigint. Wartość musi być wartość skalarna.wyrażenie spowoduje błąd składni.

      Jeżeli wartość jest NULL, zwracane są wszystkie prześledzone zmiany.

      last_sync_version powinny zostać zatwierdzone do zapewnienia, że nie jest zbyt stara, ponieważ niektóre lub wszystkie zmiany informacji może być zostały oczyszczone zgodnie z okres zachowywania, skonfigurowany dla bazy danych.Aby uzyskać więcej informacji zobacz CHANGE_TRACKING_MIN_VALID_VERSION (języka Transact-SQL) i ALTER DATABASE SET Options (Transact-SQL).

  • wersja table, { <primary_key_values> }
    Zwraca najnowszych zmian informacji dla określonego wiersza.Primary key values must identify the row.<primary_key_values> identifies the primary key columns and specifies the values.Nazwy kolumna klucz podstawowy można określić w dowolnej kolejności.

    • Table
      Czy tabela zdefiniowaną przez użytkownika, na której pobierane są zmiany informacji śledzenia.W tabela, należy włączyć śledzenie zmian.Jedno-, dwu-, trzy- lub nazwa tabela four-part mogą być używane.Jest to synonim do tabela może to być nazwa tabela.

    • column_name
      Określa nazwę kolumna klucz podstawowy lub kolumn.Wiele kolumna nazwy mogą być określone w dowolnej kolejności.

    • Value
      Jest to wartość klucz podstawowy.W przypadku wielu kolumn klucz głównego, wartości muszą być określone w tej samej kolejności, jak kolumny pojawiają się w column_name Lista.

  • [] table_alias (column_alias ,...n ] ) ]
    Zawiera nazwy wyniki zwracanych przez CHANGETABLE.

    • 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
      Jest to alias opcjonalne kolumna lub listę aliasów kolumna dla kolumna, które są zwracane przez CHANGETABLE.Dzięki temu nazwy kolumn mają być dostosowywane przypadek, gdy istnieją zduplikowane nazwy w wynikach.

Zwracane typy

table

Zwraca wartości

ZMIANY CHANGETABLE

Jeśli określono zmian, zero lub więcej wierszy, które zawierają następujące kolumny są zwracane.

Nazwa kolumna

Typ danych

Description

SYS_CHANGE_VERSION

bigint

Wartość wersja, która jest skojarzona z ostatniej zmiany w wierszu

SYS_CHANGE_CREATION_VERSION

bigint

Wersja wartości, które są skojarzone z ostatniego wstawić operacji.

SYS_CHANGE_OPERATION

nchar(1)

Określa typ zmiany:

U = Aktualizacja

I = Wstaw

D = Usuń

SYS_CHANGE_COLUMNS

varbinary(4100)

Wyświetla listę kolumn, które zmieniły się od wersja planu bazowego.

NoteNote:
Kolumny obliczane nigdy nie są wyświetlane jako zmiany.

Wartość jest równa zerowa, gdy spełniony jest jeden z następujących warunków:

  • Śledzenie zmian kolumna nie jest włączona.

  • Operacja jest operacją insert lub delete.

  • Wszystkie kolumny kluczy nonprimary zostały zaktualizowane w jednej operacji.Ta wartość binarna nie powinno być interpretowane bezpośrednio.Zamiast tego aby zinterpretować go, należy użyć CHANGE_TRACKING_IS_COLUMN_IN_MASK().

SYS_CHANGE_CONTEXT

varbinary(128)

Zmień informacje kontekstowe, które można opcjonalnie określić za pomocą Z klauzula jako część instrukcja INSERT, UPDATE lub DELETE.

<wartość kolumna klucz podstawowy>

Takie same, jak użytkownik kolumny tabela

Wartości klucz podstawowy dla tabela śledzone.Te wartości jednoznacznie identyfikują każdy wiersz w tabela użytkownika.

WERSJA CHANGETABLE

Jeśli określono wersja, zwracana jest jeden wiersz, który zawiera następujące kolumny.

Nazwa kolumna

Typ danych

Description

SYS_CHANGE_VERSION

bigint

Bieżące zmienić wartość wersja, który jest skojarzony z wierszem.

Wartość jest NULL, jeśli zmiana nie została dokonana przez okres dłuższy niż okres zachowywania zmian lub wiersza nie została zmieniona od czasu włączenia śledzenia zmian.

SYS_CHANGE_CONTEXT

varbinary(128)

Zmień informacje kontekstowe, że można opcjonalnie określić przy użyciu klauzula WITH an INSERT, UPDATE, w ramach lub DELETE instrukcja.

<wartość kolumna klucz podstawowy>

Takie same, jak użytkownik kolumny tabela

Wartości klucz podstawowy dla tabela śledzone.Te wartości jednoznacznie identyfikują każdy wiersz w tabela użytkownika.

Remarks

Funkcja CHANGETABLE zwykle jest używana w klauzula FROM kwerendy, tak jakby był on tabela.

CHANGETABLE(CHANGES...)

Aby uzyskać dane wiersza dla nowych lub zmodyfikowanych wierszy, przyłączyć zestaw wyników do tabela użytkownika za pomocą kolumny klucz podstawowy.Tylko jeden wiersz jest zwracana dla każdego wiersza w tabela użytkownika, który uległ zmianie, nawet jeśli zostały wiele zmian w tym samym wierszu, ponieważ last_sync_version wartość.

Zmiany kolumna klucz podstawowy nigdy nie są oznaczone jako aktualizacje.Zmienia wartość klucz podstawowy, uważa się za usuwanie starych wartości i Wstaw nową wartość.

Jeśli można usunąć wiersza, a następnie użytkownik wstawi wiersz, który ma starego klucz podstawowy, zmiany jest widoczny jako aktualizacja wszystkich kolumn w wierszu.

Wartości, które są zwracane dla kolumny SYS_CHANGE_OPERATION i SYS_CHANGE_COLUMNS są względem określonej wersja planu bazowego.Na przykład jeśli operację wstawiania został utworzony w wersja 10 i operacji aktualizacji w wersja 15 i linii bazowej jest last_sync_version 12, jest informowany aktualizacji. Jeśli last_sync_version wartość 8, będą raportowane wstawiania. SYS_CHANGE_COLUMNS nigdy nie zgłosi kolumny obliczane jako posiadające zostały zaktualizowane.

Ogólnie rzecz biorąc wszystkie operacje, które wstawianie, aktualizowanie lub usuwanie danych w tabelach użytkownika są śledzone, łącznie z instrukcja korespondencji SERYJNEJ.

Nie są śledzone następujące operacje, które wpływają na dane tabela użytkowników:

  • Wykonywanie instrukcja UPDATETEXT

    Ta instrukcja została zaniechana i zostaną usunięte w przyszłej wersja programu SQL Server. Niemniej jednak zmiany wprowadzone przy użyciu klauzula .WRITE instrukcja UPDATE są śledzone.

  • Usuwanie wierszy za pomocą OBCINANIA tabela

    Jeśli tabela zostanie obcięta do liczby całkowitej, zmian informacji o wersja, która jest skojarzona z tabeli jest ustawiany tak, jakby po prostu zostało włączone śledzenie zmian w tabeli.Aplikacja kliencka powinna zawsze służy do sprawdzania poprawności jego ostatniej wersja zsynchronizowane.Sprawdzanie poprawności kończy się niepowodzeniem, jeśli tabela została obcięta.

CHANGETABLE(wersja...)

zestaw wyników pusty jest zwracana, jeśli określono nieistniejącej klucz podstawowy.

Wartość SYS_CHANGE_VERSION może mieć wartości NULL, jeśli zmiana nie została dokonana dłuższy niż okres zachowywania (na przykład, oczyszczanie usunięto informacje o zmianach) lub w wierszu nigdy nie została zmieniona od czasu włączenia śledzenia zmian w tabela.

Uprawnienia

Musi mieć następujące uprawnienia w tabela, która jest określona przez table wartość w celu uzyskania informacji śledzenia zmian:

  • Uprawnienie SELECT do kolumny klucz podstawowy

  • REJESTROWANIE ZMIAN W WIDOKU

Przykłady

A.Zwracanie wierszy dla wstępna synchronizacja danych

W poniższym przykładzie pokazano, jak uzyskać dane dla wstępna synchronizacja danych tabela.Kwerenda zwraca wszystkie dane wierszy i ich skojarzone wersje.Następnie można wstawić lub dodać te dane do systemu, który będzie zawierać dane zsynchronizowane.

B.Wyświetlanie listy wszystkich zmian wprowadzonych od określonej wersja

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.Uzyskiwanie wszystkie zmienione dane do synchronizacji

W poniższym przykładzie pokazano, w jaki sposób można uzyskać, wszystkie dane, które uległy zmianie.Ta kwerenda dołącza śledzenie informacji z tabela użytkowników, dzięki czemu informacje o tabela użytkownika jest zwracany zmian.A LEFT OUTER JOIN jest używana, aby wiersz jest zwracana dla usuniętych wierszy.

D.Wykrywanie konfliktów przy użyciu CHANGETABLE(wersja...)

W poniższym przykładzie pokazano, jak zaktualizować wiersz tylko wtedy, gdy wiersz nie uległa zmianie od czasu ostatniej synchronizacji.Numer wersja określonego wiersza jest uzyskiwany przy użyciu CHANGETABLE. Jeśli wiersz został zaktualizowany, nie zostaną wprowadzone zmiany, a kwerenda zwraca informacje o ostatniej zmiany w wierszu.