Określanie kolejności przetwarzania artykułów korespondencji seryjnej
Beginning with Microsoft SQL Server 2005, it is possible to override the default order of article processing for merge publications.Jest to przydatne, na przykład, jeśli zdefiniować więzy integralność za pomocą wyzwalaczy i wyzwalaczy te muszą ognia w określonej kolejności.
Aby określić kolejność przetwarzania artykułów
- Programowanie języka Transact-SQL replikacji: Jak Określ kolejność przetwarzania korespondencji seryjnej tabeli artykułów (Programowanie replikacji Transact-SQL)
Jak określić kolejność przetwarzania
Podczas synchronizacji seryjnej artykułów domyślnie przetwarzane w kolejności, wymagane przez zależności między obiektami, włączając ograniczenia deklaratywna integralność referencyjna (DRI), zdefiniowane na tabele bazowe.Przetwarzanie obejmuje wyliczanie zmiany do tabela, a następnie zastosowanie tych zmian.Jeśli DRI nie jest obecny, ale łączyć filtry lub logicznych rekordów istnieje między artykułami tabela, artykuły są przetwarzane w kolejności, wymagane przez filtry i logiczne rekordów.Artykuły nie związane z jakiegokolwiek artykuł przy użyciu DRI, filtry łączyć, rekordy logicznych lub inne zależności są przetwarzane według pseudonim artykuł w sysmergearticles (języka Transact-SQL) tabela systemowa.
Należy rozważyć publikacja zawierającej tabele SalesOrderHeader i SalesOrderDetail z kolumna klucz podstawowy SalesOrderID w SalesOrderHeader tabela i odpowiadającego klucz obcy kolumna SalesOrderID w SalesOrderDetail tabela.Podczas synchronizacji replikacja scalająca uniemożliwia naruszenia klucz obcy wstawiając wszystkich nowych wierszy w SalesOrderHeader przed wstawieniem powiązane wiersze w SalesOrderDetail.Podobnie wiersze są usuwane z SalesOrderDetail przed wiersz skojarzony jest usuwany z SalesOrderHeader.
W niektórych aplikacjach więzy integralność są jednak wymuszane za pośrednictwem bazy danych wyzwalacze, lub poziom aplikacji, a nie DRI.Podane publikacja opisanych powyżej, zamiast DRI, SalesOrderDetail tabeli może mieć wyzwalacza wstawienia, który zapewnia skojarzonym wierszu SalesOrderHeader istnieje tabela przed zezwoleniem insert.SalesOrderHeader może mieć wyzwalacz usunięcia, zapewniający, że nie ma żadnych skojarzonych wierszy w SalesOrderDetail przed zezwoleniem usunięcia.replikacja scalania nie uwzględnia konta wyzwalacze podczas ustalania kolejności przetwarzania artykułów, ponieważ nie może ustalić, jaki wynik wyzwalacz będzie aż jest uruchamiany.Podobnie replikacja nie można uwzględnić ograniczenia konta zdefiniowane poziom aplikacji.
Gdy więzy integralność są obsługiwane za pomocą wyzwalaczy, lub poziom aplikacji, należy określić kolejność, w którym artykuły powinny być przetwarzane.W przykładzie z wyzwalaczami może określić, że SalesOrderHeader tabela powinny być przetworzone przed SalesOrderDetail, ponieważ kolejność artykuł jest oparty na kolejność.Replikacja scalania będzie automatycznie odwrócić kolejność dla usunięć.replikacja scalania nie powiedzie bez artykuł zamawiania, ponieważ Agent scalić kontynuuje przetwarzanie artykułów, jeśli występuje naruszenie ograniczenia; następnie ponawia próbę wszystkie operacje nie powiodło się po przetworzeniu innych artykułów.Określanie artykuł zamówienia po prostu pozwala uniknąć ponownych prób i dodatkowego przetwarzania skojarzonych z nimi.Jeżeli określono niepoprawne zamówienia (na przykład, wyniki rekordów szczegółów przetwarzane przed rekordy nagłówków), replikacja scalająca ponowi próbę przetwarzania do skutku.