私はDatabaseA
とDatabaseB
です。 DatabaseA
はUserA
であり、DatabaseB
はUserB
である。SQL Serverは別のデータベースからユーザーにEXECUTE権限を与えます
UserA
はUserB
はDatabaseB
でEXECUTE
ストアドプロシージャProcedureB
へのアクセス権を持っている、DatabaseA
にEXECUTE
スカラー関数FunctionA
へのアクセス権を持っています。
今ProcedureB
は、FunctionA
を使用していますUserB
がProcedureB
を実行したときにそう、彼はエラー
The EXECUTE permission was denied on the object FunctionA
を取得します。しかし、私は彼に
GRANT EXECUTE ON DatabaseA.schema.FunctionA TO UserB
と権限を付与しようとしているとき、私は別のエラーが表示されます。
Cannot find the user UserB, because it does not exist or you do not have permission
これを修正するには?特権UserA
の中でFunctionA
をProcedureB
に実行する方法はありますか?または、他の方法でUserB
に実行許可を与えますか?
しかし、DatabaseAでUserBを作成すると、UserBはDatabaseBのUserBと同じユーザーになりますか? 「UserB(DatabaseBから)はUserB(DatabaseAから)と同じではないのですか?また、DatabaseAでUserBを作成する方法は?」CREATE USER UserB FOR LOGIN XYZ; ? – therko
ユーザーはデータベーススコープのオブジェクトです。複数のデータベースで同じ名前のストアドプロシージャを使用できるように、複数のデータベースに同じ名前のユーザーを持つことができます。 UserBがDatabaseAのlogin XYZにマップされている場合、DatabaseBの同じマッピングが必要になります。 –