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

时间:2010-09-21 13:09:22

标签: sql-server

如何生成sql作业及其所有者列表?我还希望能够为SSIS包生成此列表。

由于

5 个答案:

答案 0 :(得分:60)

试试这个

<强>工作

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

答案 1 :(得分:34)

使用SUSER_SNAME()会更好,因为当服务器上没有相应的登录时,syslogins的连接将不匹配

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

答案 2 :(得分:12)

一位同事告诉我这个存储过程...

USE msdb

EXEC dbo.sp_help_job

答案 3 :(得分:4)

如果您无法访问sysjobs表(某些服务器等),您可能已被允许或被允许访问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 owner
 from  msdb..sysjobs_view s 

答案 4 :(得分:1)

有一种简单的方法可以获得乔布斯&#39; 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
}