Określanie kolejność 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 użyteczne, 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
- Replikacja programowania języka Transact-SQL: Jak Określ kolejność przetwarzania artykułów tabela korespondencji seryjnej (Programowanie replikacja języka Transact-SQL)
W jaki sposób określania kolejności przetwarzania
Podczas synchronizacji korespondencji seryjnej artykuły domyślnie przetwarzane w kolejności, wymaganych przez zależności pomiędzy obiektami, włączając ograniczenia integralność referencyjnej deklaracyjne (DRI) zdefiniowane w tabeli podstawowej.Przetwarzanie obejmuje wyliczanie zmiany do tabela, a następnie wprowadzając zmiany.Jeśli DRI nie jest obecny, ale istnieją filtry łączyć lub logiczne rekordów między artykuły tabela, artykuły są przetwarzane w kolejności, wymaganych przez filtry i logicznych rekordów.Artykuły nie związane z innego artykułu przy użyciu DRI, filtry łączyć, rekordy logicznych lub innych zależności są przetwarzane zgodnie z pseudonim artykuł w sysmergearticles (języka Transact-SQL) tabela systemowa.
Należy wziąć pod uwagę publikacja, która zawiera tabele SalesOrderHeader and SalesOrderDetail z kolumna klucz podstawowy SalesOrderID in the SalesOrderHeader tabela i odpowiadającego obcego klucza kolumna SalesOrderID in the SalesOrderDetail tabela.Podczas synchronizacji replikacja łączenia zapobiega przez wstawienie wszystkich nowych wierszy w naruszenia klucz obcy SalesOrderHeader przed wstawieniem skojarzonych wierszy w SalesOrderDetail.Podobnie wiersze są usuwane z SalesOrderDetail przed skojarzony wiersz został usunięty z SalesOrderHeader.
Jednak w niektórych aplikacjach integralność referencyjnej jest wymuszane za pomocą wyzwalaczy bazy danych lub poziom aplikacji, a nie za pośrednictwem funkcji DRI.Biorąc pod uwagę publikacja, opisane powyżej, zamiast funkcji DRI, SalesOrderDetail tabela może mieć wyzwalacza wstawienia zapewniający w skojarzonym wierszu SalesOrderHeader tabeli występuje przed zezwoleniem wstawiania.SalesOrderHeader może mieć wyzwalacz usuwania, który zapewnia w nie ma żadnych skojarzonych wierszySalesOrderDetail przed zezwoleniem usunięcia.replikacja łączenia nie zajmuje na koncie wyzwalacze podczas określania kolejności przetwarzania artykułów, ponieważ nie można określić, czego wynikiem wyzwalacz będzie aż jest uruchamiany.Podobnie replikacja nie uwzględniają ograniczeń konta zdefiniowane poziom aplikacji.
Gdy integralność referencyjnej jest obsługiwane za pomocą wyzwalaczy, lub poziom aplikacji, należy określić kolejność, w którym powinny być przetworzone artykułów.W przykładzie z wyzwalaczami, użytkownik może określić, że SalesOrderHeader tabela powinny być przetworzone przed SalesOrderDetail, ponieważ kolejność artykuł jest oparty na wstawienie zamówienia.replikacja łączenia będą automatycznie odwrócić kolejność dla usuwa.replikacja łączenia nie powiedzie bez kolejności artykuł, ponieważ Agent Scal kontynuuje przetwarzanie artykuły, jeżeli nastąpi naruszenie ograniczenia, a następnie ponawia próbę czynnościom, które nie powiodły się po przetworzeniu inne artykuły.Określanie kolejności artykuł pozwala po prostu uniknąć ponownych prób wysłania i dodatkowego przetwarzania związanych z nimi.Jeśli określisz niepoprawne zamówienia (na przykład taką, która powoduje rekordy szczegółowe przetwarzane przed nagłówkiem rekordów), scalania replikacja będzie ponawiał próby przetwarzania do skutku.