博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
当一个DBA离职时,如何清除掉数据库里属于他的那些“东西” (job所有者更新)...
阅读量:5290 次
发布时间:2019-06-14

本文共 1078 字,大约阅读时间需要 3 分钟。

来自与:

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

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

这里会涉及一个问题。

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

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

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

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

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

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

 

--可以用这个先查一遍。select a.*,b.name from( select * from msdb.dbo.sysjobs where owner_sid<>'0x01') aleft join master.sys.syslogins b on a.owner_sid=b.sidwhere 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') aleft join master.sys.syslogins b on a.owner_sid=b.sidwhere b.name  is null or b.name like '%这里换成将要删除的帐号%'while (select count(*) from #ttt)>0beginselect top 1 @job_id=job_id from #ttt order by 1 ascdeclare @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_idend truncate table #tttdrop table #ttt

转载于:https://www.cnblogs.com/yingtaowz/articles/3300652.html

你可能感兴趣的文章
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
学android:直接用jdk来helloworld
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
Spark基础脚本入门实践3:Pair RDD开发
查看>>
HDU4405--Aeroplane chess(概率dp)
查看>>
python使用easyinstall安装xlrd、xlwt、pandas等功能模块的方法
查看>>
CS0103: The name ‘Scripts’ does not exist in the current context解决方法
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>
窥视SP2010--第一章节--SP2010开发者路线图
查看>>
MVC,MVP 和 MVVM 的图示,区别
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>