sys.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 relative alla sintassi Transact-SQL

Sintassi

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

I campioni di codice in questo articolo utilizzano il AdventureWorks2025 database di esempi di ORAdventureWorksDW2025, che puoi scaricare dal repository GitHub Azure Data SQL Samples Repository.

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

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

EXECUTE 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.
EXECUTE 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.
EXECUTE 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.
EXECUTE sp_dropmergearticle
    @publication = @publication,
    @article = @table3,
    @force_invalidate_snapshot = 1,
    @force_reinit_subscription = 1;

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

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