Recapito di snapshot tramite FTPDeliver a Snapshot Through FTP

In questo argomento viene descritto come recapitare uno snapshot utilizzando l'FTP in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to deliver a snapshot through FTP in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • L'agente snapshot deve disporre delle autorizzazioni di scrittura per la directory specificata, mentre l'agente di distribuzione o l'agente di merge deve disporre delle autorizzazioni di lettura.The Snapshot Agent must have write permissions for the directory you specify, and the Distribution Agent or Merge Agent must have read permissions. Se vengono usate sottoscrizioni pull, è necessario specificare una directory condivisa come percorso UNC (Universal Naming Convention), ad esempio \\serverftp\home\snapshot.If pull subscriptions are used, you must specify a shared directory as a universal naming convention (UNC) path, such as \\ftpserver\home\snapshots. Per altre informazioni, vedere Proteggere la cartella snapshot.For more information, see Secure the Snapshot Folder.

Prerequisiti Prerequisites

  • Prima di trasferire file snapshot tramite il protocollo FTP (File Transfer Protocol), è necessario configurare un server FTP.To transfer snapshot files using File Transfer Protocol (FTP), you must first configure an FTP server. Per ulteriori informazioni, vedere la documentazione di MicrosoftMicrosoft Internet Information Services (IIS).For more information, see the MicrosoftMicrosoft Internet Information Services (IIS) documentation.

Sicurezza Security

Per migliorare la sicurezza, si consiglia di implementare una rete privata virtuale (VPN) quando si utilizza il recapito di snapshot tramite FTP in Internet.To help improve security, we recommend that you implement a virtual private network (VPN) when using FTP snapshot delivery over the Internet. Per altre informazioni, vedere Pubblicare i dati su Internet tramite VPN.For more information, see Publish Data over the Internet Using VPN.

Ai fini della sicurezza è consigliabile non consentire accessi anonimi al server FTP.As a security best practice, do not allow anonymous logins to the FTP server. L'agente snapshot deve disporre delle autorizzazioni di scrittura per la directory specificata, mentre l'agente di distribuzione o l'agente di merge deve disporre delle autorizzazioni di lettura.The Snapshot Agent must have write permissions for the directory you specify, and the Distribution Agent or Merge Agent must have read permissions. Se vengono usate sottoscrizioni pull, è necessario specificare una directory condivisa come percorso UNC (Universal Naming Convention), ad esempio \\serverftp\home\snapshot.If pull subscriptions are used, you must specify a shared directory as a universal naming convention (UNC) path, such as \\ftpserver\home\snapshots. Per altre informazioni, vedere Proteggere la cartella snapshot.For more information, see Secure the Snapshot Folder.

Se possibile, richiedere agli utenti di immettere le credenziali in fase di esecuzione.When possible, prompt users to enter their credentials at runtime. Se si archiviano le credenziali in un file script, è necessario proteggere il file.If you store credentials in a script file, you must secure the file.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Dopo la configurazione del server FTP specificare la directory e le informazioni di sicurezza relative a questo server nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione>.After the FTP server is configured, specify directory and security information for this server in the Publication Properties <Publication> dialog box. Per ulteriori informazioni sull'accesso a questa finestra di dialogo, vedere View and Modify Publication Properties.For more information about accessing this dialog box, see View and Modify Publication Properties.

Per specificare informazioni FTPTo specify FTP information

  1. Nella finestra di dialogo Proprietà pubblicazione - <Publication> selezionare I Sottoscrittori possono scaricare i file di snapshot utilizzando FTP (File Transfer Protocol) da una delle pagine seguenti:In the Publication Properties - <Publication> dialog box, select Allow Subscribers to download snapshot files using FTP from one of the following pages:

    • La pagina Snapshot FTP , per le pubblicazioni di snapshot e transazionali e le pubblicazioni di tipo merge per i server di pubblicazione in cui sono in esecuzione versioni precedenti a MicrosoftMicrosoft SQL Server 2005SQL Server 2005.The FTP Snapshot page, for snapshot and transactional publications, and merge publications for Publishers running versions prior to MicrosoftMicrosoft SQL Server 2005SQL Server 2005.

    • La pagina Snapshot FTP e Internet , per le pubblicazioni di tipo merge provenienti dai server di pubblicazione in cui è in esecuzione SQL Server 2005SQL Server 2005 o una versione successiva.The FTP Snapshot and Internet page, for merge publications from Publishers running SQL Server 2005SQL Server 2005 or later.

  2. Specificare i valori per Nome server FTP, Numero di porta, Percorso dalla cartella radice FTP, Nome account di accessoe Password.Specify values for FTP server name, Port number, Path from the FTP root folder, Login, and Password.

    Ad esempio, se la radice del server FTP è \\serverftp\home e si vogliono archiviare gli snapshot nel percorso \\serverftp\home\snapshot, specificare \snapshot\ftp per la proprietà Percorso dalla cartella radice FTP. La replica aggiunge "ftp" al percorso della cartella snapshot durante la creazione dei file di snapshot.For example, if the FTP server root is \\ftpserver\home and you want snapshots to be stored at \\ftpserver\home\snapshots, specify \snapshots\ftp for the property Path from the FTP root folder (replication appends 'ftp' to the snapshot folder path when it creates snapshot files).

  3. Specificare che tramite l'agente snapshot i file di snapshot devono essere scritti nella directory specificata al passaggio 2.Specify that the Snapshot Agent should write the snapshot files to the directory specified in step 2. Ad esempio, per fare in modo che l'agente snapshot scriva i file di snapshot in \\serverftp\home\snapshot\ftp, è necessario specificare il percorso \\serverftp\home\snapshot in una delle due posizioni indicate di seguito:For example, to have the Snapshot Agent write the snapshot files to \\ftpserver\home\snapshots\ftp, you must specify the path \\ftpserver\home\snapshots in one of two places:

    • Il percorso predefinito dello snapshot per il server di distribuzione associato a questa pubblicazione.The default snapshot location for the Distributor associated with this publication.

      Per altre informazioni sull'impostazione del percorso predefinito degli snapshot, vedere Specificare la posizione predefinita degli snapshot (SQL Server Management Studio).For more information about specifying the default snapshot location, see Specify the Default Snapshot Location (SQL Server Management Studio).

    • Un percorso alternativo per la cartella snapshot per questa pubblicazione.An alternate snapshot folder location for this publication. Se lo snapshot è compresso viene richiesto un percorso alternativo.An alternate location is required if the snapshot is compressed.

      Immettere il percorso nella casella di testo Inserisci i file nella cartella seguente nella pagina Snapshot della finestra di dialogo Proprietà pubblicazione - <Pubblicazione>.Enter the path in the Put files in the following folder textbox on the Snapshot page of the Publication Properties - <Publication> dialog box. Per ulteriori informazioni sui percorsi alternativi delle cartelle snapshot, vedere Alternate Snapshot Folder Locations.For more information about alternate snapshot folder locations, see Alternate Snapshot Folder Locations.

  4. Fare clic su OK.Click OK.

Utilizzo di Transact-SQL Using Transact-SQL

È possibile impostare l'opzione per rendere i file snapshot disponibili in un server FTP e modificare le impostazioni FTP a livello di programmazione utilizzando stored procedure di replica.The option to make snapshot files available on an FTP server can be set and these FTP settings can be modified programmatically using replication stored procedures. La stored procedure utilizzata varia a seconda del tipo di pubblicazione.The procedure used depends on the type of publication. Il recapito di snapshot tramite FTP viene utilizzato solo con le sottoscrizioni pull.FTP snapshot delivery is only used with pull subscriptions.

Per abilitare il recapito di snapshot tramite FTP per una pubblicazione snapshot o transazionaleTo enable FTP snapshot delivery for a snapshot or transactional publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addpublication.At the Publisher on the publication database, execute sp_addpublication. Specificare @publication, il valore true per @enabled_for_internete valori appropriati per i parametri seguenti:Specify @publication, a value of true for @enabled_for_internet, and appropriate values for the following parameters:

    • @ftp_address : indirizzo del server FTP utilizzato per il recapito dello snapshot.@ftp_address - the address of the FTP server used to deliver the snapshot.

    • (Facoltativo) @ftp_port : porta utilizzata dal server FTP.(Optional) @ftp_port - the port used by the FTP server.

    • (Facoltativo) @ftp_subdirectory : la sottodirectory della directory FTP predefinita assegnata a un account di accesso FTP.(Optional) @ftp_subdirectory - the subdirectory of the default FTP directory assigned to an FTP login. Ad esempio, se la radice del server FTP è \\serverftp\home e si vogliono archiviare gli snapshot in \\serverftp\home\snapshot, specificare \snapshots\ftp per @ftp_subdirectory. La replica aggiungerà "ftp" al percorso della cartella snapshot durante la creazione di file di snapshot.For example, if the FTP server root is \\ftpserver\home and you want snapshots to be stored at \\ftpserver\home\snapshots, specify \snapshots\ftp for @ftp_subdirectory (replication appends 'ftp' to the snapshot folder path when it creates snapshot files).

    • (Facoltativo) @ftp_login : account di accesso utilizzato per la connessione al server FTP.(Optional) @ftp_login - a login account used when connecting to the FTP server.

    • (Facoltativo) @ftp_password : password per l'accesso FTP.(Optional) @ftp_password - the password for the FTP login.

      Verrà creata una pubblicazione che utilizza FTP.This creates a publication that uses FTP. Per altre informazioni, vedere Create a Publication.For more information, see Create a Publication.

Per attivare il recapito di snapshot tramite FTP per una pubblicazione di tipo mergeTo enable FTP snapshot delivery for a merge publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergepublication.At the Publisher on the publication database, execute sp_addmergepublication. Specificare @publication, il valore true per @enabled_for_internet e valori appropriati per i parametri seguenti:Specify @publication, a value of true for @enabled_for_internet and appropriate values for the following parameters:

    • @ftp_address : indirizzo del server FTP utilizzato per il recapito dello snapshot.@ftp_address - the address of the FTP server used to deliver the snapshot.

    • (Facoltativo) @ftp_port : porta utilizzata dal server FTP.(Optional) @ftp_port - the port used by the FTP server.

    • (Facoltativo) @ftp_subdirectory : la sottodirectory della directory FTP predefinita assegnata a un account di accesso FTP.(Optional) @ftp_subdirectory - the subdirectory of the default FTP directory assigned to an FTP login. Ad esempio, se la radice del server FTP è \\serverftp\home e si vogliono archiviare gli snapshot in \\serverftp\home\snapshot, specificare \snapshots\ftp per @ftp_subdirectory. La replica aggiungerà "ftp" al percorso della cartella snapshot durante la creazione di file di snapshot.For example, if the FTP server root is \\ftpserver\home and you want snapshots to be stored at \\ftpserver\home\snapshots, specify \snapshots\ftp for @ftp_subdirectory (replication appends 'ftp' to the snapshot folder path when it creates snapshot files).

    • (Facoltativo) @ftp_login : account di accesso utilizzato per la connessione al server FTP.(Optional) @ftp_login - a login account used when connecting to the FTP server.

    • (Facoltativo) @ftp_password : password per l'accesso FTP.(Optional) @ftp_password - the password for the FTP login.

      Verrà creata una pubblicazione che utilizza FTP.This creates a publication that uses FTP. Per altre informazioni, vedere Create a Publication.For more information, see Create a Publication.

Per creare una sottoscrizione pull in una pubblicazione snapshot o transazionale che utilizza il recapito di snapshot tramite FTPTo create a pull subscription to a snapshot or transactional publication that uses FTP snapshot delivery

  1. Nel database di sottoscrizione del Sottoscrittore eseguire sp_addpullsubscription.At the Subscriber on the subscription database, execute sp_addpullsubscription. Specificare @publisher e @publication.Specify @publisher and @publication.

    • Nel database di sottoscrizione del Sottoscrittore eseguire sp_addpullsubscription_agent.At the Subscriber on the subscription database, execute sp_addpullsubscription_agent. Specificare @publisher, @publisher_db, @publication, le credenziali di MicrosoftMicrosoft Windows utilizzate per l'esecuzione dell'agente di distribuzione nel Sottoscrittore per @job_login e @job_passworde il valore true per @use_ftp.Specify @publisher, @publisher_db, @publication, the MicrosoftMicrosoft Windows credentials under which the Distribution Agent at the Subscriber runs for @job_login and @job_password, and a value of true for @use_ftp.
  2. Nel database di pubblicazione del server di pubblicazione eseguire sp_addsubscription per registrare la sottoscrizione pull.At the Publisher on the publication database, execute sp_addsubscription to register the pull subscription. Per altre informazioni, vedere Create a Pull Subscription.For more information, see Create a Pull Subscription.

Per creare una sottoscrizione pull in una pubblicazione di tipo merge che utilizza il recapito di snapshot tramite FTPTo create a pull subscription to a merge publication that uses FTP snapshot delivery

  1. Nel database di sottoscrizione del Sottoscrittore eseguire sp_addmergepullsubscription.At the Subscriber on the subscription database, execute sp_addmergepullsubscription. Specificare @publisher e @publication.Specify @publisher and @publication.

  2. Nel database di sottoscrizione del Sottoscrittore eseguire sp_addmergepullsubscription_agent.At the Subscriber on the subscription database, execute sp_addmergepullsubscription_agent. Specificare @publisher, @publisher_db, @publication, le credenziali di Windows utilizzate per l'esecuzione dell'agente di distribuzione nel Sottoscrittore per @job_login e @job_passworde il valore true per @use_ftp.Specify @publisher, @publisher_db, @publication, the Windows credentials under which the Distribution Agent at the Subscriber runs for @job_login and @job_password, and a value of true for @use_ftp.

  3. Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergesubscription per registrare la sottoscrizione pull.At the Publisher on the publication database, execute sp_addmergesubscription to register the pull subscription. Per altre informazioni, vedere Create a Pull Subscription.For more information, see Create a Pull Subscription.

Per modificare una o più impostazioni del recapito di snapshot tramite FTP per una pubblicazione snapshot o transazionaleTo change one or more FTP snapshot delivery settings for a snapshot or transactional publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_changepublication.At the Publisher on the publication database, execute sp_changepublication. Specificare uno dei valori seguenti per @property e un nuovo valore di questa impostazione per @value:Specify one of the following values for @property and a new value of this setting for @value:

    • ftp_address : indirizzo del server FTP utilizzato per il recapito dello snapshot.ftp_address - the address of the FTP server used to deliver the snapshot.

    • ftp_port : porta utilizzata dal server FTP.ftp_port - the port used by the FTP server.

    • ftp_subdirectory : sottodirectory della directory FTP predefinita utilizzata per lo snapshot tramite FTP.ftp_subdirectory - the subdirectory of the default FTP directory used for the FTP snapshot.

    • ftp_login : account di accesso utilizzato per la connessione al server FTP.ftp_login - a login used to connect to the FTP server.

    • ftp_password : password per l'account di accesso FTP.ftp_password - the password for the FTP login.

  2. (Facoltativo) Ripetere il passaggio 1 per ogni impostazione FTP da modificare.(Optional) Repeat step 1 for each FTP setting being changed.

  3. (Facoltativo) Per disabilitare il recapito di snapshot tramite FTP, eseguire sp_changepublication nel database di pubblicazione del server di pubblicazione.(Optional) To disable FTP snapshot delivery, execute sp_changepublication at the Publisher on the publication database. Specificare il valore enabled_for_internet per @property e il valore false per @value.Specify a value of enabled_for_internet for @property and a value of false for @value.

Per modificare le impostazioni del recapito di snapshot tramite FTP per una pubblicazione di tipo mergeTo change FTP snapshot delivery settings for a merge publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_changemergepublication.At the Publisher on the publication database, execute sp_changemergepublication. Specificare uno dei valori seguenti per @property e un nuovo valore di questa impostazione per @value:Specify one of the following values for @property and a new value of this setting for @value:

    • ftp_address : indirizzo del server FTP utilizzato per il recapito dello snapshot.ftp_address - the address of the FTP server used to deliver the snapshot.

    • ftp_port : porta utilizzata dal server FTP.ftp_port - the port used by the FTP server.

    • ftp_subdirectory : sottodirectory della directory FTP predefinita utilizzata per lo snapshot tramite FTP.ftp_subdirectory - the subdirectory of the default FTP directory used for the FTP snapshot.

    • ftp_login : account di accesso utilizzato per la connessione al server FTP.ftp_login - a login used to connect to the FTP server.

    • ftp_password : password per l'account di accesso FTP.ftp_password - the password for the FTP login.

  2. (Facoltativo) Ripetere il passaggio 1 per ogni impostazione FTP da modificare.(Optional) Repeat step 1 for each FTP setting being changed.

  3. (Facoltativo) Per disabilitare il recapito di snapshot tramite FTP, eseguire sp_changemergepublication nel database di pubblicazione del server di pubblicazione.(Optional) To disable FTP snapshot delivery, execute sp_changemergepublication at the Publisher on the publication database. Specificare il valore enabled_for_internet per @property e il valore false per @value.Specify a value of enabled_for_internet for @property and a value of false for @value.

Esempi (Transact-SQL) Examples (Transact-SQL)

Nell'esempio seguente viene creata una pubblicazione di tipo merge che consente ai Sottoscrittori di accedere ai dati dello snapshot tramite FTP.The following example creates a merge publication that allows Subscribers to access the snapshot data using FTP. Il Sottoscrittore deve utilizzare una connessione VPN sicura per l'accesso alla condivisione FTP.The Subscriber should use a secure VPN connection when accessing the FTP share. I valori dell'account di accesso e della password vengono forniti tramite le variabili di scriptingsqlcmd .sqlcmd scripting variables are used to supply login and password values. Per altre informazioni, vedere Usare sqlcmd con variabili di scripting.For more information, see Use sqlcmd with Scripting Variables.

-- 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 in una pubblicazione di tipo merge in cui il Sottoscrittore ottiene lo snapshot tramite FTP.The following example creates a subscription to a merge publication, where the Subscriber obtains the snapshot using FTP. Il Sottoscrittore deve utilizzare una connessione VPN sicura per l'accesso alla condivisione FTP.The Subscriber should use a secure VPN connection when accessing the FTP share. I valori dell'account di accesso e della password vengono forniti tramite le variabili di scriptingsqlcmd .sqlcmd scripting variables are used to supply login and password values. Per altre informazioni, vedere Usare sqlcmd con variabili di scripting.For more information, see Use sqlcmd with Scripting Variables.

-- 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 ancheSee Also

Concetti di base relativi alle stored procedure del sistema di replica Replication System Stored Procedures Concepts
Trasferire snapshot tramite FTP Transfer Snapshots Through FTP
Modificare le proprietà di pubblicazioni e articoli Change Publication and Article Properties
Inizializzare una sottoscrizione con uno snapshot Initialize a Subscription with a Snapshot