在应用程序的数据库存储过程中使用MSDB存储过程

时间:2017-01-06 21:14:49

标签: sql sql-server sql-server-2008-r2

这似乎是微不足道的,但我无法找到解决这个小问题的方法。

我正在尝试在应用程序的数据库中创建存储过程。此存储过程只执行在同一服务器上的SSMS中设置的作业(似乎是以编程方式执行这些作业的唯一方法)。

简单代码如下所示:

USE ApplicationsDatabase
GO
CREATE PROCEDURE [dbo].[procedure]
AS
BEGIN
    EXEC dbo.sp_start_job N'Nightly Download'
END

当按原样运行时,该过程在技术上已创建但由于无法找到“sp_start_job”而无法执行,因为它正在使用ApplicationsDatabase。如果我再次尝试创建该过程(删除以前创建的过程后)但将USE更新为MSDB,它会尝试将其添加到我无权执行的系统数据库中。最后,我尝试保留原始的create语句,但在过程中添加了USE MSDB(只是为了使用'sp_start_job'过程),但是错误的说USE语句不能放在过程中。

稍微思考一下这个问题后(我显然没有SQL数据库专家),我无法提出解决方案并决定征求同行的意见。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:4)

您必须完全限定该程序的路径。当然,你只能执行这个应用程序有权限。

试试这个:

USE ApplicationsDatabase
GO
CREATE PROCEDURE [dbo].[procedure]
AS
BEGIN
    EXEC msdb.dbo.sp_start_job N'Nightly Download'
END