łączyć Filtry
A łączyć filtr umożliwia tabela, które należy filtrować zależnie od tego, jaki zastosowano filtr w tabela pokrewnej w publikacja.Zazwyczaj tabela nadrzędnej jest filtrowany przy użyciu filtru sparametryzowana; następnie jeden lub więcej filtrów łączyć są zdefiniowane w podobny sposób definiuje się łączyć między tabelami.Filtry łączyć rozszerzyć sparametryzowana filtr tak, aby dane w tabelach pokrewnych są replikowane tylko pasujący Klauzula filtr łączenia.
Filtry łączyć zazwyczaj wykonaj podstawowego klucz i obcego relacji kluczy zdefiniowanych dla tabel, do których są stosowane, ale nie są one ograniczone wyłącznie do podstawowego klucz i obcego relacji kluczy.łączyć Filtr może być oparty na dowolnym logiki, która porównuje powiązanych danych w dwóch tabelach.
Należy wziąć pod uwagę następujące tabele w Adventure Works Przykładowa baza danych, które są związane za pośrednictwem klucz podstawowy relacji kluczy obcych:
HumanResources.Employee
Sales.SalesOrderHeader
Sales.SalesOrderDetail
Tabele te można stosować w aplikacji do obsługi mobilnych pracowników działu sprzedaży, ale muszą one być filtrowane tak, to każdy sprzedawca w HumanResources.Employee tabela odbiera tylko dane dotyczące zamówień swoich klientów.
Pierwszym krokiem jest określenie sparametryzowana filtr w tabela nadrzędnej, czyli w tym przykładzie HumanResources.Employee tabela.Ta tabela zawiera kolumna LoginID, która zawiera identyfikator logowania dla każdego pracownika w postaci domena\login.Aby filtrować w tej tabela, dzięki czemu każdy pracownik otrzymuje tylko dane związane z nimi, określić klauzula sparametryzowana filtru:
LoginID = SUSER_SNAME()
Ten filtr daje pewność, że subskrypcja każdego pracownika zawiera tylko dane z HumanResources.Employee tabela, która odnosi się do pracownika (która jest w tym przypadek jeden wiersz).Aby uzyskać więcej informacji zobacz Sparametryzowana filtry wierszy.
Następnym krokiem jest rozszerzyć ten filtr do każdej z tabel związanych relacją, stosując składnię podobną do tej służy do określania łączyć między dwiema tabelami.Pierwszy łączyć klauzula filtru jest:
Employee.EmployeeID = SalesOrderHeader.SalesPersonID
Dzięki temu subskrypcja zawiera tylko zamówienia dane istotne dla każdego sprzedawcy.Drugi łączyć klauzula filtru jest:
SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID
Dzięki temu subskrypcja zawiera wyłącznie dane szczegółowe, związane z danymi zamówienia dla każdego sprzedawcy.W tym przykładzie przedstawiono pojedynczej tabela, przy czym ed łączyć w każdym punkcie; możliwe jest także łączyć więcej niż jedną tabela w każdym punkcie.
łączyć filtry mogą być dodawane po kolei za pomocą Kreatora nowej publikacja, Właściwości publikacja , okno dialogowe lub mogą być dodawane programowo.Można je również wygenerować automatycznie za pomocą Kreatora nowej publikacja: należy określić filtr wiersza tabela, a łączyć filtry są stosowane do wszystkich powiązanych tabel.
SQL Server Management Studio: Jak Definiowanie i modyfikowanie filtr łączenia między artykułów korespondencji seryjnej (SQL Server Management Studio) i Jak Automatycznie Generuj zestaw filtrów łączyć między artykułów korespondencji seryjnej (SQL Server Management Studio)
Replikacja programowania języka Transact-SQL: Jak Definiowanie i modyfikowanie filtr łączenia między artykułów korespondencji seryjnej (Programowanie replikacja języka Transact-SQL)
Replikacja programowania RMO (Management Objects): Jak Definiowanie artykułu (Programowanie RMO)
Optymalizacja łączyć filtr wyników
łączyć wydajności filtru może zostać zoptymalizowana według poniższych wskazówek:
Ogranicz liczbę tabel hierarchii filtr łączenia.
Filtry łączyć może obejmować dowolną liczbę tabel, ale filtry z dużą liczbą tabel może znacznie obniżyć wydajność podczas przetwarzania korespondencji seryjnej.Jeśli filtry łączyć pięć lub więcej tabel jest generowany, należy wziąć pod uwagę innych rozwiązań: nie Filtruj tabel, które są małe, nie mogą zostać zmienione lub są przede wszystkim tabele przeszukiwania. Za pomocą filtrów łączyć między tabelami, które muszą być podzielone na partycje między subskrypcji.
zestaw Unikatowy klucz łączyć Opcja Wartość true odpowiednim.
Proces korespondencji seryjnej składa się z optymalizacji wydajności specjalne dostępna, jeśli sprzężone kolumna w obiekcie nadrzędnym jest unikatowy.Jeśli w warunek łączyć jest oparty na kolumnie unikatowe, należy ustawić Unikatowy klucz łączyć opcji filtr łączenia.Aby uzyskać informacje dotyczące ustawiania tej opcji Zobacz jak to zrobić tematy wymienione w poprzedniej sekcji.
Upewnij się, że w kolumnach, do którego odwołuje się filtry łączyć są indeksowane.
Jeśli w kolumnach, odwołanie do filtru są indeksowane, replikacja można efektywniej procesu filtrów.
Nie należy tworzyć filtrów wierszy, które naśladować filtry łączyć.
Istnieje możliwość utworzenia filtrów wierszy, które naśladować łączyć filtrów przy użyciu podkwerenda w klauzula WHERE, takie jak:
WHERE Customer.SalesPersonID IN (SELECT EmployeeID FROM Employee WHERE LoginID = SUSER_SNAME())
Zdecydowanie zaleca się, że taka logika wyrażone w filtrze łączyć, a nie podkwerenda.Jeśli aplikacja wymaga filtr wiersza, aby użyć subsquery, upewnij się, podkwerendę odwołuje się tylko wyszukiwania danych, który nie ulega zmianie.