The*_*nks 2 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
Run Code Online (Sandbox Code Playgroud)
按原样运行时,该过程在技术上已创建但无法执行,因为它无法找到“sp_start_job”,因为它正在使用 ApplicationsDatabase。如果我尝试再次创建该过程(在删除之前创建的之后)但将 USE 更新为 MSDB,它会尝试将其添加到我无权执行的系统数据库中。最后,我试图保留原始的 create 语句,但在过程中添加了 USE MSDB(只是为了使用“sp_start_job”过程),但它会错误地说 USE 语句不能放置在过程中。
想了想(我明明不是SQL数据库专家),想不出解决办法,决定请教各位同行。任何帮助将不胜感激,谢谢!
您必须完全限定程序的路径。当然,你只能执行这个是应用程序有权限。
尝试这个:
USE ApplicationsDatabase
GO
CREATE PROCEDURE [dbo].[procedure]
AS
BEGIN
EXEC msdb.dbo.sp_start_job N'Nightly Download'
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1042 次 |
| 最近记录: |