3

私は古典的なaspレコードセットを介して次のクエリを実行しようとしています-

SQL = "Select P_Name as P_Name, P_Description as P_Description 
       from L_PagePermission 
       inner join A_Permission on p_permissionID = pp_PermissionID 
       inner join A_Page on P_PageID = PP_PageID 
       where P_PageID = 85 
       order by p_Name"   

権限の問題に遭遇しましたが。だから私が受け取っているエラーは-

Microsoft OLE DB ProviderforODBCドライバーエラー「80040e09」

[Microsoft] [ODBC SQLServerドライバー][SQLServer]オブジェクト'A_Permission'、データベース'HRWB_3_0'、スキーマ'dbo'でSELECTアクセス許可が拒否されました。

権限設定を変更せずにこのクエリを実行するにはどうすればよいですか。ストアドプロシージャを使用してこれを行うにはどうすればよいですか?(誰かが例を提供することもできますか)

取得したものを処理する必要があるデータベース設定を変更できません。私は多くのウェブサイトファイルを調べましたが、それは主にストアドプロシージャに依存しているようです。

4

2 に答える 2

5

L_PagePermissionデータベースへの接続に使用しているログインへのおよびA_Permissionテーブルへの選択アクセスを許可しない限り、またはそれらへの選択アクセスをすでに持っている別のログインを使用しない限り、そのアクセス許可エラーを回避することはできません。テーブル。

別のアプローチは、新しいストアドプロシージャを作成し、そのストアドプロシージャへのEXECUTEアクセスを許可することです。どちらの場合でもアクセス許可を付与するSQLは単純です。

テーブルへのSELECTアクセスを許可するには: GRANT SELECT ON [TableName] TO [loginName]

ストアドプロシージャへのEXECUTEアクセスを許可するには: GRANT EXECUTE ON [procedureName] TO [loginName]

動作する可能性はあるがセキュリティに明らかな影響を与えるもう1つのアプローチは、使用しているログインをそのデータベースのdb_ownerロールに追加することです。これは機能するはずですが、セキュリティ上のリスクに慣れていない限り、お勧めしません。

于 2011-06-27T04:31:51.747 に答える
0

テーブルから選択する権限がない場合は、テーブルから選択する権限を持つユーザーとしてDBMSに接続する以外に、権限がないことを回避する方法はありません。それが許可システムのポイントです-許可されていない人が許可されていないことをするのを防ぐためです。

于 2011-06-27T04:32:04.260 に答える