本文主要讲述sql server 2005 维护计划无法删除问题(sql server 2005 maintnance plan can not delete),以下为全文: 一台要改ip和主机名的数据库,只把数据库instance修改了,忘记把维护计划删除了等ip和主机名改好重启后,维护计划无法删除了。 原因是这
本文主要讲述sql server 2005 维护计划无法删除问题(sql server 2005 maintnance plan can not delete),以下为全文:
一台要改ip和主机名的数据库,只把数据库instance修改了,忘记把维护计划删除了等ip和主机名改好重启后,,维护计划无法删除了。 原因是这些计划是原来连接上的oldsvr@usr-plans. 那怎么办呢!
1。先把原数据库连接干掉:
登陆ms sql server management studio(新host),在 视图(view[en]/表示[jp])里的,已登陆服务器(r)调出来,然后把旧host连接删掉
2。保存以下sql,在query里执行一下:
不知道其他版本的mssql可行否,我试验成功的是mssql2005,执行后请刷新下维护计划tab, 就发现已经删除了原主机名下的维护计划。
--delete maintanace plan after chghostname
use [msdb]
set nocount on
begin tran
declare @subplanname varchar(200)
set @subplanname='subplan_1'
--get constraint foreign key columns
declare @subplan_id varchar(100),@job_id varchar(100)
,@msx_job_id varchar(100),@schedule_id varchar(100)
select @job_id=job_id,@msx_job_id=msx_job_id,
@subplan_id=subplan_id from sysmaintplan_subplans where subplan_name=@subplanname
--delete record by order
if (@subplan_id is not null and @subplan_id<>'')
delete from sysmaintplan_log where subplan_id=@subplan_id
if (@subplanname<>'' and @subplanname is not null)
delete from sysmaintplan_subplans where subplan_name=@subplanname
if (@schedule_id is not null and @schedule_id <>'')
delete from sysschedules where schedule_id=@schedule_id
if (@job_id is not null and @job_id<>'')
delete from sysjobs where job_id=@job_id
--after above, you can still see these god damn maintnance plan in that tab
--now use code below to refresh the msdb view
delete
from msdb.dbo.sysmaintplan_plans
commit tran
if @@error<>0 print 'job failure ;-('
else print 'job down! ;-)'
set nocount off
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!