sp_dropdistpublisher (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Quita un publicador de distribución. Este procedimiento almacenado se ejecuta en el distribuidor en cualquier base de datos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_dropdistpublisher
    [ @publisher = ] N'publisher'
    [ , [ @no_checks = ] no_checks ]
    [ , [ @ignore_distributor = ] ignore_distributor ]
[ ; ]

Argumentos

[ @publisher = ] N'publisher'

Publicador que se va a quitar. @publisher es sysname, sin ningún valor predeterminado.

Nota:

El uso de un puerto personalizado para el publicador de SQL Server se introdujo en SQL Server 2019 (15.x). Si el publicador de SQL Server está configurado con un puerto personalizado, al quitar dicho publicador en el distribuidor, proporcione el nombre del servidor publicador en lugar de <Hostname>,<PortNumber>.

[ @no_checks = ] no_checks

Especifica si sp_dropdistpublisher comprueba si el publicador ha desinstalado el servidor como distribuidor. @no_checks es bit, con un valor predeterminado de 0.

  • Si 0es , la replicación comprueba que el publicador remoto ha desinstalado el servidor local como distribuidor. Si el publicador de distribución es local, la replicación comprueba que no quedan objetos de publicación o distribución en el servidor local.

  • Si 1es , se quitan todos los objetos de replicación asociados al publicador de distribución incluso si no se puede acceder a un publicador remoto. Después de hacerlo, el publicador remoto debe desinstalar la replicación mediante sp_dropdistributor con @ignore_distributor = 1.

[ @ignore_distributor = ] ignore_distributor

Especifica si los objetos de distribución se dejan en el distribuidor cuando se quita el publicador. @ignore_distributor es bit y puede ser uno de estos valores:

  • 1 = los objetos de distribución que pertenecen al @publisher permanecen en el distribuidor.
  • 0 = los objetos de distribución de la @publisher se limpian en el distribuidor.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

sp_dropdistpublisher se usa en todos los tipos de replicación.

Al quitar un publicador de Oracle, si no se puede quitar el publicador, sp_dropdistpublisher devuelve un error y se quitan los objetos distributor del publicador.

Ejemplos

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

-- Disable publishing and distribution.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB as sysname;
SET @distributionDB = N'distribution';
SET @publisher = $(DistPubServer);
SET @publicationDB = N'AdventureWorks2022';

-- Disable the publication database.
USE [AdventureWorks2022]
EXEC sp_removedbreplication @publicationDB;

-- Remove the registration of the local Publisher at the Distributor.
USE master
EXEC sp_dropdistpublisher @publisher;

-- Delete the distribution database.
EXEC sp_dropdistributiondb @distributionDB;

-- Remove the local server as a Distributor.
EXEC sp_dropdistributor;
GO

Permisos

Solo los miembros del rol fijo de servidor sysadmin pueden ejecutar sp_dropdistpublisher.