同じSQL2008サーバー上に2つのデータベースがあり、1つのデータベースの複数のストアドプロシージャ(Aと呼ぶ)が別のデータベースのテーブルにアクセスする必要がありますB)。私は、AのSQLユーザーがAのプロシージャーを実行する権限を持っていることを確認しましたが、セキュリティを試すためにDENY ALL ON mytablename
も実行しました。 I上MYPROCを実行しているときにかかわらず、ダムのどこかにいる...データベースAのストアドプロシージャに対するアクセス許可が必要データベースBのテーブルから選択する
が、私はこのエラーを取得しています:ODBCドライバーエラーのため
のMicrosoft OLE DBプロバイダ '80040e09'
[Microsoft]の[ODBC SQL Serverドライバー] [SQLサーバー] SELECT権限がオブジェクト 'mytablename'、データベース 'B'、スキーマ 'dbo'で拒否されました。
私はGRANT SELECT
のテーブルにアクセスできましたが、これは実際に解決策ではありませんか?私はいずれかのデータベースのprocsがテーブルへのSELECTアクセスを持つことができます、ユーザーがテーブルから直接選択することができないようにしたいと思います。
データベースAを有する:
表 - mytablename
ユーザ - myuserA(ログインに連結されたのdb_datareaderのメンバー、いわゆる 'ボブ')
データベースBが有する:
PROC - MYPROC(これA..mytablenameから選択)
ユーザー - 同じログインボブ」にリンクされmyuserB(のdb_datareaderのメンバー、)
私たちは本当にDBAを必要と実現が、我々は2人の従業員しか持たない!
私はすべてのDENYのものを取り除き、再び始めなければならないようですね!ビューを使わずに私が望むものを達成する方法はありますか? –