所用的存储过程取决于订阅所属的发布的类型。删除对快照发布或事务发布的请求订阅在订阅
服务器上,对订阅
数据库执行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再试一次就可以。
评论列表(0条)