3

私はウィザードとT-SQLの両方を使用してSQL Server 2008のディストリビューションを設定しましたが、ウィザードを使用して削除する場合は(レプリケーションを右クリックし、[公開と配布を無効にする]そしてそのパラメータなし:SQL Serverで構成後にディストリビュータを削除することができないのはなぜですか?

exec sp_dropdistributor @no_checks = 1 -- no new results with @ignore_distributor = 1 

このエラーが提示されるだろう:それは ですので

MSQ 21122、レベル16、状態1、プロシージャsp_dropdistributiondbライン124 は、ディストリビューションデータベース 'lobloblob' を削除することはできません現在使用中です。

サブスクリプションを設定していませんでしたが、このエラーが発生しました どうすればよいですか?

答えて

3

はこれを試してみてください。今それは動作するはずです。

+0

sqlコマンドを使用してspidを削除するにはどうすればよいですか? –

1

私の推測では、ディストリビューションクリーンアップジョブが問題を引き起こしていると考えられます。ただし、SSMSの1つのウィンドウでsp_dropdistributorを実行する準備をして、ウィンドウのsession_idに注意してください。もう1度、select session_id from sys.dm_os_waiting_tasks where blocked_session_id = <spid from window 1>を実行する準備をします。ウィンドウ1に戻り、procを実行して、ウィンドウ2に戻り、selectを実行します。データベースのドロップをブロックしているセッションのsession_idが表示されます。 SPIDを強制終了し、再試行してください

sys.sysprocesses DBID = DB_ID( '分布')FROM SELECT SPID:

0

私は次のスクリプトを使用:

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

をして(配布設定スクリプトが含まれている)、現在のセッションのセッション_イドが私はSPIDを実行している殺すためにこのスクリプトを示唆して配布を無効にすることができないことが分かっドロップ分布:

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

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

exec sp_dropdistributor @no_checks = 1 
関連する問題