为什么SQL Server不允许在配置后完全删除分发服务器?

Moh*_*lam 6 sql-server replication distribution sql-server-2008 database-replication

我使用向导和T-SQL在SQL Server 2008中配置了一个发行版,但之后我想删除它使用向导(右键单击复制并选择"禁用发布和发布...")或执行以下命令:其参数:

exec sp_dropdistributor @no_checks = 1 -- no new results with @ignore_distributor = 1
Run Code Online (Sandbox Code Playgroud)

将出现此错误:

Msq 21122,级别16,状态1,过程sp_dropdistributiondb第124行无法删除分发数据库'lobloblob',因为它当前正在使用中.

我没有发布任何东西,没有配置任何订阅但是给出了这个错误我该怎么办?

Bra*_*ams 9

试试这个:

SELECT spid FROM sys.sysprocesses WHERE dbid = db_id('distribution')

杀死spid并再试一次.现在它应该工作.


Moh*_*lam 6

我使用了以下脚本:

SELECT spid FROM sys.sysprocesses WHERE dbid = db_id('distribution')
Run Code Online (Sandbox Code Playgroud)

并发现当前会话的 session_id(包含分发配置脚本)不允许禁用分发,因此我建议使用此脚本终止正在运行的 spid 以删除分发:

use [master]
declare @spid varchar(10)
select @spid=spid from sys.sysprocesses where dbid = DB_ID('distribution')

while @@ROWCOUNTS <> 0
    exec ('KILL ' + @spid)

exec sp_dropdistributor @no_checks = 1
Run Code Online (Sandbox Code Playgroud)