2016-12-15 17 views
0

私はDatabaseADatabaseBです。 DatabaseAUserAであり、DatabaseBUserBである。SQL Serverは別のデータベースからユーザーにEXECUTE権限を与えます

UserAUserBDatabaseBEXECUTEストアドプロシージャProcedureBへのアクセス権を持っている、DatabaseAEXECUTEスカラー関数FunctionAへのアクセス権を持っています。

ProcedureBは、FunctionAを使用していますUserBProcedureBを実行したときにそう、彼はエラー

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の中でFunctionAProcedureBに実行する方法はありますか?または、他の方法でUserBに実行許可を与えますか?

答えて

0

もうすぐです!このエラーメッセージは、UserBがDatabaseAに存在しないため、作成する必要があることを示しています。一度すれば、許可を与えることができ、すべてがうまくいくはずです。

+0

しかし、DatabaseAでUserBを作成すると、UserBはDatabaseBのUserBと同じユーザーになりますか? 「UserB(DatabaseBから)はUserB(DatabaseAから)と同じではないのですか?また、DatabaseAでUserBを作成する方法は?」CREATE USER UserB FOR LOGIN XYZ; ? – therko

+0

ユーザーはデータベーススコープのオブジェクトです。複数のデータベースで同じ名前のストアドプロシージャを使用できるように、複数のデータベースに同じ名前のユーザーを持つことができます。 UserBがDatabaseAのlogin XYZにマップされている場合、DatabaseBの同じマッピングが必要になります。 –

関連する問題