TheDirtyJenks
TheDirtyJenks

Reputation: 449

Using MSDB stored procedures in application's database stored procedure

This seems like it would be trivial, but I have not been able to come up with a solution to this small problem.

I am attempting to create a stored procedure in my application's database. This stored procedure just executes a job that has been set up in the SSMS on the same server (seemed to be the only way to programmatically execute these jobs).

The simple code is shown below:

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

When ran as is, the procedure technically gets created but cannot be executed due to it not being able to find the 'sp_start_job' since it is using the ApplicationsDatabase. If I try to create the procedure again (after deleting previously created) but updating the USE to MSDB, it tries to add it to that system database for which I do not have permissions to do. Finally, I attempted to keep the original create statement but added the USE MSDB within the procedure (just to use the 'sp_start_job' procedure), but it would error saying USE statements cannot be placed within procedures.

After pondering on the issue for a little (I'm obviously no SQL database expert), I could not come up with a solution and decided to solicit the advice of my peers. Any help would be greatly appreciated, thanks!

Upvotes: 2

Views: 1783

Answers (1)

Raj More
Raj More

Reputation: 48016

You will have to fully qualify the path to the procedure. Of course, you can only execute this is the application has permissions.

Try this:

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

Upvotes: 5

Related Questions