回答:
ジョブを実行するストアドプロシージャを作成できます。を使用with execute as owner
して、データベース所有者としてストアドプロシージャを実行できます。そうすれば、ユーザー自身はにアクセス許可を必要としませんsp_start_job
。
create procedure dbo.DoYourJob
with execute as owner
as
exec sp_start_job @job_name = 'YourJob'
ユーザーDoYourJob
がジョブを開始できるように実行権限を付与します。
もちろん、ジョブの内容をプロシージャに入れて、それを実行する権限を付与することもできます。これにより、結果テキストの表示など、より多くの対話が可能になります。
with execute as 'loginname'
、それは機能しますか?
基本的に、アクセス許可が必要ですsp_start_job
(アクセス許可セクションを参照)。
ロールについては、「SQL Serverエージェントの固定データベースロール」で説明しています(上記からリンク)
編集、2012年1月
私が答えてから2年後の匿名のダウン投票の後...
質問を読んでください。それは言います
すべてのデータベースユーザーに実行を許可したい
それから
セキュリティについては心配していません
そしてまた
仕事に公共の許可を与える方法が見つかりません
以下のOPのコメントは質問と矛盾します
これにより、特定のユーザー(user1)が任意のSql Agentジョブを実行できます。
SQLAgentUserRoleおよびSQLAgentReaderRoleのメンバーは、自分が所有するジョブのみを開始できます。SQLAgentOperatorRoleのメンバーは、他のユーザーが所有しているジョブを含むすべてのローカルジョブを開始できます
USE [msdb]
GO
CREATE USER [user1] FOR LOGIN [user1]
GO
USE [msdb]
GO
ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [user1]
GO
同様に、オペレーターにSQL Serverエージェントタスクを手動で実行する権限を付与する必要があります。この投稿「 SQL Serverエージェント固定データベースロール」に従って、ロールSQLAgentOperatorRoleを付与しました。
この助けがあなたのケースを解決することを願っています。