当一个DBA离职时,如何清除掉数据库里属于他的那些“东西”
2011-11-24 16:59
519 查看
一般DBA的帐号权限都很高(废话)
DBA离职以后。删除帐号也几乎也是肯定的
这里会涉及一个问题。
原来由他新建或还原的数据库所有者可能是他的帐号
部分数据库作业所有者也是他的帐号
此时如果在各服务器上批量DROP LOGIN 后会有潜在风险(事实上证明,数据库还是可用,但是作业会有权限出错)
需要将这些数据库的对像所有者改回来(一般改成 'SA')
分享一段脚本,用于批量替换特定用户的数据库作业为 'sa'
用这个脚本在所有服务器上跑一遍,以后就可以放心DROP LOGIN了
http://www.580top.com/html/201203/dba_17.htm
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
http://www.580top.com/html/201203/dba_17.htm
相关文章推荐
- 当一个DBA离职时,如何清除掉数据库里属于他的那些“东西” (job所有者更新)
- 【IT观察】作为一个DBA,如何选择数据库
- 如何学习数据库,从而成为一个DBA
- 如何从若干个数据库中查找某一个表属于哪个数据库
- 如何查询一个数据库表中某字段相同记录的数据
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- ruby如何查找一个方法属于哪个类
- 如何通过使用 ADOX 和 VisualBasic.NET 创建一个 MicrosoftAccess 数据库
- SQL 数据库 学习 006 如何设置一个用户名和密码
- [MySQL FAQ]系列 -- 如何为一个数据库指定字符集
- How to Become an Exceptional DBA(如何成为一个优秀的DBA)
- tppabs到底是什么东西?对代码有何影响?如何清除tppabs标签
- 如何从数据库删除一个表
- 如何配置一个安全稳定的SQL SERVER的数据库.txt[转]
- 阿里云数据库实例的一个db被开发人员删除了 如何恢复
- 如何从数据库中查询出多个结果集或一个结果集
- 如何用VB.Net创建一个三层的数据库应用程序(转贴)
- 如何用一个数据库的数据去更新另一个数据库的内容(续)
- 如何查询一个库文件属于哪个rpm包
- sql server 2008 中如何将一个数据库中已建好的表导入到另一个数据库中