Partager via


Fournir un instantané via FTP

Cette rubrique explique comment fournir un instantané via FTP dans SQL Server 2014 à l’aide de SQL Server Management Studio ou de Transact-SQL.

Limitations et restrictions

  • L’Agent d’instantané doit disposer d’autorisations d’écriture pour le répertoire que vous spécifiez, et l’Agent de distribution ou l’Agent de fusion doit disposer d’autorisations de lecture. Si des abonnements par extraction sont utilisés, vous devez spécifier un répertoire partagé en tant que chemin d’accès UNC (Universal Naming Convention), tel que \\ftpserver\home\snapshots. Pour plus d’informations, reportez-vous à Sécuriser le dossier d’instantanés.

Conditions préalables

  • Pour transférer des fichiers d’instantané à l’aide du protocole FTP (File Transfer Protocol), vous devez d’abord configurer un serveur FTP. Pour plus d’informations, consultez la documentation microsoft Internet Information Services (IIS).

Sécurité

Pour améliorer la sécurité, nous vous recommandons d’implémenter un réseau privé virtuel (VPN) lors de l’utilisation de la remise d’instantané FTP sur Internet. Pour plus d’informations, consultez Publier des données sur Internet à l’aide d’un VPN.

Comme meilleure pratique de sécurité, n’autorisez pas les connexions anonymes au serveur FTP. L’Agent d’instantané doit disposer d’autorisations d’écriture pour le répertoire que vous spécifiez, et l’Agent de distribution ou l’Agent de fusion doit disposer d’autorisations de lecture. Si des abonnements par extraction sont utilisés, vous devez spécifier un répertoire partagé en tant que chemin d’accès UNC (Universal Naming Convention), tel que \\ftpserver\home\snapshots. Pour plus d’informations, reportez-vous à Sécuriser le dossier d’instantanés.

Si possible, invitez les utilisateurs à entrer leurs informations d’identification au moment de l’exécution. Si vous stockez des informations d’identification dans un fichier de script, vous devez sécuriser le fichier.

Utilisation de SQL Server Management Studio

Une fois le serveur FTP configuré, spécifiez les informations de répertoire et de sécurité de ce serveur dans la boîte de dialogue Propriétés de <Publication>. Pour plus d’informations sur l’accès à cette boîte de dialogue, consultez Afficher et modifier les propriétés de publication.

Pour spécifier des informations FTP

  1. Dans la boîte de dialogue Propriétés de publication - <Publication> , sélectionnez Autoriser les Abonnés à télécharger des fichiers d’instantanés à l’aide du protocole FTP à partir de l’une des pages suivantes :
    • La page Capture instantanée FTP, destinée aux publications par capture instantanée et transactionnelles, ainsi qu'aux publications de fusion pour les serveurs de publication utilisant des versions antérieures à Microsoft SQL Server 2005.
    • La page FTP Snapshot et Internet, destinée à la fusion des publications à partir de serveurs de publication exécutant SQL Server 2005 ou une version ultérieure.
  2. Spécifiez des valeurs pour le nom du serveur FTP, le numéro de port, le chemin d’accès à partir du dossier racine FTP, de la connexion et du mot de passe.
    Par exemple, si la racine du serveur FTP est \\ftpserver\home et que vous souhaitez que les instantanés soient stockés sur \\ftpserver\home\snapshots, spécifiez \snapshots\ftp pour le chemin d’accès de propriété du dossier racine FTP (la réplication ajoute « ftp » au chemin d’accès du dossier d’instantané lors de la création de fichiers d’instantanés).
  3. Spécifiez que l’Agent d’instantané doit écrire les fichiers d’instantanés dans le répertoire spécifié à l’étape 2. Par exemple, pour que l’Agent d’instantané écrive les fichiers d’instantanés dans \\ftpserver\home\snapshots\ftp, vous devez spécifier le chemin \\ftpserver\home\snapshots dans l’un des deux emplacements suivants :
    • Emplacement d’instantané par défaut du serveur de distribution associé à cette publication.
      Pour plus d’informations sur la spécification de l’emplacement d’instantané par défaut, consultez Spécifier l’emplacement d’instantané par défaut.
    • Un emplacement alternatif du dossier d’instantanés pour cette publication. Un autre emplacement est requis si l’instantané est compressé.
      Entrez le chemin d’accès dans la zone de texte Mettre les fichiers dans le dossier suivant de la page Instantané de la boîte de dialogue Propriétés de publication - <Publication>.
  4. Cliquez sur OK.

Utilisation de Transact-SQL

L’option permettant de rendre les fichiers d’instantané disponibles sur un serveur FTP peut être définie et ces paramètres FTP peuvent être modifiés par programmation à l’aide de procédures stockées de réplication. La procédure utilisée dépend du type de publication. La remise d’instantané FTP est utilisée uniquement avec les abonnements pull.

Pour activer la distribution d’instantanés via FTP pour une publication d’instantané ou transactionnelle

  1. Sur le serveur de publication de la base de données, exécutez sp_addpublication. Spécifiez @publication, pour une valeur de true pour @enabled_for_internet et les valeurs appropriées pour les paramètres suivants :

    • @ftp_address : adresse du serveur FTP utilisé pour remettre l’instantané.
    • (Facultatif) @ftp_port : port utilisé par le serveur FTP.
    • (Facultatif) @ftp_subdirectory : sous-répertoire du répertoire FTP par défaut affecté à une connexion FTP. Par exemple, si la racine du serveur FTP est \\ftpserver\home et que vous souhaitez que les instantanés soient stockés sur \\ftpserver\home\snapshots, spécifiez \snapshots\ftp pour @ftp_subdirectory (la réplication ajoute « ftp » au chemin d’accès du dossier d’instantané lors de la création de fichiers d’instantanés).
    • (Facultatif) @ftp_login - un compte de connexion utilisé lors de la connexion au serveur FTP.
    • (Facultatif) @ftp_password : mot de passe pour la connexion FTP.

    Cela crée une publication qui utilise FTP. Pour plus d’informations, consultez Créer une publication.

Pour activer la remise d’instantané FTP pour une publication de fusion

  1. Dans le serveur de publication de la base de données de publication, exécutez sp_addmergepublication. Spécifiez @publication, une valeur de true pour @enabled_for_internet et des valeurs appropriées pour les paramètres suivants :

    • @ftp_address : adresse du serveur FTP utilisé pour remettre l’instantané.
    • (Facultatif) @ftp_port : port utilisé par le serveur FTP.
    • (Facultatif) @ftp_subdirectory : sous-répertoire du répertoire FTP par défaut affecté à une connexion FTP. Par exemple, si la racine du serveur FTP est \\ftpserver\home et que vous souhaitez que les instantanés soient stockés sur \\ftpserver\home\snapshots, spécifiez \snapshots\ftp pour @ftp_subdirectory (la réplication ajoute « ftp » au chemin d’accès du dossier d’instantané lors de la création de fichiers d’instantanés).
    • (Facultatif) @ftp_login - un compte de connexion utilisé lors de la connexion au serveur FTP.
    • (Facultatif) @ftp_password : mot de passe pour la connexion FTP.

    Cela crée une publication qui utilise FTP. Pour plus d’informations, consultez Créer une publication.

Pour créer un abonnement par récupération à une publication d’instantané ou transactionnelle qui utilise la remise d’instantané via FTP.

  1. Sur l’Abonné sur la base de données d’abonnement, exécutez sp_addpullsubscription. Spécifiez @publisher et @publication.

    • Sur l’Abonné dans la base de données d’abonnement, exécutez sp_addpullsubscription_agent. Spécifiez @publisher, @publisher_db, @publication, les informations d’identification Microsoft Windows sous lesquelles l’Agent de distribution sur l’Abonné s’exécute pour @job_login et @job_password, ainsi que la valeur de true@use_ftp.
  2. Sur le serveur de publication sur la base de données de publication, exécutez sp_addsubscription pour inscrire l’abonnement par extraction. Pour plus d’informations, consultez Créer un abonnement Pull.

Pour créer un abonnement tiré à une publication de fusion qui utilise la livraison d'instantanés via FTP

  1. Au niveau de l’Abonné sur la base de données d’abonnement, exécutez sp_addmergepullsubscription. Spécifiez @publisher et @publication.
  2. Sur l’Abonné sur la base de données d’abonnement, exécutez sp_addmergepullsubscription_agent. Spécifiez @publisher, @publisher_db, @publication, les informations d’identification Windows sous lesquelles l’Agent de distribution sur l’Abonné s’exécute pour @job_login et @job_password, ainsi qu’une valeur de true@use_ftp.
  3. À l'éditeur sur la base de données de publication, exécutez sp_addmergesubscription pour inscrire l'abonnement par extraction. Pour plus d’informations, consultez Créer un abonnement Pull.

Pour modifier un ou plusieurs paramètres de remise d’un instantané FTP pour une publication d’instantané ou transactionnelle.

  1. À l'éditeur dans la base de données de publication, exécutez sp_changepublication. Spécifiez l’une des valeurs suivantes pour @property et une nouvelle valeur de ce paramètre pour @value :

    • ftp_address : adresse du serveur FTP utilisé pour remettre l’instantané.
    • ftp_port - port utilisé par le serveur FTP.
    • ftp_subdirectory - sous-répertoire du répertoire FTP par défaut utilisé pour l’instantané FTP.
    • ftp_login - connexion utilisée pour se connecter au serveur FTP.
    • ftp_password - mot de passe pour la connexion FTP.
  2. (Facultatif) Répétez l’étape 1 pour chaque paramètre FTP modifié.

  3. (Facultatif) Pour désactiver la remise d’instantané FTP, exécutez sp_changepublication sur le serveur de publication sur la base de données de publication. Spécifiez la valeur de enabled_for_internet@property et la valeur de false@value.

Pour modifier les paramètres de remise d’instantané FTP pour une publication de fusion

  1. Dans la base de données de publication du serveur de publication, exécutez sp_changemergepublication. Spécifiez l’une des valeurs suivantes pour @property et une nouvelle valeur de ce paramètre pour @value :

    • ftp_address : adresse du serveur FTP utilisé pour remettre l’instantané.
    • ftp_port - port utilisé par le serveur FTP.
    • ftp_subdirectory - sous-répertoire du répertoire FTP par défaut utilisé pour l’instantané FTP.
    • ftp_login - connexion utilisée pour se connecter au serveur FTP.
    • ftp_password - mot de passe pour la connexion FTP.
  2. (Facultatif) Répétez l’étape 1 pour chaque paramètre FTP modifié.

  3. (Facultatif) Pour désactiver la remise d’instantané FTP, exécutez sp_changemergepublication dans la base de données de publication sur le serveur de l'éditeur. Spécifiez la valeur de enabled_for_internet@property et la valeur de false@value.

Exemples (Transact-SQL)

L’exemple suivant crée une publication de fusion qui permet aux Abonnés d’accéder aux données d’instantané à l’aide du protocole FTP. L’Abonné doit utiliser une connexion VPN sécurisée lors de l’accès au partage FTP. Les variables de script sqlcmd sont utilisées pour fournir des valeurs de connexion et de mot de passe. Pour plus d’informations, consultez Utiliser sqlcmd avec des variables de script.

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

L’exemple suivant crée un abonnement à une publication de fusion, où l’Abonné obtient l’instantané à l’aide du protocole FTP. L’Abonné doit utiliser une connexion VPN sécurisée lors de l’accès au partage FTP. Les variables de script sqlcmd sont utilisées pour fournir des valeurs de connexion et de mot de passe. Pour plus d’informations, consultez Utiliser sqlcmd avec des variables de script.

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

Voir aussi

Concepts liés aux procédures stockées système de réplication
Transférer des instantanés via FTP
Modifier les propriétés de publication et d’article
Initialiser un abonnement avec un instantané