如何生成sql作业及其所有者列表?我还希望能够为SSIS包生成此列表。
由于
答案 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
}