我已经编写了一个脚本来删除和创建代理,但是得到了以下错误
无法删除代理(7)。它至少被一个职务步骤使用。首先为所有作业步骤更改此代理。
USE [msdb]
GO
-- Drop the proxy if it already exists
IF EXISTS (SELECT 1 FROM msdb.dbo.sysproxies WHERE name = 'CoreRefData')
BEGIN
EXEC msdb.dbo.sp_delete_proxy @proxy_name = N'CoreRefData'
END
GO
EXEC msdb.dbo.sp_add_proxy @proxy_name=N'CoreRefData',@credential_name=N'CoreRefData',
@enabled=1
GO
EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'CoreRefData', @subsystem_id=11
GO
EXEC dbo.sp_grant_login_to_proxy
@login_name = N'INT\svc-w-corerefdata-de',
@proxy_name = N'CoreRefData' ;
GO
发布于 2017-08-30 18:06:03
参考资料:
你的问题是:
如果作业步骤引用指定的代理,则无法删除代理,存储过程失败。
您应该能够使用这个查询来获取proxy_id
。
SELECT * FROM sysproxies WHERE NAME = 'CoreRefData'
然后运行此命令,查看哪些作业使用相同的代理。将proxy_id
从1更改为从上述查询中获得的任何内容。如果此查询不返回任何记录,则最好删除代理,但如果删除记录,您的删除将失败,如上面的Microsoft文档所解释的那样。
USE msdb;
GO
SELECT sysjobsteps.job_id,
sysjobs.NAME AS 'JobName',
sysjobsteps.step_id,
sysjobsteps.step_name,
sysjobsteps.subsystem,
sysjobsteps.last_run_date,
sysjobsteps.proxy_id
--, sysjobsteps.step_uid
,
sysproxies.NAME AS 'ProxyName'
FROM sysjobsteps
LEFT JOIN dbo.sysproxies
ON sysjobsteps.proxy_id = sysproxies.proxy_id
LEFT JOIN dbo.sysjobs
ON sysjobsteps.job_id = sysjobs.job_id
WHERE sysjobsteps.proxy_id = 1
您可以在这里做一些事情(目标是将代理与任何作业步骤断开关联):
一旦完成,您应该能够运行您的脚本没有任何错误。
发布于 2019-02-21 19:11:34
在我的案子里解决信息..。
“无法删除代理(1)。它至少由一个职务步骤使用“
..。我必须更改“允许以下子系统”的属性,并删除Powershell。
https://dba.stackexchange.com/questions/184740
复制相似问题