Configurazione della sincronizzazione tramite il Web

L'opzione di sincronizzazione Web per la replica di tipo merge di SQL Server consente la replica dei dati tramite il protocollo HTTPS su Internet. Per utilizzare la sincronizzazione Web, è innanzitutto necessario eseguire le azioni di configurazione riportate di seguito:

  1. Creare nuovi account di dominio e mappare gli account di accesso di SQL Server.

  2. Configurare il computer che esegue Microsoft Internet Information Services (IIS) per la sincronizzazione delle sottoscrizioni.

  3. Configurare una pubblicazione di tipo merge per consentire la sincronizzazione Web.

  4. Configurare una o più sottoscrizioni per l'utilizzo della sincronizzazione Web.

Nota

Se si intende replicare volumi elevati di dati o utilizzare tipi di dati di grandi dimensioni, ad esempio varchar(max), leggere la sezione "Replica di volumi elevati di dati" in questo argomento.

Per configurare correttamente la sincronizzazione Web, è necessario decidere come verrà configurata la sicurezza per soddisfare requisiti e criteri specifici. È preferibile prendere queste decisioni e creare gli account necessari prima di configurare IIS, la pubblicazione e le sottoscrizioni.

Nelle procedure riportate di seguito viene descritta una configurazione della sicurezza semplificata in cui vengono utilizzati account locali, per motivi di brevità. Questa configurazione semplificata è adatta per installazioni in cui sia IIS sia il server di pubblicazione e il server di distribuzione SQL Server vengono eseguiti nello stesso computer, anche se è più probabile (e consigliabile) utilizzare una topologia a più server per un'installazione di produzione. È possibile sostituire gli account locali indicati nelle procedure con account di dominio.

Creazione di nuovi account e mapping di account di accesso di SQL Server

Il listener per la replica di SQL Server (replisapi.dll) si connette al server di pubblicazione rappresentando l'account specificato per il pool di applicazioni associato al sito Web di replica.

L'account utilizzato per il listener per la replica di SQL Server deve disporre di autorizzazioni come descritto in Protezione agente di merge, nella sezione relativa alla connessione al server di pubblicazione o al server di distribuzione". In breve è necessario che l'account:

  • sia membro dell'elenco di accesso alla pubblicazione;

  • sia mappato a un account di accesso associato a un utente nel database di pubblicazione;

  • sia mappato a un account di accesso associato a un utente nel database di distribuzione;

  • disponga delle autorizzazioni di lettura per la condivisione snapshot.

Se si utilizza la replica di SQL Server per la prima volta è inoltre necessario creare account e account di accesso per gli agenti di replica. Per ulteriori informazioni, vedere le sezioni "Configurazione della pubblicazione" e "Configurazione della sottoscrizione" in questo argomento.

Prima di configurare la sincronizzazione Web, vedere la sezione "Procedure consigliate per la sicurezza nella sincronizzazione Web" in questo argomento. Per ulteriori informazioni sulla sicurezza della sincronizzazione Web, vedere Architettura di protezione per la sincronizzazione tramite il Web.

Configurazione del computer che esegue IIS

La sincronizzazione Web richiede l'installazione e la configurazione di IIS. Prima di poter configurare una pubblicazione per l'utilizzo della sincronizzazione Web, è necessario l'URL del sito Web di replica.

La sincronizzazione Web è supportata in IIS versione 5.0, IIS versione 6.0 e IIS versione 7. La Configurazione guidata sincronizzazione Web non è supportata in IIS versione 7.0.

Per la sincronizzazione Web è richiesto SSL. È necessario un certificato di sicurezza rilasciato da un'autorità di certificazione. Solo ai fini del test, è possibile utilizzare un certificato di sicurezza autocertificato.

Per utilizzare la sincronizzazione Web con IIS 7, è necessario installare e configurare manualmente il componente di replica (replisapi.dll), quindi creare e configurare un sito Web che verrà utilizzato dalla replica.

Per configurare IIS per la sincronizzazione Web

Creazione di un Web garden

Il listener per la replica di SQL Server supporta due operazioni di sincronizzazione simultanee per thread. Il superamento di questo limite potrebbe causare interruzioni nella risposta del listener. Il numero di thread allocato a replisapi.dll è determinato dalla proprietà Numero massimo di processi di lavoro del pool di applicazioni. Il valore predefinito della proprietà è 1.

È possibile supportare un numero maggiore di operazioni di sincronizzazione simultanee per CPU aumentando il valore della proprietà Numero massimo di processi di lavoro. L'operazione di scalabilità orizzontale applicata attraverso l'aumento del numero di processi di lavoro per CPU è nota come creazione di un Web garden.

Il Web garden consente la sincronizzazione di più di due sottoscrittori contemporaneamente. Aumenterà inoltre l'utilizzo della CPU da parte di replisapi.dll, con un potenziale impatto negativo sulle prestazioni complessive del server. È importante valutare queste considerazioni quando si sceglie un valore per la proprietà Numero massimo di processi di lavoro.

Per aumentare il valore di Numero massimo di processi di lavoro in IIS 7

  1. In Gestione Internet Information Services (IIS) espandere il nodo del server locale, quindi fare clic sul nodo Pool di applicazioni.

  2. Selezionare il pool di applicazioni associato al sito di sincronizzazione Web, quindi fare clic su Impostazioni avanzate nel riquadro Azioni.

  3. Nella finestra di dialogo Impostazioni avanzate, sotto l'intestazione Elabora modello, fare clic sulla riga Numero massimo di processi di lavoro. Modificare il valore della proprietà, quindi fare clic su OK.

Configurazione della pubblicazione

Per utilizzare la sincronizzazione Web, creare una pubblicazione con le stesse modalità utilizzate per una topologia di merge standard. Per ulteriori informazioni, vedere Pubblicazione di dati e oggetti di database.

Dopo la creazione della pubblicazione, abilitare l'opzione che consente la sincronizzazione Web utilizzando SQL Server Management Studio, Transact-SQL o gli oggetti RMO (Replication Management Objects). Per abilitare la sincronizzazione Web, è necessario fornire l'indirizzo del server Web per le connessioni del sottoscrittore.

Se si utilizza un server di pubblicazione per la prima volta, è necessario configurare un server di distribuzione e una condivisione snapshot. L'agente di merge in ogni sottoscrittore deve disporre delle autorizzazioni di lettura per la condivisione snapshot. Per ulteriori informazioni, vedere Configurazione della distribuzione e Protezione della cartella snapshot.

Per configurare una pubblicazione per consentire la sincronizzazione Web

Configurazione della sottoscrizione

Dopo avere abilitato una pubblicazione e configurato IIS, creare una sottoscrizione pull e specificare che deve essere sincronizzata utilizzando IIS. La sincronizzazione tramite il Web è supportata solo per le sottoscrizioni pull.

Per configurare una sottoscrizione per l'utilizzo della sincronizzazione tramite il Web

Aggiornamento da una versione precedente di SQL Server

Se una topologia di sincronizzazione Web è presente e configurata e si aggiorna SQL Server, è necessario assicurarsi che la versione più recente di Replisapi.dll venga copiata nella directory virtuale utilizzata dalla sincronizzazione Web. Per impostazione predefinita, la versione più recente di Replisapi.dll si trova in C:\Programmi\ Microsoft SQL Server\<nnn>\COM.

Replica di volumi elevati di dati

Per evitare potenziali problemi di memoria nei computer sottoscrittori, nella sincronizzazione Web si utilizza una dimensione massima predefinita di 100 MB per il file XML utilizzato per trasferire le modifiche. Il limite può essere aumentato impostando la chiave del Registro di sistema seguente:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\Replication

WebSyncMaxXmlSize DWORD 2000000

L'intervallo di valori accettabili per questa chiave è compreso tra 100 MB e 4 GB. l valore è espresso in KB. L'impostazione di questo parametro su un valore elevato non garantisce che sia possibile sincronizzare tale quantità di dati. Il limite effettivo è vincolato dalla quantità di memoria contigua disponibile nel computer del Sottoscrittore. Se è necessario impostare un valore maggiore di 100 MB, si consiglia di aumentare il valore in modo incrementale e testare l'utilizzo della memoria con un carico di lavoro tipico nel Sottoscrittore.

La dimensione massima per il file XML è 4 GB, ma la replica sincronizza le modifiche di quel file in batch. La dimensione massima dei batch di dati e metadati è di 25 MB. È necessario assicurarsi che i dati di ciascun batch non superino approssimativamente i 20 MB di dimensioni, per tenere conto dell'overhead dei metadati e di altro tipo. Questo limite presenta le implicazioni seguenti:

  • Non è possibile replicare colonne che causano il superamento del limite di 25 MB per dati e metadati. Questo potrebbe essere un problema quando si replicano righe contenenti tipi di dati di grandi dimensioni, ad esempio varchar(max).

  • Se si replicano volumi elevati di dati, può essere necessario regolare la dimensione dei batch dell'agente di merge.

La dimensione dei batch per la replica di tipo merge è misurata in generazioni, ovvero raccolte di modifiche per ogni articolo. Il numero di generazioni in un batch viene specificato tramite i parametri -DownloadGenerationsPerBatch e -UploadGenerationsPerBatch dell'agente di merge. Per ulteriori informazioni, vedere Agente merge repliche.

Per volumi elevati di dati, specificare un numero basso per ognuno dei parametri di invio in batch. Si consiglia di iniziare con il valore 10, quindi regolarlo in base alle esigenze e alle prestazioni dell'applicazione. In genere, questi parametri sono specificati in un profilo dell'agente. Per ulteriori informazioni sui profili, vedere Profili degli agenti di replica.

Procedure consigliate per la sicurezza nella sincronizzazione Web

Sono disponibili numerose impostazioni relative alla sicurezza nella sincronizzazione Web. È consigliabile adottare l'approccio seguente:

  • Il server di distribuzione e il server di pubblicazione SQL Server devono trovarsi nello stesso computer. Si tratta della configurazione tipica nella replica di tipo merge. È tuttavia necessario che IIS sia installato in un computer separato.

  • Utilizzare SSL (Secure Sockets Layer) per la crittografia della connessione tra il sottoscrittore e il computer che esegue IIS. Questa operazione è necessaria per la sincronizzazione Web.

  • Utilizzare l'autenticazione di base per le connessioni dal sottoscrittore a IIS. Con l'autenticazione di base, IIS è in grado di eseguire connessioni al server di pubblicazione/distribuzione per conto del Sottoscrittore senza alcuna delega. La delega è necessaria se si utilizza l'autenticazione integrata.

    Nota

    L'autenticazione di base è il metodo mediante il quale vengono passate le credenziali a IIS. L'autenticazione di base non impedisce di specificare account di dominio di Windows per le connessioni a IIS.

  • Specificare che l'agente snapshot deve essere eseguito con un account di dominio di Windows e che deve utilizzare tale account per le connessioni. Si tratta della configurazione predefinita. Specificare che ogni agente di merge deve essere eseguito con l'account di dominio dell'utente che utilizza il computer Sottoscrittore e che deve utilizzare tale account per le connessioni.

    Per ulteriori informazioni sulle autorizzazioni richieste dagli agenti, vedere Modello di sicurezza dell'agente di replica.

  • Specificare lo stesso account di dominio utilizzato dall'agente di merge quando si specifica un account e una password nella pagina Informazioni sul server Web della Creazione guidata nuova sottoscrizione o quando si specificano i valori per i parametri @internet_url e @internet_login di sp_addpullsubscription_agent. Questo account deve disporre delle autorizzazioni di lettura per la condivisione snapshot.

  • Ogni pubblicazione deve utilizzare una directory virtuale separata per IIS.

  • L'account con cui viene eseguito il listener per la replica di SQL Server (Replisapi.dll) è anche l'account utilizzato per la connessione al server di pubblicazione e al server di distribuzione durante la sincronizzazione. Questo account deve essere mappato a un account di accesso di SQL nel server di pubblicazione e nel server di distribuzione. Per ulteriori informazioni, vedere la sezione relativa all'impostazione delle autorizzazioni per il listener per la replica di SQL Server in Procedura: Configurazione di IIS per la sincronizzazione tramite il Web.

  • È possibile utilizzare la connessione FTP per trasferire lo snapshot dal server di pubblicazione al computer che esegue IIS. Lo snapshot viene sempre trasferito dal computer che esegue IIS al Sottoscrittore tramite HTTPS. Per ulteriori informazioni, vedere Trasferimento di snapshot tramite FTP.

  • Se i server nella topologia di replica sono protetti da un firewall, potrebbe essere necessario aprire porte nel firewall per consentire la sincronizzazione Web.

    • Il computer sottoscrittore si connette al computer che esegue IIS tramite HTTPS utilizzando SSL. In questo caso è in genere configurato l'utilizzo della porta 443. I Sottoscrittori di SQL Server Compact 3.5 SP2 possono inoltre connettersi tramite HTTP, in genere configurato per l'utilizzo della porta 80.

    • Il computer che esegue IIS si connette in genere al server di pubblicazione o al server di distribuzione mediante la porta 1433 (istanza predefinita). Quando il server di pubblicazione o di distribuzione corrisponde a un'istanza denominata in un server con un'altra istanza predefinita, per la connessione all'istanza denominata viene in genere utilizzata la porta 1500.

    • Se il computer che esegue IIS e il server di distribuzione sono separati da un firewall e per il recapito di snapshot viene utilizzata una condivisione FTP, è necessario aprire le porte utilizzate per FTP. Per ulteriori informazioni, vedere Trasferimento di snapshot tramite FTP.

Nota importanteImportante

L'apertura di porte nel firewall potrebbe esporre il server ad attacchi dannosi. Prima di aprire una porta, verificare di comprenderne le implicazioni per un sistema firewall. Per ulteriori informazioni, vedere Considerazioni sulla sicurezza per un'installazione di SQL Server.