Share via


Übermitteln einer Momentaufnahme über FTP

In diesem Thema wird beschrieben, wie Sie eine Momentaufnahme über FTP in SQL Server 2014 mithilfe von SQL Server Management Studio oder Transact-SQL bereitstellen.

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

Nachdem der FTP-Server konfiguriert wurde, geben Sie im Dialogfeld Veröffentlichungseigenschaften <> die 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. Wählen Sie im Dialogfeld Veröffentlichungseigenschaften – <Veröffentlichung>die Option Abonnenten erlauben, Momentaufnahme Dateien mithilfe von FTP von einer der folgenden Seiten herunterzuladen:
    • Die FTP-Momentaufnahmeseite für Momentaufnahme- und Transaktionsveröffentlichungen und Mergeveröffentlichungen für Verleger, die Versionen vor Microsoft SQL Server 2005 ausführen.
    • Die FTP-Momentaufnahme- und Internetseite für Mergeveröffentlichungen von Verlegern, die SQL Server 2005 oder höher ausführen.
  2. Geben Sie Werte für FTP-Servername, Portnummer, Pfad des FTP-Stammordners, Anmeldenameund Kennwortan.
    Wenn der FTP-Serverstamm beispielsweise \\ftpserver\home lautet und Momentaufnahmen unter \\ftpserver\home\snapshots gespeichert werden sollen, geben Sie \snapshots\ftp für die Eigenschaft Path aus dem FTP-Stammordner an (die Replikation fügt "ftp" an den Momentaufnahme Ordnerpfad an, wenn Momentaufnahme Dateien erstellt werden).
  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.
      Weitere Informationen zum Angeben des Standardspeicherorts Momentaufnahme finden Sie unter Angeben des Standardspeicherorts für Momentaufnahmen.
    • Einem alternativen Speicherort für den Momentaufnahmeordner für diese Veröffentlichung. Ein alternativer Speicherort ist erforderlich, wenn die Momentaufnahme komprimiert wird.
      Geben Sie auf der Seite Momentaufnahme des Dialogfelds Veröffentlichungseigenschaften – <Veröffentlichung> den Pfad in das Textfeld Dateien in den folgenden Ordner einfügen ein.
  4. Klicken Sie auf OK.

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, den Wert true für @enabled_for_internet und geeignete 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 der FTP-Serverstamm z. B. \\ftpserver\home lautet und Momentaufnahmen unter \\ftpserver\home\snapshots gespeichert werden sollen, geben Sie \snapshots\ftp für @ftp_subdirectory an (bei der Replikation wird "ftp" an den Momentaufnahme Ordnerpfad angefügt, wenn Momentaufnahme Dateien erstellt werden).
    • (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, den Wert für true@enabled_for_internet und geeignete 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 der FTP-Serverstamm z. B. \\ftpserver\home lautet und Momentaufnahmen unter \\ftpserver\home\snapshots gespeichert werden sollen, geben Sie \snapshots\ftp für @ftp_subdirectory an (bei der Replikation wird "ftp" an den Momentaufnahme Ordnerpfad angefügt, wenn Momentaufnahme Dateien erstellt werden).
    • (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 an, unter denen die Verteilungs-Agent auf dem Abonnenten für @job_login und @job_password ausgeführt wird, sowie den Wert true für @use_ftp.
  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, @publication, die Windows-Anmeldeinformationen an, unter denen die Verteilungs-Agent auf dem Abonnenten für @job_login und @job_password ausgeführt wird, sowie den Wert true für @use_ftp.
  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 für diese Einstellung für @valuean:

    • 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 den Wert enabled_for_internet für @property und den Wert false 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 für diese Einstellung für @valuean:

    • 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 den Wert enabled_for_internet für @property und den Wert false 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

Weitere Informationen

Replication System Stored Procedures Concepts
Übertragen von Momentaufnahmen über FTP
Ändern von Veröffentlichungs- und Artikeleigenschaften
Initialisieren eines Abonnements mit einer Momentaufnahme