Udostępnij za pośrednictwem


Zmiany do wierszy powiązanych z rekordami logiczne grupowanie

Ostrzeżenie

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

Domyślnie replikacja scalająca 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 przetwarzana jako jednostka.Funkcji logicznych rekordy replikacja scalająca pozwala zdefiniować relację między powiązane wiersze w różnych tabelach, tak aby wiersze są przetwarzane jako jednostka.

Ostrzeżenie

Funkcji logicznych rekordy można samodzielnie lub w połączeniu z filtrami łączyć.Aby uzyskać więcej informacji o filtrach łączyć, zobacz Dołącz filtry.Aby użyć rekordów logiczne, poziom zgodności publikacja musi wynosić co najmniej 90RTM.Aby uzyskać więcej informacji zobacz "Zgodność poziomu dla scalone publikacje" sekcja w W topologii replikacji przy użyciu wielu wersji programu SQL Server.

Rozważmy następujące trzy tabele pokrewne:

Rekord logiczny z trzema tabelami zawierający tylko nazwy kolumn

Klienci tabela tabela nadrzędnej w tej relacji i ma klucz podstawowy kolumna IDklienta.Zamówienia tabela zawiera kolumna klucz podstawowy IDZamówienia, z ograniczenie na klucz obcy IDklienta kolumna, która odwołuje się do IDklienta kolumna w Klienci tabeli.Podobnie OrderItems tabela zawiera kolumna klucz podstawowy OrderItemID, z ograniczenie na klucz obcy IDZamówienia kolumna, która odwołuje się do IDZamówienia kolumna w zamó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 IDklienta wartość i wszystkie wiersze w OrderItems są związane z tych wierszy w tabela zamówienia tabela.Schemat ten pokazuje wszystkie wiersze w trzech tabelach, które są w rekord logiczny dla Customer2:

Rekord logiczny z trzema tabelami zawierający wartości

Do definiowania relacji rekord logiczny między artykuły

Zalety logiczne rekordów

Funkcja logiczna rekordów ma dwie podstawowe zalety:

  • Stosowanie zmian danych jako jednostka.

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

Wniosek zmiany jako jednostki

Jeśli przetwarzanie korespondencji seryjnej jest przerwana, takie jak w przypadku połączenia porzuconych częściowo wypełnionego zestaw pokrewne replikowanych zmian jest wycofywany Jeśli rekordy logiczne są używane.Na przykład, rozważmy przypadek, w którym abonent dodaje nowe zamówienie z IDZamówienia = 6 i dwa nowe wiersze w OrderItems tabela z OrderItemID = 10 i OrderItemID = 11 IDZamówienia = 6.

Rekord logiczny z trzema tabelami zawierający wartości

Jeśli proces replikacja jest przerwana po zamówienia wierszy dla IDZamówienia = 6 zostanie zakończona, lecz przed OrderItems 10 i 11 są wypełniane i logiczne rekordy nie są używane, OrderTotal wartość dla IDZamówienia = 6 nie będą spójne z sumą WielkooćZamówienia wartości OrderItems wierszy.Jeśli używane są rekordy logiczne, zamówienia wierszy dla IDZamówienia = 6 nie jest zobowiązana do odnośnych OrderItems zmiany są replikowane.

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

Aplikacja konflikt obsługi do więcej niż jednej tabeli

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

  • Użytkownik na pierwszej zmiany subskrybenta WielkooćZamówienia z OrderItemID 5 od 100 do 150 i OrderTotal z IDZamówienia 3 od 200 do 250.

  • Zmienia subskrybenta użytkownika na drugim WielkooćZamówienia z OrderItemID 6 od 25 do 125 i OrderTotal z IDZamówienia 3 od 200 do 300.

Jeśli te zmiany są replikowane bez używania rekordów logiczne różnych OrderTotal wartości spowoduje powstanie konflikt i tylko jeden z nich będzie replikowany.Ale bezkonfliktowe zmiany w OrderItems tabela będą replikowane bez konfliktu, pozostawiając ostatni OrderTotal wartości w niespójnym stanie w odniesieniu do OrderItems wierszy.Jeśli rekordy logiczne są używane w tym scenariuszu OrderItems zmiany związane z utraty danych w zamówień zmiana tabela byłoby również obniżyć Wstecz i ostatni OrderTotal wartość byłaby dokładne Podsumowanie OrderItems wierszy.

Aby uzyskać więcej informacji o opcjach odnoszących się do wykrywanie konfliktów i rozdzielczość logiczne rekordy Zobacz Wykrywanie i rozwiązywania konfliktów w rekordach logicznych.

Zagadnienia dotyczące korzystania z logicznego rekordów

Podczas korzystania z logicznego rekordów, należy pamiętać o następujące uwagi.

Uwagi ogólne

  • Zaleca się, aby zachować liczby tabel w rekord logiczny niska jak to możliwe; pięć tabel lub zalecane jest mniejsza.

  • Logiczne rekordów nie można odwoływać się do kolumn z jednym z następujących typów danych:

    • varchar(max) i nvarchar(max)

    • varbinary(max)

    • text i ntext

    • image

    • XML

    • UDT

  • Obcy klucz nie mogą być definiowane relacje tabel opublikowane z opcją KASKADOWO.Aby uzyskać więcej informacji, zobacz CREATE TABLE (Transact-SQL) i ALTER TABLE (Transact-SQL).

  • Nie można zaktualizować kolumny używane w klauzula relacji logicznych.

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

  • Jeśli rekordy logiczne są używane w publikacja zawierającej sparametryzowana filtry, należy zainicjować każdego abonenta z migawka dla jego partycji.Jeśli zainicjować subskrybenta z innej metoda, Agent scalania 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 przeglądarce konfliktów.Aby wyświetlić informacje o tych konfliktów, należy użyć procedury przechowywane replikacja.Aby uzyskać więcej informacji, zobacz Jak Wyświetl informacje o konfliktach publikacji korespondencji seryjnej (Programowanie replikacji Transact-SQL).

Ustawienia publikacji

  • Publikacja musi mieć poziom zgodności 90RTM lub większy.Aby uzyskać więcej informacji zobacz "Poziom zgodności publikacji" sekcja Replikacja zgodności ze starszymi wersjami.

  • publikacja, należy użyć trybu macierzystego migawka.Jest to ustawienie domyślne, chyba że są replikowane do SQL Server Compact 3.5 z dodatkiem SP1, który nie obsługuje rekordy logicznych.

  • Publikacja nie mogą zezwolić na synchronizacja w sieci Web.Aby uzyskać więcej informacji na temat sieci synchronizacja w sieci Web Zobacz Web synchronizacji replikacji scalania.

  • W celu wykorzystania logiczne rekordy odfiltrowane publikacja:

  • Jeśli w publikacja używane filtry łączyć łączyć unikatowy klucz właściwość musi być zestaw do true dla przyłączyć wszystkie filtry, które są zaangażowane w relacji rekord logiczny.Aby uzyskać więcej informacji, zobacz Dołącz filtry.

Relacje między tabelami

  • Tabele powiązane rekordy logicznego musi mieć klucz podstawowy-relacja klucz obcy.

  • Nie zestaw opcję nie dla replikacji 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 replikacji.

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

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

    Tabela podrzędna z co najmniej dwiema tabelami nadrzędnymi

    rekord logiczny nie można użyć do reprezentowania trzy tabele w tej relacji, ponieważ wiersze w ClassMembers nie są skojarzone z jednym klucz podstawowy wiersza.Tabele klas i ClassMembers może nadal stanowią rekord logiczny może tabel ClassMembers i studentów, ale nie wszystkie trzy.

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

    W przykładzie przy użyciu tabel Klienci, zamówień, i OrderItems, nie można użyć rekordów logiczne, jeśli zamówień tabela miał również ograniczenia klucz obcy, który odwołuje się do OrderItems tabela.

Wpływ na wydajność logiczne rekordów

rekord logiczny Funkcji pochodzą z kosztów wydajności.Jeśli rekordy logiczne nie są używane, agent replikacja może przetwarzać wszystkie zmiany dla danego artykuł, w tym samym czas, 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 rekord logicznys są używane, Agent scalania należy przetworzyć zmiany dla każdego cały rekord logiczny ze sobą.Ma wpływ na czas potrzebny agenta scalania replikacji wiersze.Ponadto ponieważ agent otworzy oddzielne transakcji dla każdego rekord logiczny, blokowanie wymagań można zwiększyć.

Zobacz także

Koncepcje