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
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 di1
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
Gli esempi di codice Transact-SQL in questo articolo usano il AdventureWorks2022
database di esempio o AdventureWorksDW2022
, 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
B. Eliminare i filtri join di merge e gli articoli correlati
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