スケジュールされたタスクは、コマンド ライン スクリプトを介してジオコーディングを行うため、Microsoft SQL Server に保存されている一部のデータ (ジオコーディングするアドレス) にアクセスする必要があります。
このデータはスキーマAに属し、複数のテーブルのデータで構成されています。
私は考えました
- SQL Server ログイン、スキーマ、およびユーザーBの作成
- A.TABLE_XおよびA.TABLE_Yから選択するビューA.VIEW1の作成
- A.VIEW1 TO Bに対するSELECT権限の付与
ビューは他のテーブルを参照するため、A.VIEW1からBを選択すると、権限エラーがスローされます。
オブジェクト ' A.TABLE_X '、データベース '...'、スキーマ '...'に対する SELECT 権限が拒否されました。
A.TABLE_X、A.TABLE_Y、... TO BでGRANT SELECT に代わるものはありますか? そうすれば、Bはそれらのテーブルからすべてのデータを読み取ることができるからですよね?
BのSQLサーバー資格情報はファイルシステムまたはタスクスケジューラにプレーンテキストで保存されるため、Bにこれを許可したくありません。(代替手段はありますか?)
A.TABLE_XとA.TABLE_Yには、銀行口座番号などの顧客関連のデータが含まれています。 GRANT を特定の列に制限することはできますが、それでもこの考えは嫌いです。
別の方法は、ストアドプロシージャ A.PROC_FILLで前に一時テーブルを埋めることですが、EXEC をBに付与するだけでは十分ではありませんか?