1

実行時に特定のデータベースに情報を保存するトリガーを任意のデータベースに設定しようとしています。ただし、そのデータベースへの明示的なアクセス権を持たないユーザーによってトリガーがトリガーされた場合、トリガーの実行は失敗することがわかりました。

私はこれを使ってこれを回避したいと思っていました:

CREATE TRIGGER [myTrigger] 
on database
with execute as 'UserWithPermissions'

しかし、それもうまくいかないようです...これが可能かどうか知っている人はいますか? 任意のポインタをいただければ幸いです。ありがとう。

4

1 に答える 1

0

MSSQL管理で、DB名=>セキュリティ=>ユーザーに移動し、ユーザーがアクセスできることを確認します。また、Windowsネットワーク認証は、他のマシンからプロシージャを実行するときに非常に役立ちます

- 編集 -

あなたが欲しいものは「EXECUTEAS」と呼ばれていると思います。

CREATE PROCEDURE dbo.usp_Demo
WITH EXECUTE AS 'SqlUser1'
AS
SELECT user_name(); -- Shows execution context is set to SqlUser1.
EXECUTE AS CALLER;
SELECT user_name(); -- Shows execution context is set to SqlUser2, the caller of the    module.
REVERT;
SELECT user_name(); -- Shows execution context is set to SqlUser1.
GO
于 2012-09-21T02:00:01.693 に答える