当一个DBA离职时,如何清除掉数据库里属于他的那些“东西” (job所有者更新)

一般DBA的帐号权限都很高(废话)

DBA离职以后。删除帐号也几乎也是肯定的

这里会涉及一个问题。

原来由他新建或还原的数据库所有者可能是他的帐号

部分数据库作业所有者也是他的帐号

此时如果在各服务器上批量DROP  LOGIN 后会有潜在风险(事实上证明,数据库还是可用,但是作业会有权限出错)

需要将这些数据库的对像所有者改回来(一般改成 'SA')

分享一段脚本,用于批量替换特定用户的数据库作业为 'sa'

用这个脚本在所有服务器上跑一遍,以后就可以放心DROP LOGIN了

 

复制代码
--可以用这个先查一遍。
select a.*,b.name from
( 
select * from msdb.dbo.sysjobs where owner_sid<>'0x01'
) a
left join master.sys.syslogins b on a.owner_sid=b.sid
where b.name  is null or b.name like '%这里换成将要删除的帐号%'



--这一段是正式替换的
declare @job_id varchar(255)
select a.job_id into #ttt from
( 
select name,[enabled],owner_sid,job_id from msdb.dbo.sysjobs where owner_sid<>'0x01'
) a
left join master.sys.syslogins b on a.owner_sid=b.sid
where b.name  is null or b.name like '%这里换成将要删除的帐号%'
while (select count(*) from #ttt)>0
begin
select top 1 @job_id=job_id from #ttt order by 1 asc
declare @sql varchar(500)
select @sql = 'EXEC msdb.dbo.sp_update_job @job_id=N'''+@job_id+''', @owner_login_name=N''sa'''
print (@sql)
exec (@sql)
delete from #ttt where job_id=@job_id
end 
truncate table #ttt
drop table #ttt
 
复制代码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值