如何生成SQL Server作业列表及其所有者

我将如何去生成一个SQL作业列表和他们的所有者? 我也想能够为SSIS包生成这个列表。

谢谢

尝试这个

工作

select s.name,l.name from msdb..sysjobs s left join master.sys.syslogins l on s.owner_sid = l.sid 

 select s.name,l.name from msdb..sysssispackages s left join master.sys.syslogins l on s.ownersid = l.sid 

最好使用SUSER_SNAME(),因为当服务器上没有相应的login时,与syslogins的连接将不匹配

 SELECT s.name , SUSER_SNAME(s.owner_sid) AS owner FROM msdb..sysjobs s ORDER BY name 

有个同事告诉我这个存储过程

使用msdb

EXEC dbo.sp_help_job

如果你没有访问sysjobs表(某人elses服务器等),你可能已经或被允许访问sysjobs_view

SELECT * from msdb..sysjobs_view s left join master.sys.syslogins l on s.owner_sid = l.sid

要么

SELECT *,SUSER_SNAME(s.owner_sid)AS所有者,来自msdb..sysjobs_view s

有一个简单的方法可以通过PowerShell从多个实例获取作业所有者信息:

在PowerShell ISE中运行脚本:

加载SQL Powerhell SMO和命令:

 Import-Module SQLPS -disablenamechecking 

手动添加服务器列表(这将生成一个数组列表):

 $SQLServers = "SERVERNAME\INSTANCE01","SERVERNAME\INSTANCE02","SERVERNAME\INSTANCE03"; $SysAdmins = $null; foreach($SQLSvr in $SQLServers) { ## - Add Code block: $MySQL = new-object Microsoft.SqlServer.Management.Smo.Server $SQLSvr; DIR SQLSERVER:\SQL\$SQLSvr\JobServer\Jobs| FT $SQLSvr, NAME, OWNERLOGINNAME -Auto ## - End of Code block }