2017-01-06 3 views
1

これは簡単ではないようですが、私はこの小さな問題の解決方法を考え出すことができませんでした。アプリケーションのデータベースストアドプロシージャでMSDBストアドプロシージャを使用する

アプリケーションのデータベースにストアドプロシージャを作成しようとしています。このストアドプロシージャは、同じサーバー上のSSMSにセットアップされたジョブを実行するだけです(これらのジョブをプログラムで実行する唯一の方法と思われる)。

簡単なコードを以下に示します。そのまま実行したとき

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

、手順は、技術的に作成されますが、原因、それはApplicationsDatabaseを使用しているので、それはsp_start_job 'を見つけることができないに実行することはできません。私がプロシージャを作成しようとすると(以前に作成したものを削除した後)、USEをMSDBに更新すると、そのシステムデータベースにUSDBを追加しようとします。最後に、元のcreateステートメントを保持しようとしましたが、プロシージャ内にUSE MSDBを追加しましたが(単に 'sp_start_job'プロシージャを使用します)、プロシージャ内にUSEステートメントを置くことはできないというエラーになります。

(私は明らかにSQLデータベースの専門家ではない)少し問題を考えた後、私は解決策を思い付くことができず、私の同僚の助言を求めることに決めました。どんな助けでも大変感謝します。ありがとう!

答えて

3

手順のパスを完全に修飾する必要があります。もちろん、これはアプリケーションにアクセス許可がある場合にのみ実行できます。

これを試してみてください:

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

私はこれを実現しているはずですが、それは長い一日でした。お返事ありがとうございました。ご返信ありがとうございます。これは本当に私の問題を解決しました。 – TheDirtyJenks

関連する問題