Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo argomento descrive come distribuire uno snapshot tramite FTP in SQL Server 2014 usando SQL Server Management Studio o Transact-SQL.
Limitazioni e restrizioni
- L'agente snapshot deve disporre delle autorizzazioni di scrittura per la directory specificata e l'agente di distribuzione o l'agente di merge deve disporre delle autorizzazioni di lettura. Se vengono usate sottoscrizioni pull, è necessario specificare una directory condivisa come percorso UNC (Universal Naming Convention), ad esempio \\ftpserver\home\snapshots. Per altre informazioni, vedere Proteggere la cartella snapshot.
Prerequisiti
- Per trasferire file di snapshot tramite FTP (File Transfer Protocol), è prima necessario configurare un server FTP. Per altre informazioni, vedere la documentazione di Microsoft Internet Information Services (IIS).
Sicurezza
Per migliorare la sicurezza, è consigliabile implementare una rete privata virtuale (VPN) quando si usa il recapito di snapshot FTP su Internet. Per altre informazioni, vedere Pubblicare dati su Internet tramite VPN.
Come procedura consigliata per la sicurezza, non consentire accessi anonimi al server FTP. L'agente snapshot deve disporre delle autorizzazioni di scrittura per la directory specificata e l'agente di distribuzione o l'agente di merge deve disporre delle autorizzazioni di lettura. Se vengono usate sottoscrizioni pull, è necessario specificare una directory condivisa come percorso UNC (Universal Naming Convention), ad esempio \\ftpserver\home\snapshots. Per altre informazioni, vedere Proteggere la cartella snapshot.
Quando possibile, richiedere agli utenti di immettere le credenziali in fase di esecuzione. Se si archiviano le credenziali in un file di script, è necessario proteggere il file.
Uso di SQL Server Management Studio
Dopo aver configurato il server FTP, specificare le informazioni sui directory e sulla sicurezza per questo server nella finestra di dialogo chiamata Proprietà di pubblicazione <pubblicazione>. Per altre informazioni sull'accesso a questa finestra di dialogo, vedere Visualizzare e modificare le proprietà della pubblicazione.
Per specificare le informazioni FTP
- Nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione> selezionare Consenti ai Sottoscrittori di scaricare i file di snapshot tramite FTP da una delle pagine seguenti:
- Pagina Snapshot FTP per pubblicazioni snapshot, transazionali e merge per editori che eseguono versioni di Microsoft SQL Server precedenti al 2005.
- La pagina Snapshot FTP e Internet per le pubblicazioni di tipo merge dei server di pubblicazione che eseguono SQL Server 2005 o versione successiva.
- Specificare i valori per nome server FTP, Numero porta, Percorso dalla cartella radice FTP, Account di accesso e Password.
Ad esempio, se la radice del server FTP è \\ftpserver\home e si desidera che gli snapshot vengano archiviati in \\ftpserver\home\snapshots, specificare \snapshots\ftp per il percorso della proprietà dalla cartella radice FTP (la replica aggiunge 'ftp' al percorso della cartella snapshot quando crea file snapshot). - Specificare che l'agente snapshot deve scrivere i file di snapshot nella directory specificata nel passaggio 2. Ad esempio, per fare in modo che l'agente snapshot scriva i file di snapshot in \\ftpserver\home\snapshots\ftp, è necessario specificare il percorso \\ftpserver\home\snapshots in una delle due posizioni seguenti:
- Posizione snapshot predefinita per il distributore associato a questa pubblicazione.
Per altre informazioni su come specificare il percorso dello snapshot predefinito, vedere Specificare la posizione snapshot predefinita. - Una posizione alternativa per la cartella snapshot di questa pubblicazione. Se lo snapshot è compresso, è necessario un percorso alternativo.
Immettere il percorso nella casella di testo Inserisci file nella cartella seguente nella pagina Snapshot della finestra di dialogo Proprietà pubblicazione - <Pubblicazione> .
- Posizione snapshot predefinita per il distributore associato a questa pubblicazione.
- Fare clic su OK.
Uso di Transact-SQL
L'opzione per rendere disponibili i file di snapshot in un server FTP può essere impostata e queste impostazioni FTP possono essere modificate a livello di codice tramite stored procedure di replica. La routine utilizzata dipende dal tipo di pubblicazione. Il recapito di snapshot FTP viene usato solo con le sottoscrizioni pull.
Per abilitare la consegna FTP dei snapshot per una pubblicazione di tipo snapshot o transazionale
Sul server di pubblicazione, nel database di pubblicazione eseguire il comando sp_addpublication. Specificare @publication, il valore per
true@enabled_for_internet e i valori appropriati per i parametri seguenti:- @ftp_address : l'indirizzo del server FTP usato per recapitare lo snapshot.
- (Facoltativo) @ftp_port : porta usata dal server FTP.
- (Facoltativo) @ftp_subdirectory : sottodirectory della directory FTP predefinita assegnata a un account di accesso FTP. Ad esempio, se la radice del server FTP è \\ftpserver\home e si desidera archiviare gli snapshot in \\ftpserver\home\snapshots, specificare \snapshots\ftp per @ftp_subdirectory (la replica aggiunge 'ftp' al percorso della cartella snapshot quando crea file snapshot).
- (Facoltativo) @ftp_login : un account di accesso usato per la connessione al server FTP.
- (Facoltativo) @ftp_password : la password per l'account di accesso FTP.
Verrà creata una pubblicazione che utilizza FTP. Per altre informazioni, vedere Creare una pubblicazione.
Per abilitare il recapito di snapshot FTP per una pubblicazione di tipo merge
Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergepublication. Specificare @publication, il valore per
true@enabled_for_internet e i valori appropriati per i parametri seguenti:- @ftp_address : l'indirizzo del server FTP usato per recapitare lo snapshot.
- (Facoltativo) @ftp_port : porta usata dal server FTP.
- (Facoltativo) @ftp_subdirectory : sottodirectory della directory FTP predefinita assegnata a un account di accesso FTP. Ad esempio, se la radice del server FTP è \\ftpserver\home e si desidera archiviare gli snapshot in \\ftpserver\home\snapshots, specificare \snapshots\ftp per @ftp_subdirectory (la replica aggiunge 'ftp' al percorso della cartella snapshot quando crea file snapshot).
- (Facoltativo) @ftp_login : un account di accesso usato per la connessione al server FTP.
- (Facoltativo) @ftp_password : la password per l'account di accesso FTP.
Verrà creata una pubblicazione che utilizza FTP. Per altre informazioni, vedere Creare una pubblicazione.
Per creare una sottoscrizione pull a una pubblicazione snapshot o transazionale che utilizza la consegna snapshot tramite FTP.
Nel database di sottoscrizione del Sottoscrittore eseguire sp_addpullsubscription. Specificare @publisher e @publication.
- Nel database di sottoscrizione del Sottoscrittore eseguire sp_addpullsubscription_agent. Specificare @publisher, @publisher_db, @publication, le credenziali di Microsoft Windows in cui viene eseguito l'agente di distribuzione nel Sottoscrittore per @job_login e @job_password e un valore di
trueper @use_ftp.
- Nel database di sottoscrizione del Sottoscrittore eseguire sp_addpullsubscription_agent. Specificare @publisher, @publisher_db, @publication, le credenziali di Microsoft Windows in cui viene eseguito l'agente di distribuzione nel Sottoscrittore per @job_login e @job_password e un valore di
Nel database di pubblicazione del server di pubblicazione eseguire sp_addsubscription per registrare la sottoscrizione pull. Per altre informazioni, vedere Creare una sottoscrizione pull.
Per creare una sottoscrizione di tipo pull a una pubblicazione di tipo merge che utilizza la consegna degli snapshot tramite FTP
- Nel database di sottoscrizione del Sottoscrittore eseguire sp_addmergepullsubscription. Specificare @publisher e @publication.
- Nel database di sottoscrizione del Sottoscrittore eseguire sp_addmergepullsubscription_agent. Specificare @publisher, @publisher_db, @publication, le credenziali di Windows in cui viene eseguito l'agente di distribuzione nel Sottoscrittore per @job_login e @job_password e un valore di
trueper @use_ftp. - Nel database di pubblicazione eseguire sp_addmergesubscription per registrare la sottoscrizione pull. Per altre informazioni, vedere Creare una sottoscrizione pull.
Per modificare una o più impostazioni di recapito tramite FTP per una pubblicazione transazionale o di snapshot
Nel database di pubblicazione del server di pubblicazione eseguire sp_changepublication. Specificare uno dei valori seguenti per @property e un nuovo valore di questa impostazione per @value:
-
ftp_address: l'indirizzo del server FTP usato per recapitare lo snapshot. -
ftp_port: porta utilizzata dal server FTP. -
ftp_subdirectory– la sottodirectory della directory FTP predefinita utilizzata per lo snapshot FTP. -
ftp_login: account di accesso usato per connettersi al server FTP. -
ftp_password: password per l'account di accesso FTP.
-
(Facoltativo) Ripetere il passaggio 1 per ogni impostazione FTP da modificare.
(Facoltativo) Per disabilitare il recapito dello snapshot FTP, eseguire sp_changepublication sul database di pubblicazione presso il Pubblicatore. Specificare il valore per
enabled_for_internet@property e il valore perfalse@value.
Per modificare le impostazioni di recapito degli snapshot FTP per una pubblicazione di tipo merge
Nel database di pubblicazione sul Publisher, eseguire sp_changemergepublication. Specificare uno dei valori seguenti per @property e un nuovo valore di questa impostazione per @value:
-
ftp_address: l'indirizzo del server FTP usato per recapitare lo snapshot. -
ftp_port: porta utilizzata dal server FTP. -
ftp_subdirectory, la sottodirectory della directory FTP predefinita usata per lo snapshot FTP. -
ftp_login: account di accesso usato per connettersi al server FTP. -
ftp_password: password per l'account di accesso FTP.
-
(Facoltativo) Ripetere il passaggio 1 per ogni impostazione FTP da modificare.
(Facoltativo) Per disabilitare il recapito di snapshot FTP, eseguire sp_changemergepublication sul database di pubblicazione presso il Publisher. Specificare il valore per
enabled_for_internet@property e il valore perfalse@value.
Esempi (Transact-SQL)
Nell'esempio seguente viene creata una pubblicazione di tipo merge che consente ai Sottoscrittori di accedere ai dati dello snapshot tramite FTP. Il Sottoscrittore deve usare una connessione VPN sicura quando si accede alla condivisione FTP. Le variabili di scripting sqlcmd vengono usate per fornire valori di accesso e password. Per altre informazioni, vedere Usare sqlcmd con variabili di scripting.
-- 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".
-- Declarations for adding a merge publication.
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @ftp_server AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
DECLARE @ftp_login AS sysname;
DECLARE @ftp_password AS sysname;
DECLARE @ftp_directory AS sysname;
DECLARE @snapshot_folder AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
SET @publicationDB = N'AdventureWorks';
SET @publication = N'AdvWorksSalesOfferMergeFtp';
SET @ftp_server = $(Server);
SET @login = $(Login);
SET @password = $(Password);
SET @ftp_login = $(FtpLogin);
SET @ftp_password = $(FtpPassword);
SET @ftp_directory = N'\snapshots\ftp';
-- The snapshot folder is the root FTP folder on the server
-- with the \snapshot subdirectory.
SET @snapshot_folder = $(AlternateFolder);
SET @article = N'SpecialOffer';
SET @owner = N'Sales'
-- Enable merge replication on the publication database.
USE master
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname=N'merge publish',
@value = N'true' ;
-- Create a new merge publication, enabling FTP snapshot delivery.
-- Specify the publication compatibility level or it will default to
-- SQL Server 2000.
USE [AdventureWorks]
EXEC sp_addmergepublication
-- Specify the required parameters.
@publication = @publication,
@publication_compatibility_level = N'90RTM',
@enabled_for_internet = N'true',
@snapshot_in_defaultfolder = N'true',
@alt_snapshot_folder = @snapshot_folder,
@ftp_address = @ftp_server,
@ftp_subdirectory = @ftp_directory,
@ftp_login = @ftp_login,
@ftp_password = @ftp_password;
-- Create the snapshot job for the publication, using the defaults.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password;
-- Add an unfiltered article for the Customer table.
EXEC sp_addmergearticle
@publication = @publication,
@article = @article,
@source_object = @article,
@type = N'table',
@source_owner = @owner,
@destination_owner = @owner,
@column_tracking = N'true';
-- Start the snapshot job for the publication.
EXEC sp_startpublication_snapshot
@publication = @publication;
GO
Nell'esempio seguente viene creata una sottoscrizione a una pubblicazione di tipo merge, in cui il Sottoscrittore ottiene lo snapshot tramite FTP. Il Sottoscrittore deve usare una connessione VPN sicura quando si accede alla condivisione FTP. Le variabili di scripting sqlcmd vengono usate per fornire valori di accesso e password. Per altre informazioni, vedere Usare sqlcmd con variabili di scripting.
-- 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".
-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksSalesOfferMergeFtp';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
-- At the Publisher, register the subscription, using the defaults.
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'pull',
@subscriber_type = N'local',
@subscription_priority = 0,
@sync_type = N'Automatic';
GO
-- 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".
-- Execute this batch at the Subscriber.
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publicationDB = N'AdventureWorks';
SET @publication = N'AdvWorksSalesOfferMergeFtp';
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
EXEC sp_addmergepullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB,
@subscriber_type = N'Local',
@subscription_priority = 0,
@sync_type = N'Automatic';
exec sp_addmergepullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@distributor = @publisher,
@distributor_security_mode = 1,
@use_ftp = N'true',
@job_login = @login,
@job_password = @password,
@publisher_security_mode = 1,
@use_web_sync = 0;
GO
Vedere anche
Concetti sulle procedure memorizzate del sistema di replica
Trasferire snapshot tramite FTP
Modificare le proprietà della pubblicazione e dell'articolo
Inizializzare una sottoscrizione con uno snapshot