我们的开发人员需要能够从他们的 .Net 代码启动 SQL Server 代理作业。我知道我可以调用msdb..sp_start_job来做到这一点,但我不想让一般用户帐户直接访问运行作业。
我想要做的是使用 WITH EXECUTE AS 子句在应用程序的数据库中创建一个存储过程来模拟代理帐户。我们的程序是:
CREATE PROCEDURE dbo.StartAgentJob
WITH EXECUTE AS 'agentProxy'
AS
BEGIN
EXEC msdb.dbo.sp_start_job N'RunThisJob';
END
Run Code Online (Sandbox Code Playgroud)
但是,当我们运行它时,我们会收到以下消息:
The EXECUTE permission was denied on the object 'sp_start_job', database 'msdb', schema 'dbo'.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?这甚至是在 SQL2005 中执行此操作的最佳方法吗?
我们的一个内部应用程序有一个 SQLCLR 程序集,它当前遇到了问题。开发人员在使用存储在我们的源代码控制系统中的版本重新创建问题时遇到问题,因此他怀疑可能已经发布了一些未上传到源代码控制的代码。有没有办法将 SQLCLR 程序集提取到 .dll 文件中,以便他可以对其进行逆向工程以进行分析?