Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Detta ämne beskriver hur man levererar en snapshot via FTP i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL.
Som standard lagras snapshots i mappar definierade som Universal Naming Convention (UNC)-delningar. Replikering låter dig också specificera en File Transfer Protocol (FTP)-delning istället för en UNC-delning. För att använda FTP måste du konfigurera en FTP-server och sedan konfigurera en publikation och en eller flera prenumerationer för att använda FTP. För information om hur man konfigurerar en FTP-server, se Internet Information Services (IIS) dokumentation. Om du anger FTP-information för en publikation använder prenumerationer på den publikationen FTP som standard. FTP används endast med webbsynkronisering när datorn som kör IIS är separerad från distributören av en brandvägg. I detta fall kan FTP användas för att överföra snapshoten från distributören och datorn som kör IIS. (Snapshoten överförs alltid till prenumeranten via HTTPS.)
Important
Vi rekommenderar att du använder Microsoft Windows autentisering och en UNC-share istället för en FTP-share eftersom FTP-lösenord måste lagras, och lösenordet skickas från prenumeranten eller datorn som kör IIS när den använder webbsynkronisering till FTP-servern i klartext. Dessutom, eftersom ett enda konto kontrollerar åtkomsten till snapshot-delningen, är det inte möjligt att säkerställa att en prenumerant på en filtrerad sammanslagningspublikation endast har tillgång till snapshot-filerna från sin datapartition.
Begränsningar och restriktioner
- Snapshot Agent måste ha skrivbehörigheter för den katalog du anger, och Distribution Agent eller Merge Agent måste ha läsbehörigheter. Om pull-prenumerationer används måste du ange en delad katalog som en universell namngivningskonvention (UNC)-sökväg, såsom \\ftpserver\home\snapshots. Mer information finns i Skydda mappen Ögonblicksbild.
Förutsättningar
- För att överföra snapshot-filer med File Transfer Protocol (FTP) måste du först konfigurera en FTP-server. För mer information, se Microsoft Internet Information Services (IIS)-dokumentationen.
Security
För att förbättra säkerheten rekommenderar vi att du implementerar ett virtuellt privat nätverk (VPN) när du använder FTP-snapshot-leverans över Internet. Mer information finns i Publicera data via Internet med VPN.
Som säkerhetspraxis bör du inte tillåta anonyma inloggningar till FTP-servern. Snapshot Agent måste ha skrivbehörigheter för den katalog du anger, och Distribution Agent eller Merge Agent måste ha läsbehörigheter. Om pull-prenumerationer används måste du ange en delad katalog som en universell namngivningskonvention (UNC)-sökväg, såsom \\ftpserver\home\snapshots. Mer information finns i Skydda mappen Ögonblicksbild.
När det är möjligt, be användare ange sina inloggningsuppgifter vid körning. Om du lagrar uppgifter i en skriptfil måste du säkra filen.
Använda SQL Server Management Studio
Efter att FTP-servern är konfigurerad, ange katalog- och säkerhetsinformation för denna server i dialogrutan Publikationsegenskaper <för publikation> . Mer information om hur du öppnar den här dialogrutan finns i Visa och ändra publikationsegenskaper.
För att specificera FTP-information
I dialogrutan Publikationsegenskaper - <Publikation> , välj Tillåt prenumeranter att ladda ner snapshot-filer med FTP från en av följande sidor:
FTP Snapshot-sidan, för snapshot- och transaktionspublikationer, samt sammanslagningspublikationer för förlag som körde versioner före Microsoft SQL Server 2005 (9.x).
Sidan FTP-ögonblicksbild och Internet, för sammanfogningspublikationer från utgivare som kör SQL Server 2005 (9.x) eller senare.
Ange värden för FTP-serverns namn, portnummer, sökväg från FTP-rotmappen, inloggning och lösenord.
Till exempel, om FTP-serverns rot är \\ftpserver\home och du vill att snapshots ska lagras vid \\ftpserver\home\snapshots, ange \snapshots\ftp för egenskapssökvägen från FTP-rotmappen (replikering lägger till 'ftp' i snapshot-mappens väg när den skapar snapshot-filer).
Ange att Snapshot Agent ska skriva snapshotfilerna till katalogen som anges i steg 2. Till exempel, för att Snapshot Agent ska skriva snapshotfilerna till \\ftpserver\home\snapshots\ftp, måste du ange sökvägen \\ftpserver\home\snapshots på en av två platser:
- Standardsökvägen för ögonblicksbilden för distributören som är associerad med den här publikationen.
- En alternativ platsplats för snapshot-mappen för denna publikation. En alternativ plats krävs om snapshoten är komprimerad.
För mer information om att ändra platsegenskaperna för snapshot-mappen, se Snapshot-alternativ.
- Välj OK.
Använda Transact-SQL
Alternativet att göra snapshot-filer tillgängliga på en FTP-server kan ställas in och dessa FTP-inställningar kan modifieras programmatiskt med hjälp av replikeringslagrade procedurer. Proceduren beror på typen av publikation. FTP-snapshot-leverans används endast med pull-prenumerationer.
Så här aktiverar du leverans av ögonblicksbild via FTP för en ögonblicksbilds- eller transaktionell publicering
På utgivaren i publikationsdatabasen kör du sp_addpublication. Specificera
@publication, ett sant värde för@enabled_for_internet, och lämpliga värden för följande parametrar:@ftp_address- adressen till FTP-servern som användes för att leverera snapshoten.(Valfritt)
@ftp_port- porten som används av FTP-servern.(Valfritt)
@ftp_subdirectory- underkatalogen i standardkatalogen FTP som tilldelas en FTP-inloggning. Till exempel, om FTP-serverns rot är \\ftpserver\home och du vill att snapshots ska lagras vid \\ftpserver\home\snapshots, specificera \snapshots\ftp för@ftp_subdirectory(replikering lägger till 'ftp' i snapshot-mappens sökväg när den skapar snapshot-filer).(Valfritt)
@ftp_login- ett inloggningskonto som används vid anslutning till FTP-servern.(Valfritt)
@ftp_password- lösenordet för FTP-inloggningen.
Detta skapar en publikation som använder FTP. Mer information finns i Skapa en publikation.
För att möjliggöra FTP-ögonblicksleverans för en sammanslagningspublicering
På Publisher i publikationsdatabasen kör du sp_addmergepublication. Specificera
@publication, ett sant värde för@enabled_for_internetoch lämpliga värden för följande parametrar:@ftp_address- adressen till FTP-servern som användes för att leverera snapshoten.(Valfritt)
@ftp_port- porten som används av FTP-servern.(Valfritt)
@ftp_subdirectory- underkatalogen i standardkatalogen FTP som tilldelas en FTP-inloggning. Till exempel, om FTP-serverns rot är \\ftpserver\home och du vill att snapshots ska lagras vid \\ftpserver\home\snapshots, specificera \snapshots\ftp för@ftp_subdirectory(replikering lägger till 'ftp' i snapshot-mappens sökväg när den skapar snapshot-filer).(Valfritt)
@ftp_login- ett inloggningskonto som används vid anslutning till FTP-servern.(Valfritt)
@ftp_password- lösenordet för FTP-inloggningen.
Detta skapar en publikation som använder FTP. Mer information finns i Skapa en publikation.
För att skapa en pull-prenumeration på en snapshot- eller transaktionspublikation som använder FTP-snapshotleverans
På prenumeranten i prenumerationsdatabasen, kör sp_addpullsubscription. Specificera
@publisheroch@publication.- På prenumeranten i prenumerationsdatabasen, kör sp_addpullsubscription_agent. Specificera
@publisher,@publisher_db,@publication, de Microsoft Windows inloggningsuppgifter under vilka Distribution Agent hos abonnenten körs för@job_loginoch@job_password, samt ett värde på true för@use_ftp.
- På prenumeranten i prenumerationsdatabasen, kör sp_addpullsubscription_agent. Specificera
Vid Publisher i publiceringsdatabasen, kör sp_addsubscription för att registrera pull-prenumerationen. Mer information finns i Skapa en pull-prenumeration.
För att skapa en pull-prenumeration på en sammanslagningspublikation som använder FTP snapshot delivery
På prenumeranten i prenumerationsdatabasen kör du sp_addmergepullsubscription. Specificera
@publisheroch@publication.På prenumerantsidan i prenumerationsdatabasen, kör sp_addmergepullsubscription_agent. Ange
@job_login,@job_password,true, de Windows-autentiseringsuppgifter som distributionsagenten hos prenumeranten körs under för@use_ftpoch@publication, samt ett värde på@publisher_dbför@publisher.Hos utgivaren på publiceringsdatabasen kör du sp_addmergesubscription för att registrera pull-prenumerationen. Mer information finns i Skapa en pull-prenumeration.
Att ändra en eller flera FTP-ögonblicksbildsleveransinställningar för en ögonblicksbild eller transaktionell publikation
Vid Publisher i publikationsdatabasen, kör sp_changepublication. Ange ett av följande värden för
@propertyoch ett nytt värde i denna inställning för@value:ftp_address- adressen till FTP-servern som användes för att leverera snapshoten.ftp_port- porten som används av FTP-servern.ftp_subdirectory- underkatalogen till standard-FTP-katalogen som används för FTP-snapshoten.ftp_login- en inloggning som används för att ansluta till FTP-servern.ftp_password- lösenordet för FTP-inloggningen.
(Valfritt) Upprepa steg 1 för varje FTP-inställning som ändras.
(Valfritt) För att inaktivera FTP-ögonblicksutdelning, kör sp_changepublication vid Publisher i publiceringsdatabasen. Ange ett värde på
enabled_for_internetför@propertyoch ett värde påfalseför@value.
För att ändra FTP-inställningar för leverans av snapshot för en sammanslagningspublikation
På Publisher i publikationsdatabasen, kör sp_changemergepublication. Ange ett av följande värden för
@propertyoch ett nytt värde i denna inställning för@value:ftp_address- adressen till FTP-servern som användes för att leverera snapshoten.ftp_port- porten som används av FTP-servern.ftp_subdirectory- underkatalogen till standard-FTP-katalogen som används för FTP-snapshoten.ftp_login- en inloggning som används för att ansluta till FTP-servern.ftp_password- lösenordet för FTP-inloggningen.
(Valfritt) Upprepa steg 1 för varje FTP-inställning som ändras.
(Valfritt) För att inaktivera FTP-snapshot-leverans, kör sp_changemergepublication på Publisher i publiceringsdatabasen. Ange ett värde på
enabled_for_internetför@propertyoch ett värde påfalseför@value.
Exempel (Transact-SQL)
Följande exempel skapar en sammanslagningspublikation som låter prenumeranter komma åt snapshot-data via FTP. Prenumeranten bör använda en säker VPN-anslutning när de använder FTP-delen. SQLCMD-skriptvariabler används för att tillhandahålla inloggnings- och lösenordsvärden. För mer information, se Använd sqlcmd med skriptvariabler.
-- 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
Följande exempel skapar en prenumeration på en sammanslagningspublikation, där prenumeranten får tag på ögonblicksbilden med FTP. Prenumeranten bör använda en säker VPN-anslutning när de använder FTP-delen. SQLCMD-skriptvariabler används för att tillhandahålla inloggnings- och lösenordsvärden. För mer information, se Använd sqlcmd med skriptvariabler.
-- 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