SQLServer的job执行powershell或cmdexe碰到权限问题时的解决方法

答案是使用凭据。

凭据在SQLServer2008以后的版本可用。

CREATE CREDENTIAL cmdshell_agent WITH IDENTITY = 'account', SECRET = 'password';
GO

SELECT * FROM sys.credentials

使用凭据创建代理

USE [msdb]
GO
EXEC msdb.dbo.sp_add_proxy @proxy_name=N'tst_Proxy',@credential_name=N'cmdshell_agent', @enabled=1
GO
EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'tst_Proxy', @subsystem_id=3
GO

还可以方便的配置代理

SQLServer的job执行powershell或cmdexe碰到权限问题时的解决方法

创建代理后就可以给job设定使用的代理

SQLServer的job执行powershell或cmdexe碰到权限问题时的解决方法