Dela via


sp_adddistributor (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Skapar en post i tabellen sys.servers (om det inte finns någon), markerar serverposten som distributör och lagrar egenskapsinformation. Den här lagrade proceduren körs på distributören i master databasen för att registrera och markera servern som distributör. När det gäller en fjärrdistributör körs den också på utgivaren master från databasen för att registrera fjärrdistributören.

Transact-SQL syntaxkonventioner

Syntax

sp_adddistributor
    [ @distributor = ] N'distributor'
    [ , [ @heartbeat_interval = ] heartbeat_interval ]
    [ , [ @password = ] N'password' ]
    [ , [ @from_scripting = ] from_scripting ]
    [ , [ @encrypt_distributor_connection = ] N'encrypt_distributor_connection' ]
    [ , [ @trust_distributor_certificate = ] N'trust_distributor_certificate' ]
    [ , [ @host_name_in_distributor_certificate = ] N'host_name_in_distributor_certificate' ]
[ ; ]

Arguments

[ @distributor = ] N'distributor'

Distributionsserverns namn. @distributor är sysname, utan standard. Den här parametern används endast om du konfigurerar en fjärrdistributör. Den lägger till poster för distributörsegenskaperna msdb..MSdistributor i tabellen.

Anmärkning

Servernamn kan anges som <Hostname>,<PortNumber> för en standardinstans eller <Hostname>\<InstanceName>,<PortNumber> för en namngiven instans. Ange portnumret för anslutningen när SQL Server distribueras i Linux eller Windows med en anpassad port och webbläsartjänsten är inaktiverad. Användningen av anpassade portnummer för fjärrdistributör gäller för SQL Server 2019 (15.x) och senare versioner.

[ @heartbeat_interval = ] heartbeat_interval

Det maximala antalet minuter som en agent kan gå utan att logga ett förloppsmeddelande. @heartbeat_interval är int, med standardvärdet 10 minuter. Ett SQL Server Agent-jobb skapas som körs med det här intervallet för att kontrollera statusen för de replikeringsagenter som körs.

[ @password = ] N'password'

Lösenordet för distributor_admin inloggning. @password är sysname med standardvärdet NULL. Om lösenordet är NULL eller en tom sträng återställs @password till ett slumpmässigt värde. Lösenordet måste konfigureras när den första fjärrdistributören läggs till. distributor_admin inloggning och @password lagras för länkad serverpost som används för en RPC-distributörsanslutning , inklusive lokala anslutningar. Om distributören är lokal anges lösenordet för distributor_admin till ett nytt värde. För utgivare med en fjärransluten distributör måste samma värde för @password anges vid körning sp_adddistributor på både utgivaren och distributören. sp_changedistributor_password kan användas för att ändra distributörslösenordet.

Viktigt!

När det är möjligt uppmanar du användarna att ange säkerhetsautentiseringsuppgifter vid körning. Om du måste lagra autentiseringsuppgifter i en skriptfil måste du skydda filen för att förhindra obehörig åtkomst.

[ @from_scripting = ] from_scripting

@from_scripting är bit, med standardvärdet 0. Identifieras endast i informationssyfte. Stöds inte. Framtida kompatibilitet garanteras inte.

[ @encrypt_distributor_connection = ] N'encrypt_distributor_connection'

Gäller för: SQL Server 2025 (17.x) Förhandsversion och senare versioner.

Avgör om den interna länkade serveranslutningen från utgivaren till distributören är krypterad. Värdena mappas till OLE DB-providerns Encrypt egenskap. @encrypt_distributor_connection är nvarchar(10) och kan inte vara NULL.

@encrypt_distributor_connection kan vara något av följande värden:

  • mandatory (standard med Microsoft OLE DB-provider 19)
  • no eller false (standard med Microsoft OLE DB-provider 18)
  • true eller yes
  • optional
  • strict

[ @trust_distributor_certificate = ] N'trust_distributor_certificate'

Gäller för: SQL Server 2025 (17.x) Förhandsversion och senare versioner.

Anger om distributörens TLS-certifikat ska vara betrott utan validering. Värdet mappas till OLE DB-providerns TrustServerCertificate egenskap och används vanligtvis tillsammans med krypteringsinställningen Mandatory när du använder självsignerade certifikat. @trust_distributor_certificate är nvarchar(5) och kan inte vara NULL.

@trust_distributor_certificate kan vara något av följande värden:

  • no (standardinställning)
  • yes

Anmärkning

Säkra standardvärden gäller den underliggande OLEDB-providern 19, vilket förbättrar säkerheten. Alternativet att åsidosätta standardinställningen är mindre säkert än att konfigurera din instans för att använda ett betrott certifikat. När du har åsidosättt standardinställningen har du möjlighet att konfigurera SQL Server att använda ett certifikat och sedan använda den sp_changedistributor_property lagrade proceduren för att ange trust_distributor_certificate=no egenskapen tillbaka till den säkra standardinställningen.

[ @host_name_in_distributor_certificate = ] N'host_name_in_distributor_certificate'

Gäller för: SQL Server 2025 (17.x) Förhandsversion och senare versioner.

Anger värdnamnet från distributörens certifikat när det skiljer sig från distributörsnamnet, till exempel när IP-adressen eller DNS-aliaset används som distributörsnamn. Lämna parametern @host_name_in_distributor_certificate tom om värdnamnet i certifikatet matchar distributörsnamnet. @host_name_in_distributor_certificate är nvarchar(255) av valfritt strängvärde, med standardvärdet NULL.

Returnera kodvärden

0 (lyckades) eller 1 (misslyckades).

Anmärkningar

sp_adddistributor används i replikering av ögonblicksbilder, transaktionsreplikering och sammanslagningsreplikering.

Examples

-- 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

Konfigurera distributören att lita på det självsignerade certifikatet

Om du vill åsidosätta den säkra standardinställningen för OLEDB 19-providern och ange trust_distributor_certificate=yes så att distributören litar på det självsignerade certifikatet använder du följande exempel:

EXECUTE sys.sp_adddistributor @trust_distributor_certificate = 'yes';

Anmärkning

Säkra standardvärden gäller den underliggande OLEDB-providern 19, vilket förbättrar säkerheten. Alternativet att åsidosätta standardinställningen är mindre säkert än att konfigurera din instans för att använda ett betrott certifikat. När du har åsidosättt standardinställningen har du möjlighet att konfigurera SQL Server att använda ett certifikat och sedan använda den sp_changedistributor_property lagrade proceduren för att ange trust_distributor_certificate=no egenskapen tillbaka till den säkra standardinställningen.

Mer information finns i fjärrdistributörens icke-bakåtkompatibla ändring i SQL Server 2025 Preview.

Permissions

Endast medlemmar i den fasta serverrollen sysadmin kan köra sp_adddistributor.