私はおそらく明らかな何かを見逃しているか、これを間違った方法で行っていますが、ここにそれがあります:
SQL Server 2005でスカラーCLR関数を作成しました。これには1つのパラメーター(int
)があり、を返しますvarchar(2000)
。sysadminロールにアクセス許可を具体的に付与し、db_ownerを含む他のロールの実行を制限する方法を理解するのに問題があります。
パーミッションの付与と取り消しは、CLR関数でも他のUDFと同じだと思います。これは、アプリケーションのSecurityUserテーブルに格納されているパスワードを復号化するため、機密性の高い機能です。sysadminロールのメンバー以外は誰にも実行できないようにします。
データベースでは、最初にデータベースからsysadminに付与を試みました。
grant execute ON dbo.fCrossTabDx1 TO sysadmin
そしてもちろんエラーを受け取りました:
メッセージ15151、レベル16、状態1、行1
ユーザー'sysadmin'が存在しないか、権限がないため、ユーザー'sysadmin'が見つかりません。
db_securityadmin
次に、データベース内の役割であるにアクセス許可を付与しようとしましたが、エラーが発生しました。
メッセージ4617、レベル16、状態1、行1
特別な役割への、または特別な役割からのアクセス許可を付与、拒否、または取り消すことはできません。
ですから、可能であれば、誰かが私を正しい方向に導いてくれれば幸いです。
- db_owner権限を持つユーザーが関数を実行することを制限できますか?
- 関数に対してsysadminロールの実行権限のみを許可できますか?
ありがとう。