如何删除请求订阅(复制 Transact

如何删除请求订阅(复制 Transact,第1张

所用的存储过程取决于订阅所属的发布的类型。删除对快照发布或事务发布的请求订阅在订阅服务器上,对订阅数据库执行sp_droppullsubscription (Transact-SQL)。 指定 @publication、@publisher 和@publisher_db。在发布服务器上,对发布数据库执行 sp_dropsubscription (Transact-SQL)。 指定 @publication 和@subscriber。将 @article 的值指定为 all。 (可选)如果无法访问分发服务器,将 @ignore_distributor 的值指定为 1,以便在不删除分发服务器上相关对象的情况下删除订阅。删除对合并发布的请求订阅在订阅服务器上,对订阅数据库执行 sp_dropmergepullsubscription (Transact-SQL)。 指定 @publication、@publisher 和@publisher_db。在发布服务器上,对发布数据库执行 sp_dropmergesubscription (Transact-SQL)。 指定 @publication、@subscriber 和@subscriber_db。将 @subscription_type 的值指定为 pull。 (可选�SQL -- 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". -- This is the batch executed at the Subscriber to drop -- a pull subscription to a transactional publication. DECLARE @publication AS sysnameDECLARE @publisher AS sysnameDECLARE @publicationDB AS sysnameSET @publication = N'AdvWorksProductTran'SET @publisher = $(PubServer)SET @publicationDB = N'AdventureWorks2008R2'USE [AdventureWorks2008R2Replica] EXEC sp_droppullsubscription @publisher = @publisher, @publisher_db = @publicationDB, @publication = @publicationGO TSQL -- 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". -- This batch is executed at the Publisher to remove -- a pull or push subscription to a transactional publication. DECLARE @publication AS sysnameDECLARE @subscriber AS sysnameSET @publication = N'AdvWorksProductTran'SET @subscriber = $(SubServer)USE [AdventureWorks2008R2] EXEC sp_dropsubscription @publication = @publication, @article = N'all', @subscriber = @subscriberGO 以下示例删除对合并发布的请求订阅。TSQL -- 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". -- This batch is executed at the Subscriber to remove -- a merge pull subscription. DECLARE @publication AS sysnameDECLARE @publisher AS sysnameDECLARE @publication_db AS sysnameSET @publication = N'AdvWorksSalesOrdersMerge'SET @publisher = $(PubServer)SET @publication_db = N'AdventureWorks2008R2'USE [AdventureWorks2008R2Replica] EXEC sp_dropmergepullsubscription @publisher = @publisher, @publisher_db = @publication_db, @publication = @publicationGO TSQL -- 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". -- This batch is executed at the Publisher to remove -- a pull or push subscription to a merge publication. DECLARE @publication AS sysnameDECLARE @subscriber AS sysnameDECLARE @subscriptionDB AS sysnameSET @publication = N'AdvWorksSalesOrdersMerge'SET @subscriber = $(SubServer)SET @subscriptionDB = N'AdventureWorks2008R2Replica'USE [AdventureWorks2008R2] EXEC sp_dropmergesubscription @publication = @publication, @subscriber = @subscriber, @subscriber_db = @subscriptionDBGO 请参阅任务如何删除推送订阅(复制 Transact-SQL 编程)如何删除请求订阅(RMO 编程)如何创建请求订阅(复制 Transact-SQL 编程)如何创建推送订阅(复制 Transact-SQL 编程)概念订阅发布

以下方法均为

事务复制

--PUSH方式

1、删除单个的发布

复制-->

本地发布-->

右击-->

删除,如下图,然后再把对应的订阅服务器删除掉,或者等待执行:sp_MSdistribution_cleanup

的JOB(分发清除:

distribution)默认订阅72小时失效之后自动删除。

2、删除全部的发布:

复制-->

右击

-->

禁用发布和分发,如下图,这个会同时的把分发服务器的配置清掉,需要重新配置的哦。。

其实只是执行了一个脚本

use

[master]

exec

sp_dropdistributor

@no_checks

=

1

GO

/*

[

@no_checks=]

no_checks

指示在删除分发服务器之前是否检查有无依赖对象。no_checks

的数据类型为

bit,默认值为

0。

如果为

0,则

sp_dropdistributor

将执行检查,以确保除分发服务器以外的所有发布和分发对象都已删除。

如果为

1,则

sp_dropdistributor

将在卸载分发服务器之前删除所有发布和分发对象。

[

@ignore_distributor=]

ignore_distributor

指示是否在未连接到分发服务器的情况下执行此存储过程。ignore_distributor

的数据类型为

bit,默认值为

0。

如果为

0,则

sp_dropdistributor

将连接到分发服务器,并删除所有复制对象。

如果

sp_dropdistributor

无法连接到分发服务器,则存储过程将失败。

如果为

1,则不与分发服务器建立连接,并且不删除复制对象。

如果分发服务器正在卸载或持久脱机,才使用它。

直到分发服务器在未来某个时间重新安装之后,才会删除分发服务器中的该发布服务器的对象。

*/

--注意:

sp_dropdistributor

用于所有类型的复制。

不过不是建议直接的界面操作。

3、对于某些时候可能删除不掉,这个时候可以直接trace一下,然后把进程杀掉

4、或者对于附加的数据库不注意可能会出现发布的错误,你也删除不掉。会报下面的错误。

无法作为数据库主体执行,因为主体

"dbo"

不存在、无法模拟这种类型的主体,或您没有所需的权限。

已将数据库上下文更改为

'AdventureWorks2008'。

(Microsoft

SQL

Server,错误:

15517)

这个时候可以查一下数据库属性->文件->所有者如果没有话,填个sa再试一次就可以。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/595756.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-09
下一篇2023-07-09

发表评论

登录后才能评论

评论列表(0条)

    保存