sp_adddistpublisher (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Konfiguriert einen Verleger so, dass er eine angegebene Verteilungsdatenbank verwendet. Diese gespeicherte Prozedur wird beim Distributor auf einer beliebigen Datenbank ausgeführt. Die gespeicherten Prozeduren sp_adddistributor (Transact-SQL) und sp_adddistributiondb (Transact-SQL) müssen vor der Verwendung dieser gespeicherten Prozedur ausgeführt worden sein.

Transact-SQL-Syntaxkonventionen

Syntax

sp_adddistpublisher
    [ @publisher = ] N'publisher'
    , [ @distribution_db = ] N'distribution_db'
    [ , [ @security_mode = ] security_mode ]
    [ , [ @login = ] N'login' ]
    [ , [ @password = ] N'password' ]
    [ , [ @working_directory = ] N'working_directory' ]
    [ , [ @trusted = ] N'trusted' ]
    [ , [ @encrypted_password = ] encrypted_password ]
    [ , [ @thirdparty_flag = ] thirdparty_flag ]
    [ , [ @publisher_type = ] N'publisher_type' ]
    [ , [ @storage_connection_string = ] N'storage_connection_string' ]
[ ; ]

Argumente

[ @publisher = ] N'publisher'

Der Herausgebername. @publisher ist "sysname" ohne Standard.

Hinweis

Der Servername kann als <Hostname>,<PortNumber>. Geben Sie die Portnummer für Ihre Verbindung an, wenn SQL Server unter Linux oder Windows mit einem benutzerdefinierten Port bereitgestellt wird, und der Browserdienst ist deaktiviert. Die Verwendung von benutzerdefinierten Portnummern für Remoteverteiler gilt für SQL Server 2019 (15.x) und höhere Versionen.

[ @distribution_db = ] N'distribution_db'

Der Name der Verteilungsdatenbank. @distribution_db ist "sysname" ohne Standard. Dieser Parameter wird von Replikations-Agents zum Herstellen einer Verbindung zum Verleger verwendet.

[ @security_mode = ] security_mode

Der implementierte Sicherheitsmodus. Dieser Parameter wird nur von Replikations-Agents verwendet, um eine Verbindung mit publisher herzustellen, um Abonnements in die Warteschlange zu aktualisieren oder mit einem Nicht-SQL Server Publisher. @security_mode ist int und kann einer dieser Werte sein.

Wert Beschreibung
0 Replikations-Agents im Distributor verwenden die SQL Server-Authentifizierung, um eine Verbindung mit publisher herzustellen.
1 (Standard) Replikations-Agents auf dem Verteiler verwenden die Windows-Authentifizierung beim Herstellen einer Verbindung zum Verleger.

[ @login = ] N'login'

Die Anmeldung. Dieser Parameter ist erforderlich, wenn security_mode ist 0. @login ist "sysname" mit der Standardeinstellung "NULL. Dieser Parameter wird von Replikations-Agents zum Herstellen einer Verbindung zum Verleger verwendet.

[ @password = ] N'password'

Das Kennwort. @password ist "sysname" mit der Standardeinstellung "NULL. Dieser Parameter wird von Replikations-Agents zum Herstellen einer Verbindung zum Verleger verwendet.

Wichtig

Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort.

[ @working_directory = ] N'working_directory'

Der Name des Arbeitsverzeichnisses, das zum Speichern von Daten- und Schemadateien für die Publikation verwendet wird. @working_directory ist "nvarchar(255)", und standardmäßig wird der ReplData Ordner für diese Instanz von SQL Server verwendet. Beispielsweise C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.1\ReplData. Dieser Name sollte im UNC-Format angegeben werden.

Verwenden Sie \\<storage_account>.file.core.windows.net\<share>für Azure SQL-Datenbank .

[ @trusted = ] N'trusted'

@trusted ist veraltet und wird nur aus Gründen der Abwärtskompatibilität bereitgestellt. @trusted ist nvarchar(5), mit einem Standardwert von false. Wenn Sie diesen Parameter auf alles festlegen, was aber false zu einem Fehler führt.

[ @encrypted_password = ] encrypted_password

Das Festlegen dieses Parameters wird nicht mehr unterstützt. @encrypted_password ist bit, mit einem Standardwert von 0. Wenn Sie diesen Parameter so festlegen, dass 1 er zu einem Fehler führt.

[ @thirdparty_flag = ] thirdparty_flag

Gibt an, wann der Publisher SQL Server ist. @thirdparty_flag ist Bit und kann einer der folgenden Werte sein:

Wert Beschreibung
0 (Standardwert) SQL Server-Datenbank.
1 Andere Datenbank als SQL Server.

[ @publisher_type = ] N'publisher_type'

Gibt den Publisher-Typ an, wenn publisher nicht SQL Server ist. @publisher_type ist "sysname" und kann einen der folgenden Werte aufweisen.

Wert Beschreibung
MSSQLSERVER (Standardwert) Gibt einen SQL Server-Herausgeber an.
ORACLE Gibt einen standardmäßigen Oracle-Verleger an.
ORACLE GATEWAY Gibt einen Oracle Gateway-Verleger an.

Weitere Informationen zu den Unterschieden zwischen einem Oracle Publisher und einem Oracle Gateway Publisher finden Sie unter Konfigurieren eines Oracle Publisher.

[ @storage_connection_string = ] N'storage_connection_string'

Erforderlich für Azure SQL-Datenbank. @storage_connection_string ist "nvarchar(255)" mit einem Standardwert von NULL. Verwenden Sie die Zugriffstaste aus dem Azure-Portal unter "Speicher > Einstellungen".

Hinweis

Publisher- und Distributordatenbanken auf Azure SQL-Datenbank erfordern SQL-verwaltete Instanz. Weitere Informationen finden Sie unter Replikation mit Azure SQL-Datenbank.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler).

Hinweise

sp_adddistpublisherwird von Momentaufnahme Replikation, Transaktionsreplikation und Zusammenführungsreplikation verwendet.

Beispiele

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

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin können ausgeführt werden sp_adddistpublisher.