如何查找哪些 SQL 作业正在使用特定帐户作为代理?

Jam*_*ins 5 security sql-server proxy

我们已发现一些不恰当地使用代理帐户的服务器。其中一些服务器具有多个凭证和大量作业。不需要在每个步骤上手动检查作业属性 GUI 的“运行方式”。

如何快速识别哪些作业(如果有)包含使用我们认为不适当的代理凭证的步骤?

我想查看与代理相关的帐户。以及使用代理的作业名称和步骤。

SQL 2008+

Jam*_*ins 5

我正在查看的服务器只有很少的凭据。虽然他们有多项工作,但只有少数工作使用 \xe2\x80\x9cRun As\xe2\x80\x9d 代理凭据。这是我使用的解决方案。

\n\n

第一个查询显示链接到代理的帐户(凭据身份)\n第二个查询显示哪些作业和步骤正在使用代理

\n\n
    -- Search Credentials (shows account for Name)\n\n    use msdb\n    select *\n    from sys.credentials\n\n    --Search Jobs where there is a 'Run As' proxy and get the name of that proxy\n\n    use msdb\n\n    select  sysjobsteps.job_id\n    , sysjobs.name as 'JobName'\n    , sysjobsteps.step_id\n    , sysjobsteps.step_name\n    , sysjobsteps.subsystem\n    , sysjobsteps.last_run_date\n    , sysjobsteps.proxy_id\n    --, sysjobsteps.step_uid\n    , sysproxies.name as 'ProxyName'\n\n\n    from sysjobsteps\n    left join dbo.sysproxies\n     on sysjobsteps.proxy_id = sysproxies.proxy_id\n    left join dbo.sysjobs\n     on sysjobsteps.job_id = sysjobs.job_id\n\n    where sysjobsteps.proxy_id > 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试了几种将 sys.credentials 加入 dbo.sysproxies 的方法。如果有多个凭证,则效果不佳。单独的询问满足了我的需求,所以我没有过多考虑连接。

\n