Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Ten temat opisuje, jak dostarczyć migawkę przez FTP w SQL Server, korzystając z SQL Server Management Studio lub Transact-SQL.
Domyślnie snapshoty są przechowywane w folderach zdefiniowanych jako udostępnione według Universal Naming Convention (UNC). Replikacja pozwala także wskazać udział FTP zamiast udziału UNC. Aby korzystać z FTP, musisz skonfigurować serwer FTP, a następnie skonfigurować publikację i jedną lub więcej subskrypcji do korzystania z FTP. Aby uzyskać informacje o konfiguracji serwera FTP, zobacz dokumentację Internet Information Services (IIS). Jeśli określisz informacje FTP dla publikacji, subskrypcje tej publikacji domyślnie korzystają z FTP. FTP jest używane z synchronizacją sieci tylko wtedy, gdy komputer działający na IIS jest oddzielony od Dystrybutora zaporą sieciową. W takim przypadku FTP może być użyte do przeniesienia snapshotu z dystrybutora i komputera działającego na IIS. (Migawka jest zawsze przekazywana do Subskrybenta za pomocą HTTPS.)
Ważna
Zalecamy korzystanie z uwierzytelniania Microsoft Windows i udostępnienia UNC zamiast udostępniania FTP, ponieważ hasła FTP muszą być przechowywane, a hasło jest wysyłane z abonenta lub komputera uruchamiającego IIS, gdy korzysta z synchronizacji internetowej z serwerem FTP w formie zwykłego tekstu. Dodatkowo, ponieważ dostęp do udostępnienia snapshot kontroluje jedno konto, nie jest możliwe zapewnienie, że subskrybent filtrowanej publikacji merge ma dostęp tylko do plików snapshot ze swojej partycji danych.
Ograniczenia i ograniczenia
- Snapshot Agent musi mieć uprawnienia do zapisu dla określonego katalogu, a Distribution Agent lub Merge Agent muszą mieć uprawnienia do odczytu. Jeśli używane są subskrypcje pull, należy określić współdzielony katalog jako ścieżkę uniwersalnej konwencji nazewnictwa (UNC), taką jak \\ftpserver\home\snapshots. Aby uzyskać więcej informacji, zobacz Zabezpieczanie folderu migawki.
Wymagania wstępne
- Aby przenieść pliki snapshot za pomocą protokołu File Transfer Protocol (FTP), najpierw musisz skonfigurować serwer FTP. Więcej informacji można znaleźć w dokumentacji Microsoft Internet Information Services (IIS).
Zabezpieczenia
Aby poprawić bezpieczeństwo, zalecamy wdrożenie wirtualnej sieci prywatnej (VPN) podczas dostarczania migawek FTP przez Internet. Aby uzyskać więcej informacji, zobacz Publikowanie danych za pośrednictwem Internetu przy użyciu sieci VPN.
Jako najlepsza praktyka bezpieczeństwa nie pozwalaj na anonimowe logowania na serwerze FTP. Snapshot Agent musi mieć uprawnienia do zapisu dla określonego katalogu, a Distribution Agent lub Merge Agent muszą mieć uprawnienia do odczytu. Jeśli używane są subskrypcje pull, należy określić współdzielony katalog jako ścieżkę uniwersalnej konwencji nazewnictwa (UNC), taką jak \\ftpserver\home\snapshots. Aby uzyskać więcej informacji, zobacz Zabezpieczanie folderu migawki.
Gdy to możliwe, proś użytkowników o wpisanie danych uwierzytelniających w czasie działania. Jeśli przechowujesz dane uwierzytelniające w pliku skryptowym, musisz zabezpieczyć plik.
Korzystanie z programu SQL Server Management Studio
Po skonfigurowaniu serwera FTP określ informacje o katalogu i zabezpieczeniach dla tego serwera w oknie dialogowym Publikacja — Właściwości <Publikacja>. Aby uzyskać więcej informacji na temat uzyskiwania dostępu do tego okna dialogowego, zobacz Wyświetlanie i modyfikowanie właściwości publikacji.
Aby określić informacje FTP
W oknie dialogowym Właściwości Publikacji - <Publikacja> wybierz Pozwól subskrybantom pobierać pliki migawek za pomocą FTP z jednej z następujących stron:
Strona FTP Snapshot, przeznaczona do publikacji snapshotów i transakcyjnych, oraz publikacje scalane dla wydawców działających w wersjach sprzed Microsoft SQL Server 2005 (9.x).
Strona FTP Snapshot i Internet, do łączenia publikacji od wydawców działających na SQL Server 2005 (9.x) lub nowszych.
Określ wartości dla nazwy serwera FTP, numeru portu, ścieżki z folderu głównego FTP, logowania oraz hasła.
Na przykład, jeśli root serwera FTP to \\ftpserver\home i chcesz, aby snapshoty były przechowywane w \\ftpserver\home\snapshots, określ \snapshots\ftp jako ścieżkę właściwości z folderu root FTP (replikacja dodaje 'ftp' do ścieżki folderu snapshotów podczas tworzenia plików snapshotów).
Określ, że Snapshot Agent powinien zapisywać pliki snapshot do katalogu określonego w kroku 2. Na przykład, aby Snapshot Agent zapisywał pliki snapshotów do \\ftpserver\home\snapshots\ftp, musisz określić ścieżkę \\ftpserver\home\snapshots w jednym z dwóch miejsc:
- Domyślna lokalizacja snapshotu dla dystrybutora powiązanego z tą publikacją.
- Alternatywna lokalizacja folderu snapshotów dla tej publikacji. Alternatywna lokalizacja jest wymagana, jeśli migawka jest skompresowana.
Więcej informacji na temat modyfikacji właściwości lokalizacji folderu snapshotów znajdziesz w Opcjach snapshotów.
- Kliknij przycisk OK.
Korzystanie z Transact-SQL
Można ustawić opcję udostępnienia plików snapshot na serwerze FTP, a te ustawienia FTP można programowo modyfikować za pomocą procedur przechowywanych w replikacji. Procedura stosowana zależy od rodzaju publikacji. Dostarczanie snapshotów FTP jest używane tylko przy subskrypcjach pull.
Aby włączyć dostarczanie migawek za pośrednictwem protokołu FTP dla publikacji migawkowej lub transakcyjnej
U wydawcy w bazie danych publikacji wykonaj polecenie sp_addpublication. Określmy
@publication, wartość prawdziwą dla@enabled_for_internet, oraz odpowiednie wartości dla następujących parametrów:@ftp_address- adres serwera FTP użytego do dostarczenia migawki.(Opcjonalnie)
@ftp_port- port używany przez serwer FTP.(Opcjonalnie)
@ftp_subdirectory- podkatalog domyślnego katalogu FTP przypisanego do logowania FTP. Na przykład, jeśli katalog główny serwera FTP to \\ftpserver\home i chcesz, aby migawki były przechowywane w lokalizacji \\ftpserver\home\snapshots, określ \snapshots\ftp dla@ftp_subdirectory(replikacja dodaje „ftp” do ścieżki folderu migawek podczas tworzenia plików migawek).(Opcjonalnie)
@ftp_login- konto logowania używane podczas łączenia z serwerem FTP.(Opcjonalnie)
@ftp_password- hasło do logowania do FTP.
To tworzy publikację korzystającą z FTP. Aby uzyskać więcej informacji, zobacz Tworzenie publikacji.
Aby umożliwić dostarczanie migawek FTP dla publikacji merge
Na serwerze Publisher w bazie danych publikacji wykonaj sp_addmergepublication. Określmy
@publication, wartość prawdziwą dla@enabled_for_internetoraz odpowiednie wartości dla następujących parametrów:@ftp_address- adres serwera FTP użytego do dostarczenia migawki.(Opcjonalnie)
@ftp_port- port używany przez serwer FTP.(Opcjonalnie)
@ftp_subdirectory- podkatalog domyślnego katalogu FTP przypisanego do logowania FTP. Na przykład, jeśli katalog główny serwera FTP to \\ftpserver\home i chcesz, aby migawki były przechowywane w lokalizacji \\ftpserver\home\snapshots, określ \snapshots\ftp dla@ftp_subdirectory(replikacja dodaje „ftp” do ścieżki folderu migawek podczas tworzenia plików migawek).(Opcjonalnie)
@ftp_login- konto logowania używane podczas łączenia z serwerem FTP.(Opcjonalnie)
@ftp_password- hasło do logowania do FTP.
To tworzy publikację korzystającą z FTP. Aby uzyskać więcej informacji, zobacz Tworzenie publikacji.
Aby utworzyć subskrypcję pull na snapshot lub publikację transakcyjną korzystającą z dostawy snapshotów przez FTP
Na stronie Subskrybera w bazie subskrypcji wykonaj sp_addpullsubscription. Określmy
@publisheri@publication.- W sekcji Subskrybent w bazie subskrypcji wykonaj sp_addpullsubscription_agent. Określ
@publisher,@publisher_db,@publication, poświadczenia systemu Microsoft Windows, w kontekście których Agent dystrybucji działa u Subskrybenta dla@job_logini@job_password, oraz wartość true dla@use_ftp.
- W sekcji Subskrybent w bazie subskrypcji wykonaj sp_addpullsubscription_agent. Określ
U wydawcy, w bazie danych publikacji, wykonaj polecenie sp_addsubscription, aby zarejestrować subskrypcję pull. Aby uzyskać więcej informacji, zobacz Tworzenie subskrypcji typu pull.
Aby utworzyć subskrypcję pull do publikacji merge korzystającej z dostarczania snapshotów FTP
W bazie danych subskrypcji u subskrybenta wykonaj sp_addmergepullsubscription. Określmy
@publisheri@publication.W sekcji Subskrybent w bazie subskrypcji wykonaj sp_addmergepullsubscription_agent. Określmy
@publisher,@publisher_db,@publication, dane uwierzytelniające Windows, pod którymi Distribution Agent na Subscriber działa dla@job_logini@job_password, oraz wartośćtruedla@use_ftp.Na serwerze Publisher, w bazie danych publikacji, wykonaj polecenie sp_addmergesubscription, aby zarejestrować subskrypcję typu pull. Aby uzyskać więcej informacji, zobacz Tworzenie subskrypcji typu pull.
Aby zmienić co najmniej jedno ustawienie dostarczania migawek przez FTP dla publikacji migawkowej lub transakcyjnej
Na Publisher w bazie publikacji wykonaj sp_changepublication. Określmy jedną z następujących wartości dla
@propertyoraz nową wartość tego ustawienia dla@value:ftp_address- adres serwera FTP używanego do dostarczania migawki.ftp_port- port używany przez serwer FTP.ftp_subdirectory- podkatalog domyślnego katalogu FTP używanego do snapshotu FTP.ftp_login- logowanie używane do połączenia z serwerem FTP.ftp_password- hasło do logowania do FTP.
(Opcjonalnie) Powtarzaj krok 1 dla każdej zmiany ustawienia FTP.
(Opcjonalnie) Aby wyłączyć dostarczanie migawek FTP, wykonaj sp_changepublication na Publisher w bazie danych publikacji. Określ wartość
enabled_for_internetdla@propertyoraz wartośćfalsedla@value.
Aby zmienić ustawienia dostarczania migawki FTP dla publikacji merge
Na serwerze Publisher, w bazie danych publikacji, wykonaj sp_changemergepublication. Określmy jedną z następujących wartości dla
@propertyoraz nową wartość tego ustawienia dla@value:ftp_address- adres serwera FTP użytego do dostarczenia migawki.ftp_port- port używany przez serwer FTP.ftp_subdirectory- podkatalog domyślnego katalogu FTP używanego do snapshotu FTP.ftp_login- logowanie używane do połączenia z serwerem FTP.ftp_password- hasło do logowania do FTP.
(Opcjonalnie) Powtarzaj krok 1 dla każdej zmiany ustawienia FTP.
(Opcjonalnie) Aby wyłączyć dostarczanie migawek przez FTP, wykonaj sp_changemergepublication na serwerze Publisher w bazie danych publikacji. Określ wartość
enabled_for_internetdla@propertyoraz wartośćfalsedla@value.
Przykłady (Transact-SQL)
Poniższy przykład tworzy publikację scalaną, która pozwala subskrybentom uzyskać dostęp do danych snapshot za pomocą FTP. Subskrybent powinien korzystać z bezpiecznego połączenia VPN podczas uzyskiwania dostępu do udostępnienia FTP. Zmienne skryptowe sqlcmd służą do podawania wartości logowania i hasła. Więcej informacji można znaleźć w artykule Używaj sqlcmd ze zmiennymi skryptowymi.
-- 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
Poniższy przykład tworzy subskrypcję publikacji scalonej, gdzie Subskrybent otrzymuje snapshot za pomocą FTP. Subskrybent powinien korzystać z bezpiecznego połączenia VPN podczas uzyskiwania dostępu do udostępnienia FTP. Zmienne skryptowe sqlcmd służą do podawania wartości logowania i hasła. Więcej informacji można znaleźć w artykule Używaj sqlcmd ze zmiennymi skryptowymi.
-- 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