Udostępnij za pośrednictwem


Grupowanie zmiany pokrewne wiersze z rekordami logicznych

Uwaga

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Domyślnie replikacja łączenia przetwarza zmian danych na podstawie wiersz po wierszu.W wielu przypadkach jest to właściwe, ale w niektórych aplikacjach jest istotne, że powiązane wiersze być przetwarzane jako jednostka.Funkcji logicznych rekordy replikacja łączenia można zdefiniować relację między powiązane wiersze w różnych tabelach, tak aby wiersze są przetwarzane jako jednostka.

Uwaga

Funkcji logicznych rekordy można używać osobno lub w połączeniu z filtrami łączyć.Aby uzyskać więcej informacji o filtrach łączyć zobacz łączyć Filtry. Aby użyć rekordów logiczne, poziom zgodności publikacja musi wynosić co najmniej 90RTM.Aby uzyskać więcej informacji zobacz sekcję "Poziom zgodności dla publikacji korespondencji seryjnej" w Using Multiple Versions of SQL Server in a Replication Topology.

Należy wziąć pod uwagę następujące trzy tabele pokrewne:

Three table logical record, with column names only

The Customers tabela is the parent tabela in this relationship and has a klucz podstawowy kolumna CustID.The Orders tabela has a klucz podstawowy kolumna OrderID, with a klucz obcy constraint on the CustID kolumna that references the CustID kolumna in the Customers tabela.Podobnie OrderItems tabela ma kolumna klucz podstawowy OrderItemID, z ograniczenia na klucz obcy na Identyfikator zamówienia kolumna, która odwołuje się Identyfikator zamówienia kolumnaZamówienia tabeli.

W tym przykładzie rekord logiczny składa się z wszystkich wierszy w Zamówienia tabela, które są związane z jednym CustID wartość i wszystkie wiersze w OrderItems tabela, które są związane z tych wierszy w Zamówienia tabela.Ten schemat przedstawia wszystkie wiersze w trzech tabelach, które znajdują się w logicznym rekordu Customer2:

Three table logical record with values

Aby zdefiniować rekord logiczny relacji między artykuły

Korzyści wynikające z logicznego rekordów

Funkcji logicznych rekordy ma dwie podstawowe zalety:

  • Stosowanie zmian danych jako jednostka.

  • Wykrywanie i rozwiązywanie konfliktów jednocześnie na wielu wierszy z wielu tabel.

Stosowanie zmian jako jednostka

Jeśli przetwarzanie korespondencji seryjnej zostanie przerwana, takie jak przypadek braku połączenia elementów usuniętych częściowo wypełnionego zbiór powiązanych replikowanych zmian jest wycofywany ponownie, jeśli rekordy logiczne są używane.Rozważmy na przykład przypadek, gdy subskrybent dodaje nowe zamówienie z Identyfikator zamówienia = 6 i dwa nowe wiersze w OrderItems tabelaOrderItemID = 10 and OrderItemID = 11 for Identyfikator zamówienia = 6.

Three table logical record with values

Jeśli proces replikacja zostanie przerwana po Zamówienia row for Identyfikator zamówienia = 6 jest pełna, ale przed OrderItems 10 i 11 zostaną ukończone i logicznych rekordy nie są używane, OrderTotal wartość Identyfikator zamówienia = 6, nie będzie zgodna z sumą WielkooćZamówienia wartościOrderItems wiersze.Jeśli używane są rekordy logiczne, Zamówienia row for Identyfikator zamówienia = 6 nie jest zobowiązana do powiązanych OrderItems zmiany są replikowane.

W innym scenariuszu logiczne rekordy są używane, a ktoś jest badanie tabel podczas procesu scalania stosowania zmian, użytkownik nie będzie widział częściowo zreplikowane zmiany, aż do chwili, kiedy będą wszystkie wykonać.Na przykład procesu replikacja został przekazany wiersz zamówienia Identyfikator zamówienia = 6, ale kwerendy użytkownika tabele przed procesu replikacja została zreplikowana OrderItems rows, the OrderTotal wartość nie będzie taka sama, jak Suma WielkooćZamówienia wartości.Jeśli używane są rekordy logiczne, Zamówienia wiersza nie będzie widoczny aż OrderItems wiersze są kompletne i transakcja została zatwierdzona jako jednostka.

Stosowanie konflikt obsługi więcej niż jedną tabela.

Należy wziąć pod uwagę przypadek, gdy dwa subskrybentów mają powyższego zestaw danych:

  • Użytkownik na pierwszej zmiany subskrybent WielkooćZamówienia of OrderItemID 5 od 100 do 150 i OrderTotal of Identyfikator zamówienia 3 od 200 do 250.

  • Zmienia subskrybent użytkownika na drugim WielkooćZamówienia of OrderItemID 6 od 25 do 125 i OrderTotal of Identyfikator zamówienia 3 od 200 do 300.

Jeśli te zmiany są replikowane bez korzystania z logicznego rekordów różnych OrderTotal wartości spowoduje powstanie konflikt i tylko jeden z nich mogą być replikowane.Ale zmiany nie powodujących konfliktu w OrderItems tabela mogą być replikowane bez konfliktu, pozostawiając końcowe OrderTotal wartości stanu niespójności w odniesieniu do OrderItems wiersze.Jeśli rekordy logiczne są używane w tym scenariuszu OrderItems zmiany związane z przegrywająca Zamówienia tabela Zmiana będzie również można wycofać Wstecz i końcowe OrderTotal wartość byłaby wiadomości dokładne listą OrderItems wiersze.

Aby uzyskać więcej informacji na temat opcji związanych z opcji wykrywanie konfliktów i rozdzielczość z rekordami logiczne Zobacz Wykrywanie i rozwiązywanie konfliktów w rekordach logicznych.

Uwagi dotyczące związanych z korzystaniem z logicznego rekordów

Podczas korzystania z rekordów logicznych, należy pamiętać o poniższe uwagi.

Zagadnienia ogólne

  • Zalecane jest pozostawienie liczbę tabel w rekord logiczny najniższych możliwych; pięć tabel lub zalecane jest mniejsza.

  • Logiczne rekordów nie może odnosić się do kolumn w jednym z następujących typów danych:

    • varchar(max) i nvarchar(max)

    • varbinary(max)

    • text i ntext

    • image

    • XML

    • UDT

  • Nie można zdefiniować relacje klucz obcy w tabelach opublikowane z opcją CASCADE.Aby uzyskać więcej informacji zobacz CREATE TABLE (Transact-SQL) i ALTER tabela (języka Transact-SQL).

  • Nie można aktualizować żadnych kolumn, które są używane w klauzula relacji logicznych.

  • Rozwiązywanie konfliktów niestandardowej obsługi logika biznesowa lub niestandardowe programy rozpoznawania nazw nie jest obsługiwana dla artykułów, które znajdują się rekord logiczny.

  • Jeśli rekordy logiczne są używane w publikacja, która zawiera sparametryzowana filtrów, należy zainicjować każdego subskrybent z dokładną jego partycji.Jeśli subskrybent zainicjować z innej metoda, Agent korespondencji seryjnej nie powiedzie się.Aby uzyskać więcej informacji zobacz Migawki publikacji korespondencji seryjnej z filtrami sparametryzowana.

  • Konflikty, które obejmują logiczne rekordy nie są wyświetlane w Podglądu konfliktów.Służy do wyświetlania informacji o te konflikty, należy użyć replikacja procedur przechowywanych.Aby uzyskać więcej informacji zobacz Jak Wyświetlanie konfliktów informacji zawartych w publikacji seryjnej (Programowanie replikacja języka Transact-SQL).

Ustawienia publikacja

  • Publikacja musi mieć poziom zgodności, 90RTM lub nowszego.Aby uzyskać więcej informacji zobacz sekcję "Poziom zgodności publikacja" Replication Backward Compatibility.

  • Tryb macierzysty migawka należy stosować w publikacja.Jest to wartość domyślna, o ile nie jest replikowana do SQL Server Compact 3.5 SP1, który nie obsługuje logiczne rekordów.

  • Publikacja nie mogą zezwolić na synchronizację w sieci Web.Aby uzyskać więcej informacji na temat sieci synchronizacja w sieci Web Zobacz synchronizacja w sieci Web na czas replikacja łączenia.

  • Aby użyć logiczne rekordów z publikacją filtrowane:

  • Jeśli w publikacja używane filtry łączyć Unikatowy klucz łączyć należy ustawić właściwość wartość true wszystkich filtrów łączyć, które uczestniczą w relacji rekord logiczny.Aby uzyskać więcej informacji zobacz łączyć Filtry.

Relacje tabel

  • Tabele powiązane logiczne rekordów musi mieć podstawowy klucz — relacji klucz obcy.

  • Nie zestaw opcję nie dla replikacja dla ograniczenia na klucz obcy.Aby uzyskać więcej informacji na temat tej opcji zobacz Kontrolowanie ograniczenia tożsamości i wyzwalaczy z nie dla replikacja.

  • Tabele podrzędność mogą mieć tylko jedną tabela nadrzędną.

    Na przykład baza danych śledzenia klas i studenci mogą mieć podobne do projektu:

    Child table with more than one parent table

    rekord logiczny nie można użyć do reprezentowania trzy tabele w tej relacji, ponieważ w wierszach ClassMembers nie są skojarzone z pojedynczy wiersz klucz podstawowy.W tabelach Klasy and ClassMembers może nadal stanowią rekord logiczny może tabel ClassMembers and Studentów, ale nie wszystkie trzy.

  • Publikacja nie może zawierać cykliczne łączyć filtrowanie relacji.

    W przykładowej sytuacji z tabelami Klienci, Zamówienia, and OrderItems, można nie użyć rekordów logiczne Zamówienia tabela zawiera również ograniczenie na klucz obcy, do których odwołania OrderItems tabeli.

Wpływ na wydajność logiczne rekordów

Funkcji rekord logiczny pochodzić z kosztem wydajności.Jeśli rekordy logiczne nie są używane, agent replikacja może przetwarzać jednocześnie wszystkie zmiany dla danego artykuł, a ponieważ zmiany są stosowane w sposób wiersz po wierszu, blokowania i transakcji dziennika wymagania niezbędne do stosowania zmian są minimalne.

Jeśli używane są rekord logiczny s, Agent korespondencji seryjnej musi przetworzyć zmian dla każdego cały rekord logiczny razem.Ma to wpływ na czas potrzebny agenta korespondencji seryjnej, aby replikować wierszy.Ponadto ponieważ agent otworzy oddzielne transakcji dla każdego rekordu logiczne, blokowanie wymagania może się zwiększyć.