当一个DBA离职时,如何清除掉数据库里属于他的那些“东西” (job所有者更新)
2012-07-03 13:41
429 查看
一般DBA的帐号权限都很高(废话)
DBA离职以后。删除帐号也几乎也是肯定的
这里会涉及一个问题。
原来由他新建或还原的数据库所有者可能是他的帐号
部分数据库作业所有者也是他的帐号
此时如果在各服务器上批量DROP LOGIN 后会有潜在风险(事实上证明,数据库还是可用,但是作业会有权限出错)
需要将这些数据库的对像所有者改回来(一般改成 'SA')
分享一段脚本,用于批量替换特定用户的数据库作业为 'sa'
用这个脚本在所有服务器上跑一遍,以后就可以放心DROP LOGIN了
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
相关文章推荐
- 当一个DBA离职时,如何清除掉数据库里属于他的那些“东西”
- 如何从若干个数据库中查找某一个表属于哪个数据库
- 如何用一个数据库的数据去更新另一个数据库的内容(续)
- sql优化:从设计表结构开始(SQL Server中如何让数据库中某一个字段随时间自动更新?)
- 如何批量将一个文件夹下所有的SQL文件执行,更新到数据库
- Playframework - 如何解决两个JPA同时访问一个数据库但是不更新Model的id名字
- 如何用一个数据库的数据去更新另一个数据库的内容 (转)
- 如何用一个数据库的数据去更新另一个数据库的内容
- 【IT观察】作为一个DBA,如何选择数据库
- 如何学习数据库,从而成为一个DBA
- 如何用一个数据库的数据去更新另一个数据库的内容
- ThinkPHP如何判断一个更新操作是否成功
- 清除一个数据库里所有表的数据
- 如何快速的成为一个合格的Oracle DBA?(转自盖国强)
- 数据库如何创建一个完全一样的表
- 如何用T―SQL命令查询一个数据库中有哪些表?
- mysql如何在一个表中插入数据的同时,更新另一个表的数据?
- 如何用c#来制作一个activeX控件或类似的东西
- mongodb如何实现更新一个字段的值为另外一个字段的值?
- 资源共享(如何用DataSet更新数据库)