9

SQL Server内でアクセス許可を設定して、アプリケーションのログイン/ロールがを使用して電子メールを送信できるようにする方法を知りたいのですがmsdb.dbo.sp_send_dbmail

MyUserロールのメンバーであるユーザーであるデータベースMyDbがありますAppRolemyProcを呼び出すストアドプロシージャがありますmsdb.dbo.sp_send_dbmailmyProcログイン中に実行するsaとすべて正常に動作しますが、ログイン中に実行するとMyUserエラーが発生します。

メッセージ229、レベル14、状態5、プロシージャsp_send_dbmail、1行
目オブジェクト'sp_send_dbmail'、データベース'msdb'、スキーマ'dbo'に対するEXECUTE権限が拒否されました。

私のデータベースにはTRUSTWORTHYONがないため、EXECUTE ASを使用して別のユーザーになりすますことはできないと思います。たとえば、EXECUTE AS OWNERでmyProcを作成します...(MSDNリファレンス

したがって、ユーザーをmsdb内のユーザーにする必要があると思いますが、これをロールレベルで行うことはできますか、それとも各データベースユーザーをmsdb内のユーザーにする必要がありますか?

私が使用しているデータベースメールプロファイルはパブリックに設定されているので、これはプロファイルのアクセス許可に関連しているとは思いません。

4

4 に答える 4

3

EXECUTE ASを使用してプロシージャに署名してから、署名証明書を使用してでEXECUTE権限を付与できますmsdbアクティブ化されたプロシージャから別のデータベースのプロシージャを呼び出す、および証明書を使用したプロシージャへの署名を参照してください。

于 2011-04-06T20:44:09.703 に答える
2

MyUserにMSDBへのパブリックアクセスを許可してから、sp_send_dbmailprocでの実行アクセスをそのユーザーに許可できるはずです。ユーザーを自分で追加するか、MSDBでカスタムロールを作成して、sp_send_dbmailへのexecアクセスを必要とするすべてのユーザーを追加できます。

于 2011-04-06T18:08:17.133 に答える
1

Microsoftによると、ユーザーに「msdbデータベースのDatabaseMailUserデータベースの役割」に対するアクセス許可を与える必要があります。

于 2011-11-21T16:56:13.800 に答える
1

データベースに役割を与える必要があります->databaseusermailuserRole

ここに画像の説明を入力してください

于 2016-11-24T14:26:58.977 に答える