Agentin sijainti, ei datan sijainti, on päätös, joka muovaa SQL Server -tilausta. Kone, joka suorittaa agenttia, avaa yhteyden, toimii tietyn tilin alla ja ottaa syyn niskoilleen, kun synkronointi pysähtyy. Sivustojen välisessä VPN:ssä tuo ero on suunnittelu, ei yksityiskohta. Piirrä agentin yhteydet ennen kuin piirrät verkon.

Kolme roolia, ei kaksi

Publisher omistaa artikkelin datan, Distributor omistaa jakelutietokannan ja Subscriber vastaanottaa muutokset. Log Reader Agent toimii Distributorissa transaktionaalista replikaatiota varten. Distribution Agent on se, jonka sijainti muuttuu tilaustyypin mukana, ja siksi se ohjaa verkon suunnittelua. Selvitä nämä roolit ennen kuin puhut VPN-säännöistä.

Push-tilaus suorittaa Distribution Agentin Distributorissa ja pull-tilaus suorittaa sen Subscriberissa, kuten Microsoftin tilausten dokumentaatio kertoo. Kaikki verkkokeskustelussa seuraa siitä, mikä kone se on. Kirjoita neljä tosiasiaa jokaista tilausta kohti: agentin isäntä, sen prosessi-identiteetti, käyttämänsä tietokantakirjautumiset ja resurssit, joihin sen on päästävä. Nuo tosiasiat, eivät kaavion nuoli, kertovat, minkä suunnan on toimittava.

Push tarkoittaa, että agentti asuu Distributorissa

Push-tilauksessa Distributor avaa yhteyden Subscriberiin VPN:n yli. Tilaajan puolen kuuntelija, palomuuri ja SQL-kirjautuminen ovat vastaanotettava etäpuolelta saapuvat yhteydet. Distributorin palvelutilillä on oltava myös oikeus tilaajan tietokantaan. Suunnittele tuo saapuva polku ennen tilauksen luomista, koska sen löytäminen jälkikäteen tarkoittaa yleensä sen luomista uudelleen.

Tilannevedoksen toimitus lisää polun, jota vakaa replikaatio ei koskaan käytä. Jos tilannevedos on tiedostojakossa, Distribution Agent lukee siitä jaosta ja tilaajan tilin on päästävä samaan UNC-polkuun. Viikkoja kestävä muutosvirta ei kerro mitään siitä, toimiiko uudelleenkäynnistys. Siksi tilannevedoksen jako kuuluu suunnitelmaan alusta asti.

Älä lue pushia yksisuuntaisena liikenteenä. Agentti tarvitsee vastauksia, kuittauksia ja omat todennusvaihtonsa. Polun on oltava kaksisuuntainen yhteyden tasolla, vaikka data liikkuu yhteen suuntaan.

Pull tarkoittaa, että agentti asuu Subscriberissa

Pull-tilaus kääntää yhteyden: Subscriber suorittaa Distribution Agentin ja ottaa yhteyttä Distributoriin. Järjestely sopii VPN-käytäntöön, joka sallii sivukonttorista lähtevät yhteydet ja estää saapuvat. Se asettaa myös aikataulupäätöksen sen käsiin, joka huolehtii sivukonttorin palvelimesta. Valitse se, kun sivukonttorin tiimin on omistettava oma synkronointinsa ja huomattava omat vikansa.

Tilaajan SQL Server Agent -palvelutilillä on oltava lukuoikeus jakelutietokantaan ja tilannevedoksen jakoon. Tuo tili on identiteetti, joka näkyy replikaatiovirheissä, ja paikallinen palvelutili ilman toimialueen oikeuksia epäonnistuu kohdassa, joka näyttää verkkohäiriöltä mutta on todellisuudessa tunnistetietohäiriö. Tarkista tili ennen tunnelin virheenetsintää. Kirjautumisen korjaaminen on yleensä nopeampaa kuin verkon syyttömyyden todistaminen.

Omistajuus seuraa agenttia. Valitse push, kun keskustiimin on omistettava sekä aikataulu että viat. Minkä tahansa valitset, kirjoita se tilauksen viereen, jotta seuraava insinööri tietää, mihin katsoa ensin.

Uudelleenjulkaisu muuttaa hajautusta, ei omistajuutta

Tilaaja voidaan määrittää julkaisemaan uudelleen edelleen tilaajille, jolloin yksi sivukonttorin tietokanta voi palvella useita paikallisia kuluttajia ilman, että jokainen vetää WAN:n yli. Keskimmäinen tietokanta pitää nyt julkaisua ja omia agenttejaan. Se perii myös käyttöoikeudet, valvonnan ja palautussuunnitelman, joita sillä ei aiemmin ollut. Tuo lisärooli on hinta toistuvan WAN-toimituksen poistamisesta.

Dokumentoitu järjestys on tärkeä: alusta saapuva tilaus ennen kuin luot alavirran julkaisun. Käsittele sitä elinkaaren vaiheena, johon kuuluu varmistus, älä paperityönä, joka ohitetaan. Sen kääntäminen tuottaa ketjun, joka näyttää määritetyltä eikä toimita mitään.

Ilmoita kirjoitusmalli selvästi. Vain luku -tietojoukon replikointi paikalliselle kuluttajalle on eri suunnittelu kuin kirjoitusten vastaanottaminen useilla sivustoilla, eikä nuolten ketju luo ristiriitojen ratkaisua. Jos sivukonttorin on kirjoitettava, se on erillinen päätös omalla topologiallaan. Tee myös riippuvuus näkyväksi: kun uudelleenjulkaisija on alhaalla, jokainen sen alla oleva kuluttaja on vanhentunut.

Todista sijoittelu päästä päähän

Lue tilaustyyppi jakelutietokannasta sen sijaan, että luottaisit muistiin, ja tarkista sitten, saapuvatko muutokset todella:

USE distribution;
SELECT publication, subscriber_db, subscription_type
FROM dbo.MSsubscriptions;
EXEC sp_replmonitorsubscriptionpendingcmds
  @publisher = 'PUB1', @publisher_db = 'Sales',
  @publication = 'SalesPub', @subscriber = 'BR1',
  @subscriber_db = 'Sales';

subscription_type arvolla 0 on push ja 1 on pull, eikä sitä voi muuttaa paikan päällä, joten eroavuus tarkoittaa tilauksen luomista uudelleen eikä sen muokkaamista. Odottavien komentojen kutsu kertoo, siirtääkö valittu agentti työtä vai vain suorittaako se. Tilaus, joka ilmoittaa nolla odottavaa komentoa samalla kun tilaajan taulu pysyy tyhjänä, on eri vika kuin se, joka ilmoittaa kasvavasta ruuhkasta, ja molemmat johtavat eri omistajiin.

Lopeta todelliseen muutokseen: lisää tai päivitä yksi rivi Publisherissa, odota agentin raporttia ja lue se rivi Subscriberissa. Tee se vielä kerran lyhyen VPN-katkoksen aikana nähdäksesi, miten agentti toipuu. Tilaus, joka selviytyy tuosta testistä, on sijoittelussa, jonka voit dokumentoida ja puolustaa.

Aiheeseen liittyvät artikkelit