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
Azure SQL Managed Instance
Detta ämne beskriver hur man konfigurerar publicering och distribution i SQL Server genom att använda SQL Server Management Studio, Transact-SQL eller Replication Management Objects (RMO).
Security
Mer information finns i Visa och ändra säkerhetsinställningar för replikering.
Använda SQL Server Management Studio
Konfigurera distribution med hjälp av New Publication Wizard eller Configure Distribution Wizard. Efter att Distributören har konfigurerats, visa och ändra egenskaper i dialogrutan Distributörsegenskaper - <Distributör> . Använd Configure Distribution Wizard om du vill konfigurera en Distributor så att medlemmar i de db_owner fasta databasrollerna kan skapa publikationer, eller för att du vill konfigurera en fjärrdistributör som inte är en Publisher.
För att konfigurera distribution
I Microsoft SQL Server Management Studio, koppla upp dig mot servern som ska vara distributör (i många fall är Publisher och Distributor samma server), och expandera sedan servernoden.
Högerklicka på Replikeringsmappen och klicka sedan på Konfigurera distribution.
Följ guiden Konfigurera distribution för att:
Välj en distributör. För att använda en lokal distributör, välj ServerName kommer att fungera som en egen distributör; SQL Server skapar en distributionsdatabas och loggar. För att använda en fjärrdistributör, välj Använd följande server som distributör och välj sedan en server. Servern måste redan vara konfigurerad som en Distributor, och Publisher måste vara aktiverad för att använda Distributoren. För mer information, se Aktivera en fjärrutgivare hos en distributör (SQL Server Management Studio).
Om du väljer en fjärrdistributör måste du ange ett lösenord på sidan Administrativt lösenord för anslutningar som görs från Publisher till distributören. Detta lösenord måste matcha det lösenord som angavs när Publisher aktiverades hos den fjärranslutna distributören.
Ange en rotmapp för ögonblicksbilder (för en lokal Distributör). Snapshot-mappen är helt enkelt en katalog som du har utsett som en shared; agenter som läser från och skriver till denna mapp måste ha tillräckliga behörigheter för att komma åt den. Varje Publisher som använder denna Distributor skapar en mapp under rotmappen, och varje publikation skapar mappar under Publisher-mappen för att lagra snapshot-filer. För mer information om hur man säkrar mappen på rätt sätt, se Secure the Snapshot Folder.
Ange distributionsdatabasen (för en lokal distributör). Distributionsdatabasen lagrar metadata och historikdata för alla typer av replikation samt transaktioner för transaktionell replikering.
Möjliggöra valfritt att andra utgivare använder distributören. Om andra utgivare får använda distributören måste du ange ett lösenord på sidan Distributörens lösenord för anslutningar mellan dessa utgivare och distributören.
Valfria skriptkonfigurationsinställningar. Mer information finns i Skriptreplikering.
Använda Transact-SQL
Replikationspublicering och distribution kan konfigureras programmatiskt med hjälp av replikeringslagrade procedurer.
För att konfigurera publicering med en lokal distributör
- Kör sp_get_distributor (Transact-SQL) för att avgöra om servern redan är konfigurerad som en distributör.
Om värdet av
installedi resultatmängden är0, exekveras sp_adddistributor (Transact-SQL) vid distributören i huvuddatabasen.Om värdet av
distribution db installedi resultatuppsättningen är0, exekveras sp_adddistributiondb (Transact-SQL) vid distributören i huvuddatabasen. Ange namnet på distributionsdatabasen för@database. Valfritt kan du ange den maximala transaktionslagringstiden för@max_distretentionoch historikens lagringstid för@history_retention. Om en ny databas skapas, ange önskade databasens egenskapsparametrar.
På distributören, som också är Publisher, kör sp_adddistpublisher (Transact-SQL), och specificera UNC-delningen som ska användas som standardmapp för snapshot för
@working_directory.För en distributör på SQL Managed Instance, använd ett Azure-lagringskonto för
@working_directoryoch lagringsåtkomstnyckeln för@storage_connection_string.Vid Publisher, utför sp_replicationdboption (Transact-SQL). Ange databasen som publiceras för
@dbname, typen av replikation för@optnameoch värdettrueför@value.
För att konfigurera publicering med hjälp av en fjärrdistributör
Kör sp_get_distributor (Transact-SQL) för att avgöra om servern redan är konfigurerad som en distributör.
Om värdet av
installedi resultatmängden är0, exekveras sp_adddistributor (Transact-SQL) vid distributören i huvuddatabasen. Ange ett starkt lösenord för@password. Detta lösenord för kontotdistributor_adminkommer att användas av Publisher när man ansluter till distributören.Om värdet av
distribution db installedi resultatuppsättningen är0, exekveras sp_adddistributiondb (Transact-SQL) vid distributören i huvuddatabasen. Ange namnet på distributionsdatabasen för@database. Valfritt kan du ange den maximala transaktionslagringstiden för@max_distretentionoch historikens lagringstid för@history_retention. Om en ny databas skapas, ange önskade databasens egenskapsparametrar.
Vid distributören, kör sp_adddistpublisher (Transact-SQL) och specificera UNC-delningen som ska användas som standardmapp för snapshot .
@working_directoryOm distributören använder SQL Server-autentisering vid anslutning till Publisher måste du också ange ett värde för0för@security_modeoch Microsoft SQL Server-inloggningsinformationen för@loginoch@password.För en distributör på SQL Managed Instance, använd ett Azure-lagringskonto för
@working_directoryoch lagringsåtkomstnyckeln för@storage_connection_string.Vid Publisher i huvuddatabasen, kör sp_adddistributor (Transact-SQL). Ange det starka lösenordet som används i steg 1 för
@password. Detta lösenord kommer att användas av Publisher när man ansluter till distributören.Vid Publisher, utför sp_replicationdboption (Transact-SQL). Specificera databasen som publiceras för
@dbname, typen av replikering för@optname, och ett värde på sant för@value.
Exempel (Transact-SQL)
Följande exempel visar hur man konfigurerar publicering och distribution programmatiskt. I detta exempel anges namnet på servern som konfigureras som utgivare och lokal distributör med hjälp av skriptvariabler. Replikationspublicering och distribution kan konfigureras programmatiskt med hjälp av replikeringslagrade procedurer.
-- 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".
-- Install the Distributor and the distribution database.
DECLARE @distributor AS sysname;
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @directory AS nvarchar(500);
DECLARE @publicationDB AS sysname;
-- Specify the Distributor name.
SET @distributor = $(DistPubServer);
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
-- Specify the replication working directory.
SET @directory = N'\\' + $(DistPubServer) + '\repldata';
-- Specify the publication database.
SET @publicationDB = N'AdventureWorks2022';
-- Install the server MYDISTPUB as a Distributor using the defaults,
-- including autogenerating the distributor password.
USE master
EXEC sp_adddistributor @distributor = @distributor;
-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master
EXEC sp_adddistributiondb @database = @distributionDB,
@security_mode = 1;
GO
-- Create a Publisher and enable AdventureWorks2022 for replication.
-- Add MYDISTPUB as a publisher with MYDISTPUB as a local distributor
-- and use Windows Authentication.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
USE [distribution]
EXEC sp_adddistpublisher @publisher=@publisher,
@distribution_db=@distributionDB,
@security_mode = 1;
GO
Använda replikeringshanteringsobjekt (RMO)
För att konfigurera publicering och distribution på en enda server
Skapa en anslutning till servern genom att använda ServerConnection klassen.
Skapa en instans av ReplicationServer klassen. Skicka vidare ServerConnection från steg 1.
Skapa en instans av DistributionDatabase klassen.
Sätt egenskapen Name till databasnamnet och ställ egenskapen ConnectionContext till ServerConnection från steg 1.
Installera distributören genom att kalla metoden InstallDistributor . Skicka över objektet DistributionDatabase från steg 3.
Skapa en instans av DistributionPublisher klassen.
Sätt följande egenskaper av DistributionPublisher:
Name - namnet på utgivaren.
ConnectionContext - ServerConnection från steg 1.
DistributionDatabase - namnet på databasen som skapats i steg 5.
WorkingDirectory - delningen som används för att komma åt snapshot-filer.
PublisherSecurity- säkerhetsläget som används vid anslutning till Publisher. WindowsAuthentication rekommenderas.
- Anropa Create metoden.
För att konfigurera publicering och distribution med hjälp av en fjärrdistributör
Skapa en anslutning till den fjärrstyrda Distributor-servern genom att använda klassen ServerConnection .
Skapa en instans av ReplicationServer klassen. Skicka vidare ServerConnection från steg 1.
Skapa en instans av DistributionDatabase klassen.
Ange egenskapen Name som databasnamnet och ange egenskapen ConnectionContext som det ServerConnection från steg 1.
Installera distributören genom att kalla metoden InstallDistributor . Ange ett säkert lösenord (som används av Publisher vid anslutning till den fjärranslutna distributören) och objektet DistributionDatabase från steg 3. För mer information, se Secure the Distributor.
Important
När det är möjligt uppmanar du användarna att ange säkerhetsautentiseringsuppgifter vid körning. Om du måste lagra dina uppgifter, använd kryptografiska tjänster som tillhandahålls av Microsoft Windows .NET Framework.
Skapa en instans av DistributionPublisher klassen.
Sätt följande egenskaper av DistributionPublisher:
Name- namnet på den lokala Publisher-servern.
ConnectionContext - ServerConnection från steg 1.
DistributionDatabase - namnet på databasen som skapats i steg 5.
WorkingDirectory - delningen som används för att komma åt snapshot-filer.
PublisherSecurity- säkerhetsläget som används vid anslutning till Publisher. WindowsAuthentication rekommenderas.
Anropa Create metoden.
Skapa en anslutning till den lokala Publisher-servern genom att använda ServerConnection klassen.
Skapa en instans av ReplicationServer klassen. Ange ServerConnection från steg 9.
Anropa InstallDistributor metoden. Skicka namnet på den fjärranslutna distributören och lösenordet till den fjärrdistributören som anges i steg 5.
Important
När det är möjligt uppmanar du användarna att ange säkerhetsautentiseringsuppgifter vid körning. Om du måste lagra dina uppgifter, använd de kryptografiska tjänster som tillhandahålls av Windows .NET Framework.
Exempel (RMO)
Du kan programmerat konfigurera replikeringspublicering och distribution genom att använda Replication Management Objects (RMO).
// Set the server and database names
string distributionDbName = "distribution";
string publisherName = publisherInstance;
string publicationDbName = "AdventureWorks2022";
DistributionDatabase distributionDb;
ReplicationServer distributor;
DistributionPublisher publisher;
ReplicationDatabase publicationDb;
// Create a connection to the server using Windows Authentication.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the server acting as the Distributor
// and local Publisher.
conn.Connect();
// Define the distribution database at the Distributor,
// but do not create it now.
distributionDb = new DistributionDatabase(distributionDbName, conn);
distributionDb.MaxDistributionRetention = 96;
distributionDb.HistoryRetention = 120;
// Set the Distributor properties and install the Distributor.
// This also creates the specified distribution database.
distributor = new ReplicationServer(conn);
distributor.InstallDistributor((string)null, distributionDb);
// Set the Publisher properties and install the Publisher.
publisher = new DistributionPublisher(publisherName, conn);
publisher.DistributionDatabase = distributionDb.Name;
publisher.WorkingDirectory = @"\\" + publisherName + @"\repldata";
publisher.PublisherSecurity.WindowsAuthentication = true;
publisher.Create();
// Enable AdventureWorks2022 as a publication database.
publicationDb = new ReplicationDatabase(publicationDbName, conn);
publicationDb.EnabledTransPublishing = true;
publicationDb.EnabledMergePublishing = true;
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("An error occurred when installing distribution and publishing.", ex);
}
finally
{
conn.Disconnect();
}
' Set the server and database names
Dim distributionDbName As String = "distribution"
Dim publisherName As String = publisherInstance
Dim publicationDbName As String = "AdventureWorks2022"
Dim distributionDb As DistributionDatabase
Dim distributor As ReplicationServer
Dim publisher As DistributionPublisher
Dim publicationDb As ReplicationDatabase
' Create a connection to the server using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the server acting as the Distributor
' and local Publisher.
conn.Connect()
' Define the distribution database at the Distributor,
' but do not create it now.
distributionDb = New DistributionDatabase(distributionDbName, conn)
distributionDb.MaxDistributionRetention = 96
distributionDb.HistoryRetention = 120
' Set the Distributor properties and install the Distributor.
' This also creates the specified distribution database.
distributor = New ReplicationServer(conn)
distributor.InstallDistributor((CType(Nothing, String)), distributionDb)
' Set the Publisher properties and install the Publisher.
publisher = New DistributionPublisher(publisherName, conn)
publisher.DistributionDatabase = distributionDb.Name
publisher.WorkingDirectory = "\\" + publisherName + "\repldata"
publisher.PublisherSecurity.WindowsAuthentication = True
publisher.Create()
' Enable AdventureWorks2022 as a publication database.
publicationDb = New ReplicationDatabase(publicationDbName, conn)
publicationDb.EnabledTransPublishing = True
publicationDb.EnabledMergePublishing = True
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("An error occurred when installing distribution and publishing.", ex)
Finally
conn.Disconnect()
End Try