Übermitteln einer Momentaufnahme über FTP

Gilt für: SQL Server

In diesem Artikel wird beschrieben, wie eine Momentaufnahme in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL über FTP übermittelt wird.

Standardmäßig werden Momentaufnahmen in Ordnern gespeichert, die als im UNC-Format (Universal Naming Convention) angegebene Dateifreigaben definiert sind. Bei der Replikation haben Sie ebenfalls die Möglichkeit, FTP-Freigaben (FTP, File Transfer Protocol) anstelle der UNC-Freigaben anzugeben. Dazu müssen Sie einen FTP-Server und anschließend eine Veröffentlichung sowie mindestens ein Abonnement über FTP konfigurieren. Informationen dazu, wie ein FTP-Server konfiguriert wird, finden Sie in der Internetinformationsdienste (IIS)-Dokumentation. Wenn Sie FTP-Informationen für eine Veröffentlichung angeben, verwenden die Abonnements dieser Veröffentlichung standardmäßig FTP. FTP wird nur zur Websynchronisierung verwendet, wenn der Computer, auf dem IIS (Internet Information Services, Internetinformationsdienste) ausgeführt wird, vom Verteiler durch eine Firewall getrennt ist. In diesem Fall kann die Momentaufnahme über FTP vom Verteiler an den Computer, auf dem IIS ausgeführt wird, gesendet werden. (Zur Übertragung der Momentaufnahme an den Abonnenten wird immer HTTPS verwendet.)

Wichtig

Es wird empfohlen, vorzugsweise die Microsoft Windows-Authentifizierung und eine UNC-Freigabe statt einer FTP-Freigabe zu verwenden, da FTP-Kennwörter gespeichert werden müssen, und das Kennwort vom Abonnenten oder von dem Computer, auf dem IIS bei der Websynchronisierung ausgeführt wird, als unverschlüsselter Text an den FTP-Server gesendet wird. Außerdem ist es bei der Übertragung über FTP nicht möglich, sicherzustellen, dass ein Abonnent einer gefilterten Mergeveröffentlichung ausschließlich auf die Momentaufnahmen seiner Datenpartition zugreifen kann, da ein einziges Konto den Zugriff auf die gesamte Momentaufnahme-Freigabe kontrolliert.

Einschränkungen

  • Der Momentaufnahme-Agent muss Schreibberechtigungen für das angegebene Verzeichnis und der Verteilungs-Agent oder Merge-Agent muss Leseberechtigungen besitzen. Bei Verwendung von Pullabonnements müssen Sie ein freigegebenes Verzeichnis als UNC-Pfad angeben, wie z. B. \\ftpserver\home\snapshots. Weitere Informationen finden Sie unter Schützen des Momentaufnahmeordners.

Voraussetzungen

  • Zum Übertragen von Momentaufnahmedateien über FTP (File Transfer Protocol) müssen Sie zuerst einen FTP-Server konfigurieren. Weitere Informationen finden Sie in der Dokumentation zu den Microsoft-Internetinformationsdiensten (IIS).

Sicherheit

Implementieren Sie ein virtuelles privates Netzwerk (VPN), wenn Sie FTP-Momentaufnahmeübermittlung über das Internet verwenden, um die Sicherheit zu verbessern. Weitere Informationen finden Sie unter Veröffentlichen von Daten über das Internet mithilfe von VPN.

Lassen Sie als bewährte Sicherheitsmethode keine anonymen Anmeldungen am FTP-Server zu. Der Momentaufnahme-Agent muss Schreibberechtigungen für das angegebene Verzeichnis und der Verteilungs-Agent oder Merge-Agent muss Leseberechtigungen besitzen. Bei Verwendung von Pullabonnements müssen Sie ein freigegebenes Verzeichnis als UNC-Pfad angeben, wie z. B. \\ftpserver\home\snapshots. Weitere Informationen finden Sie unter Schützen des Momentaufnahmeordners.

Die Benutzer sollten nach Möglichkeit während der Laufzeit zur Eingabe von Anmeldeinformationen aufgefordert werden. Wenn Anmeldeinformationen in einer Skriptdatei gespeichert werden, müssen Sie sicherstellen, dass die Datei geschützt ist.

Verwendung von SQL Server Management Studio

Geben Sie nach dem Konfigurieren des FTP-Servers im Dialogfeld Veröffentlichungseigenschaften <Veröffentlichung> ein Verzeichnis und Sicherheitsinformationen für diesen Server an. Weitere Informationen zum Zugreifen auf dieses Dialogfeld finden Sie unter View and Modify Publication Properties.

So geben Sie FTP-Informationen an

  1. Aktivieren Sie im Dialogfeld Veröffentlichungseigenschaften – <Veröffentlichung> die Option Abonnenten das Herunterladen von Momentaufnahmedateien über FTP (File Transfer Protocol) ermöglichen auf einer der folgenden Seiten:

    • Seite FTP-Momentaufnahme für Momentaufnahmen- und Transaktionsveröffentlichungen sowie Mergeveröffentlichungen für Verleger, auf denen niedrigere Versionen als Microsoft SQL Server 2005 (9.x) ausgeführt werden.

    • Seite FTP-Momentaufnahme und Internet für Mergeveröffentlichungen von Verlegern, auf denen SQL Server 2005 (9.x) oder höher ausgeführt wird.

  2. Geben Sie Werte für FTP-Servername, Portnummer, Pfad des FTP-Stammordners, Anmeldenameund Kennwortan.

    Wenn beispielsweise der FTP-Stammordner \\ftpserver\home lautet und Momentaufnahmen in \\ftpserver\home\snapshots gespeichert werden sollen, geben Sie \snapshots\ftp für die Eigenschaft Pfad des FTP-Stammordners an (von der Replikation wird beim Erstellen der Momentaufnahmedateien „ftp“ an den Pfad des Momentaufnahmeordners angehängt).

  3. Geben Sie an, dass der Momentaufnahme-Agent die Momentaufnahmedateien in das in Schritt 2 angegebene Verzeichnis schreiben soll. Wenn der Momentaufnahme-Agent beispielsweise die Momentaufnahmedateien in das Verzeichnis \\ftpserver\home\snapshots\ftp schreiben soll, müssen Sie den Pfad \\ftpserver\home\snapshots an einer von zwei Stellen angeben:

    • Dem Standardspeicherort für Momentaufnahmen für den Verteiler, dem diese Veröffentlichung zugeordnet ist.
    • Einem alternativen Speicherort für den Momentaufnahmeordner für diese Veröffentlichung. Ein alternativer Speicherort ist erforderlich, wenn die Momentaufnahme komprimiert wird.

Weitere Informationen zum Ändern der Eigenschaften für den Momentaufnahmeordner finden Sie unter Momentaufnahmeoptionen.

  1. Wählen Sie OK aus.

Verwenden von Transact-SQL

Die Option, Momentaufnahmedateien auf einem FTP-Server verfügbar zu machen, und die entsprechenden FTP-Einstellungen können mithilfe gespeicherter Replikationsprozeduren programmgesteuert festgelegt und geändert werden. Welche Prozedur verwendet wird, hängt vom Typ der Veröffentlichung ab. FTP-Momentaufnahmeübermittlung wird nur bei Pullabonnements verwendet.

So aktivieren Sie die FTP-Momentaufnahmeübermittlung für eine Momentaufnahme- oder Transaktionsveröffentlichung

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addpublication. Geben Sie @publication, einen TRUE-Wert für @enabled_for_internet und entsprechende Werte für die folgenden Parameter an:

    • @ftp_address – die Adresse des FTP-Servers, der für die Übermittlung der Momentaufnahme verwendet wird.

    • (Optional) @ftp_port: der vom FTP-Server verwendete Port.

    • (Optional) @ftp_subdirectory: das Unterverzeichnis des einer FTP-Anmeldung zugewiesenen Standard-FTP-Verzeichnisses. Wenn beispielsweise der FTP-Stammordner \\ftpserver\home lautet und Momentaufnahmen in \\ftpserver\home\snapshots gespeichert werden sollen, geben Sie \snapshots\ftp für @ftp_subdirectory an (von der Replikation wird beim Erstellen der Momentaufnahmedateien „ftp“ an den Pfad des Momentaufnahmeordners angehängt).

    • (Optional) @ftp_login: das Anmeldekonto, das beim Herstellen einer Verbindung mit dem FTP-Server verwendet wird.

    • (Optional) @ftp_password: das Kennwort für die FTP-Anmeldung.

    Dadurch wird eine Veröffentlichung erstellt, die FTP verwendet. Weitere Informationen finden Sie unter Create a Publication.

So aktivieren Sie die FTP-Momentaufnahmeübermittlung für eine Mergeveröffentlichung

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergepublicationaus. Geben Sie @publication, einen TRUE-Wert für @enabled_for_internet und entsprechende Werte für die folgenden Parameter an:

    • @ftp_address – die Adresse des FTP-Servers, der für die Übermittlung der Momentaufnahme verwendet wird.

    • (Optional) @ftp_port: der vom FTP-Server verwendete Port.

    • (Optional) @ftp_subdirectory: das Unterverzeichnis des einer FTP-Anmeldung zugewiesenen Standard-FTP-Verzeichnisses. Wenn beispielsweise der FTP-Stammordner \\ftpserver\home lautet und Momentaufnahmen in \\ftpserver\home\snapshots gespeichert werden sollen, geben Sie \snapshots\ftp für @ftp_subdirectory an (von der Replikation wird beim Erstellen der Momentaufnahmedateien „ftp“ an den Pfad des Momentaufnahmeordners angehängt).

    • (Optional) @ftp_login: das Anmeldekonto, das beim Herstellen einer Verbindung mit dem FTP-Server verwendet wird.

    • (Optional) @ftp_password: das Kennwort für die FTP-Anmeldung.

    Dadurch wird eine Veröffentlichung erstellt, die FTP verwendet. Weitere Informationen finden Sie unter Create a Publication.

So erstellen Sie ein Pullabonnement für eine Momentaufnahme- oder Transaktionsveröffentlichung, die FTP-Snapshotübermittlung verwendet

  1. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_addpullsubscriptionaus. Geben Sie @publisher und @publication an.

    • Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_addpullsubscription_agentaus. Geben Sie @publisher, @publisher_db, @publication, die Microsoft Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent auf dem Abonnenten ausgeführt wird, für @job_login und @job_password sowie den Wert true für @use_ftp an.
  2. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addsubscription aus, um das Pullabonnement zu registrieren. Weitere Informationen finden Sie unter Create a Pull Subscription.

So erstellen Sie ein Pullabonnement für eine Mergeveröffentlichung, die FTP-Momentaufnahmeübermittlung verwendet

  1. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_addmergepullsubscriptionaus. Geben Sie @publisher und @publication an.

  2. Führen Sie auf dem Abonnenten für die Abonnementdatenbank sp_addmergepullsubscription_agentaus. Geben Sie @publisher, @publisher_db und @publication, die Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent auf dem Abonnenten für @job_login und @job_password ausgeführt wird, sowie einen true-Wert für @use_ftp an.

  3. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergesubscription aus, um das Pullabonnement zu registrieren. Weitere Informationen finden Sie unter Create a Pull Subscription.

So ändern Sie eine oder mehrere Einstellungen der FTP-Momentaufnahmeübermittlung für eine Momentaufnahme- oder Transaktionsveröffentlichung

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changepublicationaus. Geben Sie einen der folgenden Werte für @property und einen neuen Wert dieser Einstellung für @value an:

    • ftp_address : die Adresse des FTP-Servers, der für die Übermittlung der Momentaufnahme verwendet wird.

    • ftp_port – der vom FTP-Server verwendete Port.

    • ftp_subdirectory – das Unterverzeichnis des einer FTP-Anmeldung zugewiesenen Standard-FTP-Verzeichnisses.

    • ftp_login – der Anmeldenamen, der zum Herstellen einer Verbindung mit dem FTP-Server verwendet wird.

    • ftp_password – das Kennwort für die FTP-Anmeldung.

  2. (Optional) Wiederholen Sie Schritt 1 für jede zu ändernde FTP-Einstellung.

  3. (Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changepublication aus, um die FTP-Momentaufnahmeübermittlung zu deaktivieren. Geben Sie einen enabled_for_internet-Wert für @property und einen false-Wert für @value an.

So ändern Sie die Einstellungen der FTP-Momentaufnahmeübermittlung für eine Mergeveröffentlichung

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changemergepublicationaus. Geben Sie einen der folgenden Werte für @property und einen neuen Wert dieser Einstellung für @value an:

    • ftp_address – die Adresse des FTP-Servers, der für die Übermittlung der Momentaufnahme verwendet wird.

    • ftp_port – der vom FTP-Server verwendete Port.

    • ftp_subdirectory – das Unterverzeichnis des einer FTP-Anmeldung zugewiesenen Standard-FTP-Verzeichnisses.

    • ftp_login – der Anmeldenamen, der zum Herstellen einer Verbindung mit dem FTP-Server verwendet wird.

    • ftp_password – das Kennwort für die FTP-Anmeldung.

  2. (Optional) Wiederholen Sie Schritt 1 für jede zu ändernde FTP-Einstellung.

  3. (Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changemergepublication aus, um die FTP-Momentaufnahmeübermittlung zu deaktivieren. Geben Sie einen enabled_for_internet-Wert für @property und einen false-Wert für @value an.

Beispiele (Transact-SQL)

Im folgenden Beispiel wird eine Mergeveröffentlichung erstellt, die Abonnenten ermöglicht, über FTP auf die Momentaufnahmedaten zuzugreifen. Beim Zugreifen auf die FTP-Freigabe sollte der Abonnent eine sichere VPN-Verbindung verwenden. sqlcmd -Skriptvariablen werden verwendet, um Anmelde- und Kennwortwerte anzugeben. Weitere Informationen finden Sie unter Verwenden von sqlcmd mit Skriptvariablen.

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

Im folgenden Beispiel wird ein Abonnement für eine Mergeveröffentlichung erstellt, bei dem der Abonnent die Momentaufnahme über FTP abruft. Beim Zugreifen auf die FTP-Freigabe sollte der Abonnent eine sichere VPN-Verbindung verwenden. sqlcmd -Skriptvariablen werden verwendet, um Anmelde- und Kennwortwerte anzugeben. Weitere Informationen finden Sie unter Verwenden von sqlcmd mit Skriptvariablen.

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