Dołącz filtry
A filtr łączyć umożliwia tabela filtrowanie oparte na sposób filtrowania tabela pokrewnej w publikacja.Zazwyczaj tabela nadrzędnej jest filtrowana z zastosowaniem filtru sparametryzowana; następnie jeden lub więcej filtrów łączyć są zdefiniowane w bardzo ten sam sposób definiowania łączyć między tabelami.filtr łączyćs rozszerzyć sparametryzowana filtr tak, aby dane w tabelach pokrewnych są replikowane tylko, jeśli jest on zgodny z filtr łączyć klauzula.
Dołącz filtry zazwyczaj postępuj zgodnie z klucz podstawowy/ zdefiniowane relacje klucz obcy dla tabel, do których są one stosowane, ale nie są one ograniczone wyłącznie do klucz podstawowy/ obcego relacji klucza.filtr łączyć Może być oparta na dowolnym logiki, która porównuje powiązanych danych w dwóch tabelach.
Należy rozważyć następujące tabele w Adventure Works Przykładowa baza danych, które są powiązane przez klucz podstawowy klucz obcy relacji:
HumanResources.Employee
Sales.SalesOrderHeader
Sales.SalesOrderDetail
Tabele te mogą być używane w aplikacji do obsługi przenośnego działu sprzedaży, ale muszą zostać przefiltrowane tak, że każdy sprzedawca w HumanResources.Employee tabela odbiera tylko dane istotne dla ich klientów zamówienia.
Pierwszym krokiem jest określenie sparametryzowana filtr w tabela nadrzędnej, która w tym przykładzie jest HumanResources.Employee tabela.Ta tabela zawiera kolumna LoginID, który zawiera identyfikator logowania dla każdego pracownika w formularzu domena\login.Do filtrowania tabela tak, aby każdy pracownik otrzyma tylko dane z nimi związane, określ klauzula sparametryzowana filtru:
LoginID = SUSER_SNAME()
Filtr ten zapewnia subskrypcja każdego pracownika zawiera tylko dane z HumanResources.Employee tabela odpowiedniego pracownika (czyli w tym przypadek jeden wiersz).Aby uzyskać więcej informacji, zobacz Filtry parametrami wiersza.
Następnym krokiem jest rozszerzyć ten filtr, aby każda z tabel związanych relacją, używając składni podobnej do tej stosowanej do określania łączyć między dwoma tabelami.Pierwszy filtr łączyć klauzula jest:
Employee.EmployeeID = SalesOrderHeader.SalesPersonID
Dzięki temu subskrypcja zawiera tylko zamówienia dane istotne dla każdego sprzedawcy.Drugi filtr łączyć klauzula jest:
SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID
Dzięki temu subskrypcja zawiera tylko dane szczegółowe związane z danymi zamówienia dla każdego sprzedawcy.W tym przykładzie przedstawiono pojedynczej tabela przyłączeniem w każdym punkcie; możliwe jest również łączyć więcej niż jedną tabela w każdym punkcie.
Sprzężenia filtry mogą być dodawane w czas za pomocą nowego Kreatora publikacji i Właściwości publikacji okno dialogowe lub można dodać programistycznie.Te mogą być też generowane automatycznie przez Kreatora nowej publikacji: Określ filtr wiersza tabela i łączyć filtry są stosowane do wszystkich powiązanych tabel.
SQL Server Management Studio: Jak Definiowanie i modyfikowanie filtru sprzężenia między artykułami korespondencji seryjnej (SQL Server Management Studio) and Jak Automatycznie wygenerować zestaw filtrów sprzężenia między artykułami korespondencji seryjnej (SQL Server Management Studio)
Programowanie języka Transact-SQL replikacji: Jak Definiowanie i modyfikowanie filtru sprzężenia między artykuły korespondencji seryjnej (Programowanie replikacji Transact-SQL)
Replikacja programowania Zarządzanie obiektami (RMO): Jak Definiowanie artykuł (Programowanie RMO)
Optymalizacja wydajności filtr sprzężenia
Dołącz działania filtrów można zoptymalizować według poniższych wskazówek:
Ogranicz liczbę tabel w filtr łączyć hierarchii.
Filtry sprzężenia może obejmować nieograniczoną liczbę tabel, ale filtry z dużą liczbą tabel może znacząco obniżyć wydajność podczas przetwarzania korespondencji seryjnej.Generowania filtry łączyć pięć lub więcej tabel, należy wziąć pod uwagę innych rozwiązań: nie Filtruj tabel, które są małe, nie podlegające zmianom lub są głównie tabele przeszukiwania.Za pomocą filtrów łączyć tylko między tabelami, które musi być podzielony między subskrypcji.
Ustaw łączyć unikatowy klucz opcji True gdzie stosowne.
Proces scalania ma specjalne performance optimizations dostępne, jeśli sprzężone kolumna w obiekcie nadrzędnym jest unikatowa.Jeśli warunek łączyć jest oparty na niepowtarzalną kolumna zestaw łączyć unikatowy klucz opcji filtru łączyć.Informacje dotyczące ustawiania tej opcji w tematach opisujących wymienione w poprzedniej sekcji.
Upewnij się, że kolumny, do których odwołuje się łączyć filtry są indeksowane.
Jeśli w filtrze odwołanie do kolumny są indeksowane, replikacja można efektywniej procesu filtrów.
Nie należy tworzyć filtrów wierszy, które naśladować filtry łączyć.
Jest możliwe tworzenie filtrów wierszy, które naśladować łączyć filtrów przy użyciu podzapytanie w klauzula WHERE, takie jak:
WHERE Customer.SalesPersonID IN (SELECT EmployeeID FROM Employee WHERE LoginID = SUSER_SNAME())
Zdecydowanie zaleca się wyrażone w takich logiki filtr łączyć zamiast podzapytanie.Jeśli aplikacja wymaga filtr wiersza, aby użyć subsquery, upewnij się, że podzapytanie odwołuje się tylko wyszukiwanie danych, która nie zmienia.
Zobacz także