Creazione di una sottoscrizione per un Sottoscrittore non SQL ServerCreate a Subscription for a Non-SQL Server Subscriber

In questo argomento viene descritto come creare una sottoscrizione per un Sottoscrittore non SQL Server in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to create a subscription for a non-SQL Server Subscriber in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. La replica transazionale e la replica snapshot supportano la pubblicazione di dati su Sottoscrittori non SQL ServerSQL Server .Transactional and snapshot replication support publishing data to non- SQL ServerSQL Server Subscribers. Per informazioni sulle piattaforme di Sottoscrittori supportate, vedere Non-SQL Server Subscribers.For information about supported Subscriber platforms, see Non-SQL Server Subscribers.

Contenuto dell'argomentoIn This Topic

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per creare una sottoscrizione per un Sottoscrittore non SQL ServerSQL Server :To create a subscription for a non- SQL ServerSQL Server Subscriber:

  1. Installare e configurare il software client e il provider o i provider OLE DB appropriati sul database di distribuzione SQL ServerSQL Server .Install and configure the appropriate client software and OLE DB provider(s) on the SQL ServerSQL Server Distributor. Per ulteriori informazioni, vedere Oracle Subscribers e IBM DB2 Subscribers.For more information, see Oracle Subscribers and IBM DB2 Subscribers.

  2. Creare una pubblicazione utilizzando la Creazione guidata nuova pubblicazione.Create a publication using the New Publication Wizard. Per informazioni sulla creazione di pubblicazioni, vedere Creare una pubblicazione e Creare una pubblicazione da un database Oracle.For more information about creating publications, see Create a Publication and Create a Publication from an Oracle Database. Specificare le opzioni seguenti nella Creazione guidata nuova pubblicazione.Specify the following options in the New Publication Wizard:

    • Nella pagina Tipo di pubblicazione selezionare Pubblicazione snapshot o Pubblicazione transazionale.On the Publication Type page, select Snapshot publication or Transactional publication.

    • Nella pagina Agente snapshot , deselezionare Crea snapshot immediatamente.On the Snapshot Agent page, clear Create a snapshot immediately.

      Lo snapshot viene creato dopo che la pubblicazione è stata attivata per i Sottoscrittori non SQL ServerSQL Server , in modo da garantire che l'agente snapshot generi uno snapshot e script di inizializzazione che siano adatti ai Sottoscrittori non SQL ServerSQL Server .You create the snapshot after the publication is enabled for non- SQL ServerSQL Server Subscribers to ensure that the Snapshot Agent generates a snapshot and initialization scripts that are suitable for non- SQL ServerSQL Server Subscribers.

  3. Abilitare la pubblicazione per i Sottoscrittori non SQL ServerSQL Server usando la finestra di dialogo Proprietà pubblicazione - <NomePubblicazione>.Enable the publication for non- SQL ServerSQL Server Subscribers using the Publication Properties - <PublicationName> dialog box. Per ulteriori informazioni su questo passaggio, vedere Publication Properties, Subscription Options .See Publication Properties, Subscription Options for more information about this step.

  4. Creare una sottoscrizione utilizzando la Creazione guidata nuova sottoscrizione.Create a subscription using the New Subscription Wizard. In questo argomento sono presenti ulteriori informazioni su questo passaggio.This topic provides more information about this step.

  5. (Facoltativo) Modificare la proprietà di articolo pre_creation_cmd affinché le tabelle vengano mantenute nel Sottoscrittore.(Optional) Change the pre_creation_cmd article property to retain tables at the Subscriber. In questo argomento sono presenti ulteriori informazioni su questo passaggio.This topic provides more information about this step.

  6. Generare uno snapshot per la pubblicazione.Generate a snapshot for the publication. In questo argomento sono presenti ulteriori informazioni su questo passaggio.This topic provides more information about this step.

  7. Sincronizzare la sottoscrizione.Synchronize the subscription. Per altre informazioni, vedere Synchronize a Push Subscription.For more information, see Synchronize a Push Subscription.

Per abilitare una pubblicazione per Sottoscrittori non SQL ServerTo enable a publication for non-SQL Server Subscribers

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studioe quindi espandere il nodo del server.Connect to the Publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .Expand the Replication folder, and then expand the Local Publications folder.

  3. Fare clic con il pulsante destro del mouse sulla pubblicazione e quindi scegliere Proprietà.Right-click the publication, and then click Properties.

  4. Nella pagina Opzioni sottoscrizione , selezionare il valore True per l'opzione Consenti Sottoscrittori non SQL Server.On the Subscription Options page, select a value of True for the option Allow non-SQL Server Subscribers. Se si seleziona questa opzione vengono modificate alcune proprietà in modo che la pubblicazione sia compatibile con i Sottoscrittori non SQL ServerSQL Server .Selecting this option changes a number of properties so that the publication is compatible with non- SQL ServerSQL Server Subscribers.

    Nota

    Selezionando True , il valore della proprietà dell'articolo pre_creation_cmd viene impostato su 'drop'.Selecting True sets the value of the pre_creation_cmd article property to 'drop'. In base a tale impostazione, se una tabella nel Sottoscrittore corrisponde al nome della tabella nell'articolo, tale tabella verrà eliminata dalla replica.This setting specifies that replication should drop a table at the Subscriber if it matches the name of the table in the article. 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'.If you have existing tables at the Subscriber that you want to keep, use the sp_changearticle stored procedure for each article; specify a value 'none' for pre_creation_cmd: sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

  5. Fare clic su OK.Click OK. Verrà richiesto di creare un nuovo snapshot per la pubblicazione. You will be prompted to create a new snapshot for the publication. Se non si desidera crearlo in questo momento, utilizzare i passaggi descritti nella "Procedura" seguente in un momento successivo.If you do not want to create one at this time, use the steps described in the next "how to" procedure at a later time.

Per creare una sottoscrizione per un Sottoscrittore non SQL ServerTo create a subscription for a non-SQL Server Subscriber

  1. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .Expand the Replication folder, and then expand the Local Publications folder.

  2. Fare clic con il pulsante destro del mouse sulla pubblicazione appropriata e quindi scegliere Nuove sottoscrizioni.Right-click the appropriate publication, and then click New Subscriptions.

  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.On the Distribution Agent Location page, ensure Run all agents at the Distributor is selected. I Sottoscrittori non SQL ServerSQL Server non supportano l'esecuzione di agenti nel Sottoscrittore.Non- SQL ServerSQL Server Subscribers do not support running agents at the Subscriber.

  4. Nella pagina Sottoscrittori , fare clic su Aggiungi Sottoscrittore , quindi su Aggiungi Sottoscrittore non SQL Server.On the Subscribers page, click Add Subscriber and then click Add Non-SQL Server Subscriber.

  5. Nella finestra di dialogo Aggiungi Sottoscrittore non SQL Server , selezionare il tipo di Sottoscrittore.In the Add Non-SQL Server Subscriber dialog box, select the type of Subscriber.

  6. Inserire un valore nella casella Nome origine dati:Enter a value in Data source name:

    • Per Oracle, si tratta del nome TNS che è stato configurato.For Oracle, this is the transparent network substrate (TNS) name you configured.

    • Per IBM, può essere qualsiasi nome.For IBM, this can be any name. In genere viene utilizzato per specificare l'indirizzo di rete del Sottoscrittore.It is typical to specify the network address of the Subscriber.

      Il nome origine dati immesso in questo passaggio e le credenziali specificate nel passaggio 9 non vengono convalidati da questa procedura guidata.The data source name entered in this step and the credentials specified in step 9 are not validated by this wizard. Non vengono utilizzati dalla replica fino all'esecuzione dell'agente di distribuzione per la sottoscrizione.They are not used by replication until the Distribution Agent runs for the subscription. Accertarsi che tutti i valori siano stati verificati connettendosi al Sottoscrittore con uno strumento client come sqlplus per Oracle.Ensure that all values have been tested by connecting to the Subscriber using a client tool (such as sqlplus for Oracle). Per ulteriori informazioni, vedere Oracle Subscribers e IBM DB2 Subscribers.For more information, see Oracle Subscribers and IBM DB2 Subscribers.

  7. Fare clic su OK.Click 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 : On the Subscribers page of the wizard, the Subscriber is now displayed in the Subscriber column with a read-only (default destination) in the Subscription Database column:

    • Per Oracle, un server include al massimo un database e pertanto non è necessario specificare il database.For Oracle, a server has at most one database, so it is not necessary to specify the 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.For IBM DB2, the database is specified in the Initial Catalog property of the DB2 connection string, which can be entered in the Additional connection options field described later in this process.

  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 .On the Distribution Agent Security page, click the properties button () next to the Subscriber to access the Distribution Agent Security dialog box.

  9. Nella finestra di dialogo Sicurezza agente di distribuzione :In the Distribution Agent Security dialog box:

    • Nei campi Account processo, Passworde Conferma password , inserire l'account e la password di MicrosoftMicrosoft Windows con cui deve essere eseguito l'agente di distribuzione e stabilire le connessioni locali al server di distribuzione.In the Process account, Password, and Confirm password fields, enter the MicrosoftMicrosoft Windows account and password under which the Distribution Agent should run and make local connections to the Distributor.

      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.The account requires these minimum permissions: member of the db_owner fixed database role in the distribution database; member of the publication access list (PAL); read permissions on the snapshot share; and read permission on the install directory of the OLE DB provider. Per altre informazioni sull'elenco di acceso alla pubblicazione, vedere Proteggere il server di pubblicazione.For more information about the PAL, see Secure the Publisher.

    • 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.Under Connect to the Subscriber, in the Login, Password, and Confirm password fields, enter the login and password that should be used to connect to the Subscriber. Questo nome account di accesso dovrebbe essere già configurato ed avere autorizzazioni sufficienti per la creazione di oggetti nel database di sottoscrizione.This login should already be configured and should have sufficient permissions to create objects in the subscription database.

    • 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).In the Additional connection options field, specify any connection options for the Subscriber in the form of a connection string (Oracle does not require additional options). Le opzioni devono essere separate dal punto e virgola.Each option should be separated by a semi-colon. L'esempio seguente illustra una stringa di connessione DB2 (le interruzioni di riga sono inserite per agevolare la lettura):The following is an example of a DB2 connection string (line breaks are for readability):

      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.Most of the options in the string are specific to the DB2 server you are configuring, but the Process Binary as Character option should always be set to False. È necessario specificare un valore per l'opzione Initial Catalog per identificare il database di sottoscrizione.A value is required for the Initial Catalog option to identify the subscription database.

  10. Nella pagina Pianificazione della sincronizzazione , selezionare una pianificazione per l'agente di distribuzione dal menu Pianificazione agente . In genere è Esecuzione continua.On the Synchronization Schedule page, select a schedule for the Distribution Agent from the Agent Schedule menu (the schedule is typically Run continuously).

  11. Nella pagina Inizializzazione sottoscrizioni , specificare se la sottoscrizione deve essere inizializzata e quando:On the Initialize Subscriptions page, specify whether the subscription should be initialized and, if so, when it should be initialized:

    • Deselezionare Inizializzazione di solo se nel database di sottoscrizione sono stati creati tutti gli oggetti e sono stati aggiunti tutti i dati necessari.Clear Initialize only if you have created all objects and added all required data in the subscription database.

    • 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.Select Immediately from the drop-down list in the Initialize When column to have the Distribution Agent transfer snapshot files to the Subscriber after this wizard is completed. Selezionare Alla prima sincronizzazione per fare in modo che l'agente trasferisca i file alla successiva esecuzione pianificata dell'agente.Select At first synchronization to have the agent transfer the files the next time it is scheduled to run.

  12. Nella pagina Azioni procedura guidata , se si desidera, creare lo script della sottoscrizione.On the Wizard Actions page, optionally script the subscription. Per altre informazioni, vedere Scripting Replication.For more information, see Scripting Replication.

Per mantenere le tabelle nel SottoscrittoreTo retain tables at the Subscriber

  • Per impostazione predefinita, se si attiva una pubblicazione per Sottoscrittori non SQL ServerSQL Server , il valore della proprietà di articolo pre_creation_cmd verrà impostato su 'drop'.By default, enabling a publication for non- SQL ServerSQL Server Subscribers sets the value of the pre_creation_cmd article property to 'drop'. In base a tale impostazione, se una tabella nel Sottoscrittore corrisponde al nome della tabella nell'articolo, tale tabella verrà eliminata dalla replica.This setting specifies that replication should drop a table at the Subscriber if it matches the name of the table in the article. 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.If you have existing tables at the Subscriber that you want to keep, use the sp_changearticle stored procedure for each article; specify a value 'none' for pre_creation_cmd. sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

Per generare uno snapshot per la pubblicazione.To generate a snapshot for the publication

  1. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .Expand the Replication folder, and then expand the Local Publications folder.

  2. Fare clic con il pulsante destro del mouse sulla pubblicazione e quindi scegliere Visualizza stato agente snapshot.Right-click the publication, and then click View Snapshot Agent Status.

  3. Nella finestra di dialogo Visualizza stato agente snapshot - <Pubblicazione> fare clic su Avvia.In the View Snapshot Agent Status - <Publication> dialog box, click Start.

    Al termine della generazione dello snapshot da parte dell'agente, viene visualizzato un messaggio come ""[100%] Generato uno snapshot di 17 articoli."When the Snapshot Agent finishes generating the snapshot, a message is displayed, such as "[100%] A snapshot of 17 article(s) was generated."

Utilizzo di Transact-SQL Using Transact-SQL

È possibile creare sottoscrizioni push a Sottoscrittori SQL ServerSQL Server a livello di programmazione tramite le stored procedure di replica.You can create push subscriptions to non- SQL ServerSQL Server Subscribers programmatically using replication stored procedures.

Importante

Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione.When possible, prompt users to enter security credentials at runtime. Se è necessario archiviare le credenziali in un file script, è fondamentale proteggere il file per evitare accessi non autorizzati.If you must store credentials in a script file, you must secure the file to prevent unauthorized access.

Per creare una sottoscrizione push per una pubblicazione transazionale o snapshot in un Sottoscrittore non SQL ServerTo create a push subscription for a transactional or snapshot publication to a non-SQL Server Subscriber

  1. Installare il provider OLE DB più recente per il Sottoscrittore non SQL ServerSQL Server sia nel server di pubblicazione che nel server di distribuzione.Install the most recent OLE DB provider for the non- SQL ServerSQL Server Subscriber at both the Publisher and Distributor. Per i requisiti di replica relativi a un provider OLE DB, vedere Non-SQL Server Subscribers, Oracle Subscribers, IBM DB2 Subscribers.For the replication requirements for an OLE DB provider, see Non-SQL Server Subscribers, Oracle Subscribers, IBM DB2 Subscribers.

  2. Nel database di pubblicazione del server di pubblicazione eseguire sp_helppublication (Transact-SQL) per verificare che la pubblicazione supporti Sottoscrittori non SQL ServerSQL Server.At the Publisher on the publication database, verify that the publication supports non- SQL ServerSQL Server Subscribers by executing sp_helppublication (Transact-SQL).

    • Se il valore di enabled_for_het_sub è 1, i Sottoscrittori non SQL ServerSQL Server sono supportati.If the value of enabled_for_het_sub is 1, non- SQL ServerSQL Server Subscribers are supported.

    • 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.If the value of enabled_for_het_sub is 0, execute sp_changepublication (Transact-SQL), specifying enabled_for_het_sub for @property and true for @value.

      Nota

      Prima di impostare enabled_for_het_sub su true, è necessario eliminare eventuali sottoscrizioni esistenti nella pubblicazione.Before changing enabled_for_het_sub to true, you must drop any existing subscriptions to the publication. Non è possibile impostare enabled_for_het_sub su true se la pubblicazione supporta anche sottoscrizioni aggiornabili.You cannot set enabled_for_het_sub to true when the publication also supports updating subscriptions. La modifica dell'impostazione enabled_for_het_sub influirà su altre proprietà della pubblicazione.Changing enabled_for_het_sub will affect other publication properties. Per altre informazioni, vedere Non-SQL Server Subscribers.For more information, see Non-SQL Server Subscribers.

  3. Nel database di pubblicazione del server di pubblicazione eseguire sp_addsubscription (Transact-SQL).At the Publisher on the publication database, execute sp_addsubscription (Transact-SQL). Specificare @publication, @subscriber, il valore (destinazione predefinita) per @destination_db, il valore push per @subscription_typee il valore 3 per @subscriber_type (per indicare un provider OLE DB).Specify @publication, @subscriber, a value of (default destination) for @destination_db, a value of push for @subscription_type, and a value of 3 for @subscriber_type (specifies an OLE DB provider).

  4. Nel database di pubblicazione del server di pubblicazione eseguire sp_addpushsubscription_agent (Transact-SQL).At the Publisher on the publication database, execute sp_addpushsubscription_agent (Transact-SQL). Specificare le opzioni seguenti:Specify the following:

    • I parametri @subscribere @publication .The @subscriberand @publication parameters.

    • Il valore (destinazione predefinita) per @subscriber_db,A value of (default destination) for @subscriber_db,

    • Le proprietà dell'origine dati non SQL ServerSQL Server per @subscriber_provider, @subscriber_datasrc, @subscriber_location, @subscriber_provider_stringe @subscriber_catalog.The properties of the non- SQL ServerSQL Server data source for @subscriber_provider, @subscriber_datasrc, @subscriber_location, @subscriber_provider_string, and @subscriber_catalog.

    • I parametri MicrosoftMicrosoft Windows utilizzate per l'esecuzione dell'agente di distribuzione nel server di distribuzione per @job_login e @job_password.The MicrosoftMicrosoft Windows credentials under which the Distribution Agent at the Distributor runs for @job_login and @job_password.

      Nota

      Per le connessioni effettuate con l'autenticazione integrata di Windows vengono utilizzate sempre le credenziali di Windows specificate da @job_login e @job_password.Connections made using Windows Integrated Authentication always use the Windows credentials specified by @job_login and @job_password. L'agente di distribuzione esegue sempre la connessione locale al server di distribuzione utilizzando l'autenticazione integrata di Windows.The Distribution Agent always makes the local connection to the Distributor using Windows Integrated Authentication. Per impostazione predefinita, l'agente si connette al Sottoscrittore utilizzando l'autenticazione integrata di Windows.By default, the agent will connect to the Subscriber using Windows Integrated Authentication.

    • Il valore 0 per @subscriber_security_mode e le informazioni sull'account di accesso del provider OLE DB per @subscriber_login e @subscriber_password.A value of 0 for @subscriber_security_mode and the OLE DB provider login information for @subscriber_login and @subscriber_password.

    • Specificare una pianificazione per il processo dell'agente di distribuzione da eseguire per la sottoscrizione.A schedule for the Distribution Agent job for this subscription. Per altre informazioni, vedere Specify Synchronization Schedules.For more information, see 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.When creating a push subscription at a Publisher with a remote Distributor, the values supplied for all parameters, including job_login and job_password, are sent to the Distributor as plain text. È consigliabile crittografare la connessione tra il server di pubblicazione e il server di distribuzione remoto prima di eseguire questa stored procedure.You should encrypt the connection between the Publisher and its remote Distributor before executing this stored procedure. Per altre informazioni, vedere Abilitare le connessioni crittografate al motore di database (Gestione configurazione SQL Server).For more information, see Enable Encrypted Connections to the Database Engine (SQL Server Configuration Manager).

Vedere ancheSee Also

IBM DB2 Subscribers IBM DB2 Subscribers
Oracle Subscribers Oracle Subscribers
Altri Sottoscrittori non SQL Server Other Non-SQL Server Subscribers
Replication System Stored Procedures Concepts Replication System Stored Procedures Concepts
Replication Security Best PracticesReplication Security Best Practices