sp_dropmergearticle (Transact-SQL)

Si applica a:SQL Server

Rimuove un articolo da una pubblicazione di tipo merge. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

Convenzioni di sintassi Transact-SQL

Sintassi

sp_dropmergearticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    [ , [ @ignore_distributor = ] ignore_distributor ]
    [ , [ @reserved = ] reserved ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @ignore_merge_metadata = ] ignore_merge_metadata ]
[ ; ]

Argomenti

[ @publication = ] N'publication'

Nome della pubblicazione da cui eliminare un articolo. @publication è sysname, senza impostazione predefinita.

[ @article = ] N'article'

Nome dell'articolo da eliminare dalla pubblicazione specificata. @article è sysname, senza impostazione predefinita. Se all, vengono rimossi tutti gli articoli esistenti nella pubblicazione di tipo merge specificata. Anche se @article è all, la pubblicazione deve comunque essere eliminata separatamente dall'articolo.

[ @ignore_distributor = ] ignore_distributor

Indica se questa stored procedure viene eseguita senza stabilire la connessione al server di distribuzione. @ignore_distributor è bit, con il valore predefinito .0

[ @reserved = ] riservato

Riservato a un uso futuro. @reserved è bit, con un valore predefinito .0

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Abilita o disabilita la funzionalità che consente di invalidare uno snapshot. @force_invalidate_snapshot è bit, con il valore predefinito 0.

  • 0 specifica che le modifiche apportate all'articolo di merge non causano l'invalidità dello snapshot.

  • 1 significa che le modifiche apportate all'articolo di merge potrebbero causare l'invalidità dello snapshot e, in tal caso, un valore di 1 concede l'autorizzazione per il nuovo snapshot.

[ @force_reinit_subscription = ] force_reinit_subscription

Riconosce che l'eliminazione dell'articolo potrebbe richiedere la reinizializzazione delle sottoscrizioni esistenti. @force_reinit_subscription è bit, con un valore predefinito .0

  • 0 specifica che l'eliminazione dell'articolo non comporta la reinizializzazione della sottoscrizione.

  • 1 significa che l'eliminazione dell'articolo causa la reinizializzazione delle sottoscrizioni esistenti e concede l'autorizzazione per la reinizializzazione della sottoscrizione.

[ @ignore_merge_metadata = ] ignore_merge_metadata

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_dropmergearticle viene usato nella replica di tipo merge. Per altre informazioni sull'eliminazione di articoli, vedere Aggiungere articoli a ed eliminare articoli da pubblicazioni esistenti.

L'esecuzione sp_dropmergearticle di per eliminare un articolo da una pubblicazione non rimuove l'oggetto dal database di pubblicazione o dall'oggetto corrispondente dal database di sottoscrizione. Utilizzare DROP <object> per rimuovere questi oggetti manualmente, se necessario.

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o il ruolo predefinito del database db_owner possono eseguire sp_dropmergearticle.

Esempi

Questo articolo richiede il AdventureWorks2022 database di esempio, che è possibile scaricare dalla home page degli esempi di Microsoft SQL Server e dei progetti della community.

R. Rimuovere articoli da una pubblicazione di tipo merge

USE [AdventureWorks2022];
GO

DECLARE @publication AS SYSNAME;
DECLARE @article1 AS SYSNAME;
DECLARE @article2 AS SYSNAME;

SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article1 = N'SalesOrderDetail';
SET @article2 = N'SalesOrderHeader';

EXEC sp_dropmergearticle @publication = @publication,
    @article = @article1,
    @force_invalidate_snapshot = 1;

EXEC sp_dropmergearticle @publication = @publication,
    @article = @article2,
    @force_invalidate_snapshot = 1;
GO
USE [AdventureWorks2022];
GO

DECLARE @publication AS SYSNAME;
DECLARE @table1 AS SYSNAME;
DECLARE @table2 AS SYSNAME;
DECLARE @table3 AS SYSNAME;
DECLARE @salesschema AS SYSNAME;
DECLARE @hrschema AS SYSNAME;
DECLARE @filterclause AS NVARCHAR(1000);

SET @publication = N'AdvWorksSalesOrdersMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesOrderHeader';
SET @table3 = N'SalesOrderDetail';
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Drop the merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_dropmergefilter @publication = @publication,
    @article = @table3,
    @filtername = N'SalesOrderDetail_SalesOrderHeader',
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

-- Drop the merge join filter between Employee and SalesOrderHeader.
EXEC sp_dropmergefilter @publication = @publication,
    @article = @table2,
    @filtername = N'SalesOrderHeader_Employee',
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

-- Drop the article for the SalesOrderDetail table.
EXEC sp_dropmergearticle @publication = @publication,
    @article = @table3,
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

-- Drop the article for the SalesOrderHeader table.
EXEC sp_dropmergearticle @publication = @publication,
    @article = @table2,
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

-- Drop the article for the Employee table.
EXEC sp_dropmergearticle @publication = @publication,
    @article = @table1,
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;
GO