1

特定の役割に対するSELECT権限を持つ、SQLServer2008データベース内のすべてのテーブルのリストを取得するように求められました。そのGRANTSELECT権限を取り消すスクリプトを作成する必要があるため、クエリに含める必要があります。

ありがとう。

4

1 に答える 1

2

これは完全な答えではありません(そして、そうすることはできません-私はいじくり回すSQL Serverのインストールがありません)が、うまくいけば、それはあなたを正しい軌道に乗せるでしょう。ストアドプロシージャを実行しています。

USE yourDB;
GO
EXEC sp_table_privileges 
   @table_name = '%';

結果セット内で、主に3番目の列table_nameと6番目の列に関心がありますprivileges

ソース:MSDN:sp_table_privileges

私の考えでは、次のステップは、これが探しているデータであると仮定して、EXECステートメントの結果を一時テーブルに挿入するSQLステートメントでラップし、必要に応じてスライスおよびダイスすることです。この努力は、読者の練習問題として残されています(ナッジナッジ)。このスタックオーバーフローの質問に対する3番目の回答は、上記のクエリを拡張するのに役立つ場合がありますが、いつものようにYMMVです。

于 2012-08-22T03:22:49.363 に答える