Procedura: Creazione di una sottoscrizione push (programmazione Transact-SQL della replica)
Le sottoscrizioni push possono essere create a livello di programmazione utilizzando stored procedure di replica. Le stored procedure utilizzate dipenderanno dal tipo di pubblicazione a cui appartiene la sottoscrizione.
Nota sulla protezione |
---|
Se possibile, richiedere agli utenti di immettere le credenziali di protezione 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 a una pubblicazione snapshot o transazionale
Nel database di pubblicazione del server di pubblicazione eseguire sp_helppublication per verificare che la pubblicazione supporti le sottoscrizioni push.
Se il valore di allow_push è 1, le sottoscrizioni push sono supportate.
Se il valore di allow_push è 0, eseguire sp_changepublication specificando allow_push per @property e true per @value.
Nel database di pubblicazione del server di pubblicazione eseguire sp_addsubscription. Specificare @publication, @subscriber e @destination_db. Specificare il valore push per @subscription_type. Per informazioni sull'aggiornamento delle sottoscrizioni, vedere Procedura: Creazione di una sottoscrizione aggiornabile di una pubblicazione transazionale (programmazione Transact-SQL della replica).
Nel database di pubblicazione del server di pubblicazione eseguire sp_addpushsubscription_agent. Specificare quanto segue:
I parametri @subscriber, @subscriber_db e @publication.
Le credenziali di Microsoft Windows utilizzate per l'esecuzione dell'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 utilizzate 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.
(Facoltativo) Il valore 0 per @subscriber_security_mode e le informazioni sull'account di accesso di MicrosoftSQL Server per @subscriber_login e @subscriber_password. Specificare questi parametri se è necessario utilizzare l'autenticazione di SQL Server per la connessione al Sottoscrittore.
Una pianificazione per il processo dell'agente di distribuzione per la sottoscrizione. Per ulteriori informazioni, vedere Procedura: Impostazione di pianificazioni della sincronizzazione (programmazione Transact-SQL della replica).
Nota sulla protezione 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 ulteriori informazioni, vedere Crittografia delle connessioni a SQL Server.
Per creare una sottoscrizione push a una pubblicazione di tipo merge
Nel database di pubblicazione del server di pubblicazione eseguire sp_helpmergepublication per verificare che la pubblicazione supporti le sottoscrizioni push.
Se il valore di allow_push è 1, la pubblicazione supporta le sottoscrizioni push.
Se il valore di allow_push non è 1, eseguire sp_changemergepublication specificando allow_push per @property e true per @value.
Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergesubscription specificando i parametri seguenti:
@publication. Nome della pubblicazione.
@subscriber_type. Per una sottoscrizione client specificare local e per una sottoscrizione server specificare global.
@subscription_priority. Per una sottoscrizione server, specificare una priorità per la pubblicazione utilizzando un valore compreso tra 0.00 e 99.99.
Per ulteriori informazioni, vedere Rilevamento e risoluzione avanzati dei conflitti nella replica di tipo merge.
Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergepushsubscription_agent. Specificare quanto segue:
I parametri @subscriber, @subscriber_db e @publication.
Le credenziali di Windows utilizzate per l'esecuzione dell'agente di merge nel server di distribuzione per @job_login e @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. L'agente di merge 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.
(Facoltativo) Il valore 0 per @subscriber_security_mode e le informazioni sull'account di accesso di SQL Server per @subscriber_login e @subscriber_password. Specificare questi parametri se è necessario utilizzare l'autenticazione di SQL Server per la connessione al Sottoscrittore.
(Facoltativo) Il valore 0 per @publisher_security_mode e le informazioni sull'account di accesso di SQL Server per @publisher_login e @publisher_password. Specificare questi valori se è necessario utilizzare l'autenticazione di SQL Server per la connessione al server di pubblicazione.
Una pianificazione per il processo dell'agente di merge per la sottoscrizione. Per ulteriori informazioni, vedere Procedura: Impostazione di pianificazioni della sincronizzazione (programmazione Transact-SQL della replica).
Nota sulla protezione 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 ulteriori informazioni, vedere Crittografia delle connessioni a SQL Server.
Esempio
Nell'esempio seguente viene creata una sottoscrizione push a una pubblicazione transazionale. I valori dell'account di accesso e della password vengono forniti in fase di esecuzione tramite le variabili di scripting sqlcmd.
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
--Add a push subscription to a transactional publication.
USE [AdventureWorks]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push';
--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
Nell'esempio seguente viene creata una sottoscrizione push a una pubblicazione di tipo merge. I valori dell'account di accesso e della password vengono forniti in fase di esecuzione tramite le variabili di scripting sqlcmd.
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@hostname = @hostname;
--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO