Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, wie Sie mithilfe von SQL Server Management Studio oder Transact-SQL eine Momentaufnahme über FTP in SQL Server 2014 bereitstellen.
Einschränkungen und Beschränkungen
- Der Snapshot-Agent muss über Schreibberechtigungen für das angegebene Verzeichnis verfügen, und der Verteiler-Agent oder der Zusammenführungs-Agent muss Leseberechtigungen besitzen. Wenn Pull-Abonnements verwendet werden, müssen Sie ein gemeinsames Verzeichnis als UNC-Pfad (Universal Naming Convention) angeben, zum Beispiel \\ftpserver\home\snapshots. Weitere Informationen finden Sie unter Schützen des Momentaufnahmeordners.
Voraussetzungen
- Zum Übertragen von Momentaufnahmedateien mithilfe des File Transfer Protocol (FTP) müssen Sie zuerst einen FTP-Server konfigurieren. Weitere Informationen finden Sie in der Dokumentation zu Microsoft Internet Information Services (IIS).
Sicherheit
Um die Sicherheit zu verbessern, empfehlen wir, ein virtuelles privates Netzwerk (VPN) bei Verwendung der FTP-Snapshot-Übermittlung über das Internet zu implementieren. Weitere Informationen finden Sie unter Publish Data over the Internet Using VPN.
Als bewährte Methode zur Sicherheit lassen Sie anonyme Anmeldungen auf dem FTP-Server nicht zu. Der Snapshot-Agent muss über Schreibberechtigungen für das angegebene Verzeichnis verfügen, und der Verteiler-Agent oder der Zusammenführungs-Agent muss Leseberechtigungen besitzen. Wenn Pullabonnements verwendet werden, müssen Sie ein freigegebenes Verzeichnis als UNC-Pfad (Universal Naming Convention) angeben, z. B. \\ftpserver\home\snapshots. Weitere Informationen finden Sie unter Schützen des Momentaufnahmeordners.
Wenn möglich, fordern Sie Benutzer auf, ihre Anmeldeinformationen zur Laufzeit einzugeben. Wenn Sie Anmeldeinformationen in einer Skriptdatei speichern, müssen Sie die Datei sichern.
Verwendung von SQL Server Management Studio
Geben Sie nach der Konfiguration des FTP-Servers Verzeichnis- und Sicherheitsinformationen für diesen Server im Dialogfeld Publikationseigenschaften <> an. Weitere Informationen zum Zugriff auf dieses Dialogfeld finden Sie unter "Publikationseigenschaften anzeigen und ändern".
So geben Sie FTP-Informationen an
- Wählen Sie im Dialogfeld "Publikationseigenschaften <- Publikation> " die Option " Abonnenten erlauben" aus, Momentaufnahmendateien mithilfe von FTP von einer der folgenden Seiten herunterzuladen:
- Die FTP-Momentaufnahmeseite für Snapshot- und Transaktionspublikationen sowie Zusammenführungspublikationen für Herausgeber, die Versionen vor Microsoft SQL Server 2005 ausführen.
- Die FTP-Momentaufnahme und Internet-Seite, für die Zusammenführung von Publikationen aus Herausgebern, die SQL Server 2005 oder höher verwenden.
- Geben Sie Werte für FTP-Servername, Portnummer, Pfad aus dem FTP-Stammordner, Login und Password an.
Wenn der FTP-Serverstamm z. B. \\ftpserver\home ist und Sie möchten, dass Snapshots unter \\ftpserver\home\snapshots gespeichert werden sollen, geben Sie \snapshots\ftp für den Eigenschaftspfad aus dem FTP-Stammordner an (Replikation fügt 'ftp' an den Snapshotordnerpfad an, wenn Snapshotdateien erstellt werden). - Geben Sie an, dass der Snapshot-Agent die Momentaufnahmedateien in das in Schritt 2 angegebene Verzeichnis schreiben soll. Damit der Snapshot-Agent beispielsweise die Momentaufnahmedateien in \\ftpserver\home\snapshots\ftp schreibt, müssen Sie den Pfad \\ftpserver\home\snapshots an einer von zwei Stellen angeben:
- Der Standardspeicherort für Momentaufnahmen des Distributors, der der Publikation zugeordnet ist.
Weitere Informationen zum Angeben des Standardspeicherorts für Momentaufnahmen finden Sie unter Angeben des Standardspeicherorts für Momentaufnahmen. - Ein alternativer Speicherort des Schnappschussordners für diese Publikation. Wenn die Momentaufnahme komprimiert wird, ist ein alternativer Speicherort erforderlich.
Geben Sie den Pfad in das Textfeld "Dateien in den folgenden Ordner einfügen" auf der Screenshot-Seite des Dialogfelds „Publikationseigenschaften - <Publikation>“ ein.
- Der Standardspeicherort für Momentaufnahmen des Distributors, der der Publikation zugeordnet ist.
- Klicke auf OK.
Verwenden von Transact-SQL
Die Option, Snapshotdateien auf einem FTP-Server verfügbar zu machen, kann festgelegt werden, und diese FTP-Einstellungen können programmgesteuert mithilfe der gespeicherten Replikationsprozeduren geändert werden. Die verwendete Prozedur hängt vom Publikationstyp ab. Die FTP-Snapshot-Übermittlung wird nur bei Pullabonnements verwendet.
So aktivieren Sie die FTP-Momentaufnahmeübermittlung für eine Momentaufnahme oder transaktionsfähige Publikation
Führen Sie beim Publisher in der Publikationsdatenbank sp_addpublication aus. Geben Sie @publication, einen Wert
truefür @enabled_for_internet und geeignete Werte für die folgenden Parameter an:- @ftp_address - die Adresse des FTP-Servers, der zum Bereitstellen der Momentaufnahme verwendet wird.
- (Optional) @ftp_port - der vom FTP-Server verwendete Port.
- (Optional) @ftp_subdirectory - das Unterverzeichnis des FTP-Standardverzeichnisses, das einer FTP-Anmeldung zugewiesen ist. Wenn der FTP-Serverstamm z. B. \\ftpserver\home ist und Sie möchten, dass Snapshots unter \\ftpserver\home\snapshots gespeichert werden sollen, geben Sie \snapshots\ftp für @ftp_subdirectory an (Die Replikation fügt "ftp" an den Pfad des Snapshotordners an, wenn Snapshotdateien erstellt werden).
- (Optional) @ftp_login – ein 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 Publikation erstellt, die FTP verwendet. Weitere Informationen finden Sie unter Erstellen einer Publikation.
So aktivieren Sie die FTP-Momentaufnahmeübermittlung für eine Zusammenführungsveröffentlichung
Führen Sie im Publisher in der Publikationsdatenbank sp_addmergepublication aus. Geben Sie @publication an, sowie einen Wert von
truefür @enabled_for_internet und entsprechende Werte für die folgenden Parameter:- @ftp_address - die Adresse des FTP-Servers, der zum Bereitstellen der Momentaufnahme verwendet wird.
- (Optional) @ftp_port - der vom FTP-Server verwendete Port.
- (Optional) @ftp_subdirectory - das Unterverzeichnis des FTP-Standardverzeichnisses, das einer FTP-Anmeldung zugewiesen ist. Wenn der FTP-Serverstamm z. B. \\ftpserver\home ist und Sie möchten, dass Snapshots unter \\ftpserver\home\snapshots gespeichert werden sollen, geben Sie \snapshots\ftp für @ftp_subdirectory an (Die Replikation fügt "ftp" an den Pfad des Snapshotordners an, wenn Snapshotdateien erstellt werden).
- (Optional) @ftp_login – ein 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 Publikation erstellt, die FTP verwendet. Weitere Informationen finden Sie unter Erstellen einer Publikation.
So erstellen Sie ein Pullabonnement für eine Momentaufnahme oder transaktionsbasierte Publikation, die die FTP-Momentaufnahmeübermittlung verwendet
Führen Sie beim Abonnenten in der Abonnementdatenbank sp_addpullsubscription aus. Geben Sie @publisher und @publication an.
- Führen Sie beim Abonnenten in der Abonnementdatenbank sp_addpullsubscription_agent aus. Geben Sie @publisher, @publisher_db, @publication, die Microsoft Windows-Anmeldeinformationen an, unter denen der Verteiler-Agent beim Abonnenten für @job_login und @job_password ausgeführt wird, und einen Wert für
true@use_ftp.
- Führen Sie beim Abonnenten in der Abonnementdatenbank sp_addpullsubscription_agent aus. Geben Sie @publisher, @publisher_db, @publication, die Microsoft Windows-Anmeldeinformationen an, unter denen der Verteiler-Agent beim Abonnenten für @job_login und @job_password ausgeführt wird, und einen Wert für
Führen Sie bei Publisher in der Publikationsdatenbank sp_addsubscription aus, um das Pullabonnement zu registrieren. Weitere Informationen finden Sie unter Erstellen eines Pullabonnements.
So erstellen Sie ein Pullabonnement für eine Zusammenführungsveröffentlichung, die die FTP-Momentaufnahmeübermittlung verwendet
- Führen Sie beim Abonnenten in der Abonnementdatenbank sp_addmergepullsubscription aus. Geben Sie @publisher und @publication an.
- Führen Sie beim Abonnenten in der Abonnementdatenbank sp_addmergepullsubscription_agent aus. Geben Sie @publisher, @publisher_db, @publication, die Windows-Anmeldeinformationen an, unter denen der Verteiler-Agent des Abonnenten für @job_login und @job_password ausgeführt wird, und einen Wert für
true@use_ftp. - Führen Sie bei Publisher in der Publikationsdatenbank sp_addmergesubscription aus, um das Pullabonnement zu registrieren. Weitere Informationen finden Sie unter Erstellen eines Pullabonnements.
Zum Ändern einer oder mehrerer FTP-Snapshot-Übermittlungseinstellungen für eine Momentaufnahme oder transaktionale Publikation.
Führen Sie im Publisher auf der Publikationsdatenbank sp_changepublication aus. 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 zum Bereitstellen der Momentaufnahme verwendet wird. -
ftp_port- der vom FTP-Server verwendete Port. -
ftp_subdirectory- das Unterverzeichnis des standardmäßigen FTP-Verzeichnisses, das für die FTP-Momentaufnahme verwendet wird. -
ftp_login- eine Anmeldung, die zum Herstellen einer Verbindung mit dem FTP-Server verwendet wird. -
ftp_password- das Kennwort für die FTP-Anmeldung.
-
(Optional) Wiederholen Sie Schritt 1 für jede geänderte FTP-Einstellung.
(Optional) Um die FTP-Momentaufnahmeübermittlung zu deaktivieren, führen Sie sp_changepublication im Publisher in der Publikationsdatenbank aus. Geben Sie einen Wert für
enabled_for_internet@property und einen Wert fürfalse@value an.
So ändern Sie die EINSTELLUNGEN für die FTP-Momentaufnahmeübermittlung für eine Zusammenführungsveröffentlichung
Führen Sie im Publisher in der Publikationsdatenbank sp_changemergepublication aus. 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 zum Bereitstellen der Momentaufnahme verwendet wird. -
ftp_port- der vom FTP-Server verwendete Port. -
ftp_subdirectory- das Unterverzeichnis des standardmäßigen FTP-Verzeichnisses, das für die FTP-Momentaufnahme verwendet wird. -
ftp_login- eine Anmeldung, die zum Herstellen einer Verbindung mit dem FTP-Server verwendet wird. -
ftp_password- das Kennwort für die FTP-Anmeldung.
-
(Optional) Wiederholen Sie Schritt 1 für jede geänderte FTP-Einstellung.
(Optional) Um die FTP-Momentaufnahmeübermittlung zu deaktivieren, führen Sie sp_changemergepublication im Publisher in der Publikationsdatenbank aus. Geben Sie einen Wert für
enabled_for_internet@property und einen Wert fürfalse@value an.
Beispiele (Transact-SQL)
Im folgenden Beispiel wird eine Zusammenführungsveröffentlichung erstellt, mit der Abonnenten mithilfe von FTP auf die Momentaufnahmedaten zugreifen können. Der Abonnent sollte beim Zugriff auf die FTP-Freigabe eine sichere VPN-Verbindung verwenden. Sqlcmd-Skriptingvariablen 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 Zusammenführungsveröffentlichung erstellt, bei dem der Abonnent die Momentaufnahme mithilfe von FTP abruft. Der Abonnent sollte beim Zugriff auf die FTP-Freigabe eine sichere VPN-Verbindung verwenden. Sqlcmd-Skriptingvariablen 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
Siehe auch
Konzepte für gespeicherte Replikationssystem-Prozeduren
Übertragen von Momentaufnahmen über FTP
Ändern von Publikations- und Artikeleigenschaften
Initialisieren eines Abonnements mit einer Momentaufnahme