Creare una sottoscrizione per un Sottoscrittore non SQL Server

Si applica a: SQL Server

Questo argomento illustra come creare una sottoscrizione per un sottoscrittore non SQL Server in SQL Server tramite SQL Server Management Studio o Transact-SQL. La replica transazionale e la replica snapshot supportano la pubblicazione di dati su sottoscrittori non SQL Server. Per informazioni sulle piattaforme di Sottoscrittori supportate, vedere Non-SQL Server Subscribers.

Contenuto dell'articolo

Utilizzo di SQL Server Management Studio

Per creare una sottoscrizione per un Sottoscrittore non SQL Server:

  1. Installare e configurare il software client e il provider o i provider OLE DB appropriati sul database di distribuzione SQL Server. Per ulteriori informazioni, vedere Sottoscrittori Oracle e Sottoscrittori IBM Db2.

  2. Creare una pubblicazione utilizzando la Creazione guidata nuova pubblicazione. Per informazioni sulla creazione di pubblicazioni, vedere Creare una pubblicazione e Creare una pubblicazione da un database Oracle. Specificare le opzioni seguenti nella Creazione guidata nuova pubblicazione.

    • Nella pagina Tipo di pubblicazione selezionare Pubblicazione snapshot o Pubblicazione transazionale.

    • Nella pagina Agente snapshot, deselezionare Crea snapshot immediatamente.

      Lo snapshot viene creato dopo che la pubblicazione è stata attivata per i Sottoscrittori non SQL Server, in modo da garantire che l'agente di snapshot generi uno snapshot e script di inizializzazione che siano adatti ai Sottoscrittori non SQL Server.

  3. Abilitare la pubblicazione per i Sottoscrittori non SQL Server usando la finestra di dialogo Proprietà pubblicazione - <NomePubblicazione>. Per ulteriori informazioni su questo passaggio, vedere Publication Properties, Subscription Options .

  4. Creare una sottoscrizione utilizzando la Creazione guidata nuova sottoscrizione. In questo argomento sono presenti ulteriori informazioni su questo passaggio.

  5. (Facoltativo) Modificare la proprietà di articolo pre_creation_cmd affinché le tabelle vengano mantenute nel Sottoscrittore. In questo argomento sono presenti ulteriori informazioni su questo passaggio.

  6. Generare uno snapshot per la pubblicazione. In questo argomento sono presenti ulteriori informazioni su questo passaggio.

  7. Sincronizzare la sottoscrizione. Per altre informazioni, vedere Sincronizzazione di una sottoscrizione push.

Per abilitare una pubblicazione per Sottoscrittori non SQL Server

  1. Connettersi al server di pubblicazione in SQL Server Management Studio e quindi espandere il nodo server.

  2. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .

  3. Fare clic con il pulsante destro del mouse sulla pubblicazione e quindi scegliere Proprietà.

  4. Nella pagina Opzioni sottoscrizione , selezionare il valore True per l'opzione Consenti Sottoscrittori non SQL Server. Se si seleziona questa opzione vengono modificate alcune proprietà in modo che la pubblicazione sia compatibile con i Sottoscrittori non SQL Server.

    Nota

    Selezionando True , il valore della proprietà dell'articolo pre_creation_cmd viene impostato su 'drop'. In base a tale impostazione, se una tabella nel Sottoscrittore corrisponde al nome della tabella nell'articolo, tale tabella verrà eliminata dalla replica. Se si dispone di tabelle esistenti che si desidera mantenere, utilizzare la stored procedure sp_changearticle per ogni articolo e specificare il valore 'none' per pre_creation_cmd: sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

  5. Seleziona OK. Verrà richiesto di creare un nuovo snapshot per la pubblicazione. Se non si desidera crearlo in questo momento, utilizzare i passaggi descritti nella "Procedura" seguente in un momento successivo.

Per creare una sottoscrizione per un Sottoscrittore non SQL Server

  1. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .

  2. Fare clic con il pulsante destro del mouse sulla pubblicazione appropriata e quindi scegliere Nuove sottoscrizioni.

  3. Verificare che l'opzione Esegui tutti gli agenti nel server di distribuzione nella pagina Posizione in cui eseguire l'agente di distribuzione sia selezionata. I Sottoscrittori non SQL Server non supportano l'esecuzione di agenti nel Sottoscrittore.

  4. Nella pagina Sottoscrittori, fare clic su Aggiungi Sottoscrittore, quindi su Aggiungi Sottoscrittore non SQL Server.

  5. Nella finestra di dialogo Aggiungi Sottoscrittore non SQL Server , selezionare il tipo di Sottoscrittore.

  6. Inserire un valore nella casella Nome origine dati:

    • Per Oracle, si tratta del nome TNS che è stato configurato.

    • Per IBM, può essere qualsiasi nome. In genere viene utilizzato per specificare l'indirizzo di rete del Sottoscrittore.

    Il nome origine dati immesso in questo passaggio e le credenziali specificate nel passaggio 9 non vengono convalidati da questa procedura guidata. Non vengono utilizzati dalla replica fino all'esecuzione dell'agente di distribuzione per la sottoscrizione. Accertarsi che tutti i valori siano stati verificati connettendosi al Sottoscrittore con uno strumento client come sqlplus per Oracle. Per ulteriori informazioni, vedere Sottoscrittori Oracle e Sottoscrittori IBM Db2.

  7. Seleziona OK. Nella pagina Sottoscrittori della procedura guidata, il Sottoscrittore è ora visualizzato nella colonna Sottoscrittore con una (destinazione predefinita) di sola lettura nella colonna Database di sottoscrizione :

    • Per Oracle, un server include al massimo un database e pertanto non è necessario specificare il database.

    • Per IBM Db2, il database viene specificato nella proprietà Catalogo iniziale della stringa di connessione DB2, che può essere inserita nel campo Opzioni di connessione aggiuntive descritto più avanti in questo processo.

  8. Nella pagina Sicurezza agente di distribuzione , fare clic sul pulsante delle proprietà (...) accanto al Sottoscrittore per accedere alla finestra di dialogo Sicurezza agente di distribuzione .

  9. Nella finestra di dialogo Sicurezza agente di distribuzione:

    • Nei campi Account processo, Password e Conferma password, inserire l'account e la password di Microsoft Windows con cui deve essere eseguito l'agente di distribuzione e stabilire le connessioni locali al server di distribuzione.

      L'account richiede le autorizzazioni minime seguenti: membro del ruolo predefinito db_owner del database di distribuzione, membro dell'elenco di accesso alla pubblicazione, autorizzazione di lettura sulla condivisione snapshot e autorizzazione di lettura sulla directory di installazione del provider OLE DB. Per altre informazioni sull'elenco di acceso alla pubblicazione, vedere Proteggere il server di pubblicazione.

    • Nei campi Nome account di accesso, Passworde Conferma passworddi Connessione al Sottoscrittore , inserire il nome account di accesso e la password da utilizzare per la connessione al Sottoscrittore. Questo nome account di accesso dovrebbe essere già configurato ed avere autorizzazioni sufficienti per la creazione di oggetti nel database di sottoscrizione.

    • Nel campo Opzioni di connessione aggiuntive , specificare le eventuali opzioni di connessione per il Sottoscrittore nel formato di stringa di connessione (Oracle non richiede opzioni aggiuntive). Le opzioni devono essere separate dal punto e virgola. L'esempio seguente illustra una stringa di connessione DB2 (le interruzioni di riga sono inserite per agevolare la lettura):

      Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;  
      PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;  
      Default Schema=MY_SCHEMA;Process Binary as Character=False;Units of Work=RUW;DBMS Platform=DB2/NT;  
      Persist Security Info=False;Connection Pooling=True;  
      

      La maggior parte delle opzioni nella stringa è specifica per il server DB2 configurato, ma è necessario che l'opzione Process Binary as Character sia sempre impostata su False. È necessario specificare un valore per l'opzione Initial Catalog per identificare il database di sottoscrizione.

  10. Nella pagina Pianificazione della sincronizzazione , selezionare una pianificazione per l'agente di distribuzione dal menu Pianificazione agente . In genere è Esecuzione continua.

  11. Nella pagina Inizializzazione sottoscrizioni , specificare se la sottoscrizione deve essere inizializzata e quando:

    • Deselezionare Inizializzazione di solo se nel database di sottoscrizione sono stati creati tutti gli oggetti e sono stati aggiunti tutti i dati necessari.

    • Selezionare Immediatamente nell'elenco a discesa della colonna Quando per ottenere il trasferimento dei file di snapshot da parte dell'agente di distribuzione al Sottoscrittore al termine di questa procedura guidata. Selezionare Alla prima sincronizzazione per fare in modo che l'agente trasferisca i file alla successiva esecuzione pianificata dell'agente.

  12. Nella pagina Azioni procedura guidata , se si desidera, creare lo script della sottoscrizione. Per altre informazioni, vedere Scripting Replication.

Per mantenere le tabelle nel Sottoscrittore

  • Per impostazione predefinita, se si attiva una pubblicazione per Sottoscrittori non SQL Server, il valore della proprietà di articolo pre_creation_cmd verrà impostato su 'drop'. In base a tale impostazione, se una tabella nel Sottoscrittore corrisponde al nome della tabella nell'articolo, tale tabella verrà eliminata dalla replica. Se si dispone di tabelle esistenti nel Sottoscrittore che si desidera mantenere, utilizzare la stored procedure sp_changearticle per ogni articolo e specificare il valore 'none' per pre_creation_cmd. sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

Per generare uno snapshot per la pubblicazione.

  1. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .

  2. Fare clic con il pulsante destro del mouse sulla pubblicazione e quindi scegliere Visualizza stato agente snapshot.

  3. Nella finestra di dialogo Visualizza stato agente snapshot - <Pubblicazione> fare clic su Avvia.

Al termine della generazione dello snapshot da parte dell'agente, viene visualizzato un messaggio come ""[100%] Generato uno snapshot di 17 articoli."

Utilizzo di Transact-SQL

È possibile creare sottoscrizioni push a sottoscrittori non SQL Server a livello di programmazione usando le stored procedure di replica.

Importante

Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione. Se è necessario archiviare le credenziali in un file script, è fondamentale proteggere il file per evitare accessi non autorizzati.

Per creare una sottoscrizione push per una pubblicazione transazionale o snapshot in un Sottoscrittore non SQL Server

  1. Installare il provider OLE DB più recente per il Sottoscrittore non SQL Server sia nel server di pubblicazione che nel server di distribuzione. Per i requisiti di replica relativi a un provider OLE DB, vedere Sottoscrittori non SQL Server, Sottoscrittori Oracle, Sottoscrittori IBM Db2.

  2. Nel database di pubblicazione del server di pubblicazione, eseguire sp_helppublication (Transact-SQL) per verificare che la pubblicazione supporti Sottoscrittori non SQL Server.

    • Se il valore di enabled_for_het_sub è 1, i Sottoscrittori non SQL Server sono supportati.

    • Se il valore di enabled_for_het_sub è 0, eseguire sp_changepublication (Transact-SQL), specificando enabled_for_het_sub per @property e true per @value.

      Nota

      Prima di impostare enabled_for_het_sub su true, è necessario eliminare eventuali sottoscrizioni esistenti nella pubblicazione. Non è possibile impostare enabled_for_het_sub su true se la pubblicazione supporta anche sottoscrizioni aggiornabili. La modifica dell'impostazione enabled_for_het_sub influirà su altre proprietà della pubblicazione. Per altre informazioni, vedere Non-SQL Server Subscribers.

  3. Nel database di pubblicazione del server di pubblicazione eseguire sp_addsubscription (Transact-SQL). Specificare @publication, @subscriber, il valore (default destination) per @destination_db, il valore push per @subscription_type e il valore 3 per @subscriber_type (per indicare un provider OLE DB).

  4. Nel database di pubblicazione del server di pubblicazione eseguire sp_addpushsubscription_agent (Transact-SQL). Specifica i dettagli seguenti:

    • I parametri @subscriber e @publication.

    • Il valore (default destination) per @subscriber_db.

    • Le proprietà dell'origine dati diversa da SQL Server per @subscriber_provider, @subscriber_datasrc, @subscriber_location, @subscriber_provider_string, e @subscriber_catalog.

    • Le credenziali di Microsoft Windows usate per eseguire l'agente di distribuzione nel server di distribuzione per @job_login e @job_password.

    Nota

    Per le connessioni effettuate con l'autenticazione integrata di Windows vengono usate sempre le credenziali di Windows specificate da @job_login e @job_password. L'agente di distribuzione esegue sempre la connessione locale al server di distribuzione utilizzando l'autenticazione integrata di Windows. Per impostazione predefinita, l'agente si connette al Sottoscrittore utilizzando l'autenticazione integrata di Windows.

    • Il valore 0 per @subscriber_security_mode e le informazioni sull'account di accesso del provider OLE DB per @subscriber_login e @subscriber_password.

    • Specificare una pianificazione per il processo dell'agente di distribuzione da eseguire per la sottoscrizione. Per altre informazioni, vedere Specify Synchronization Schedules.

    Importante

    Quando si crea una sottoscrizione push in un server di pubblicazione per un server di distribuzione remoto, i valori specificati per tutti i parametri, compresi job_login e job_password, vengono inviati al server di distribuzione come testo normale. È consigliabile crittografare la connessione tra il server di pubblicazione e il server di distribuzione remoto prima di eseguire questa stored procedure. Per altre informazioni, vedere Abilitare le connessioni crittografate al motore di database (Gestione configurazione SQL Server).