web-dev-qa-db-ja.com

オブジェクト定義権限をユーザー定義のサーバーロールに付与する方法

アクセスを許可されたログインを作成したい

  • すべてのユーザーデータベース
  • すべての定義を表示

  • すべてのテーブルのすべてのレコードを選択

私には、各データベースにログインを割り当てて、それをカスタムdbロールまたは各dbのdb_datareaderのようなデフォルトのdbロールに追加するのは、オーバーヘッドが大きすぎるようです。

代わりに、ユーザー定義のサーバーロールを使用しようとしました。

  • しかし、必要な権限をユーザー定義のサーバーロールに割り当てて、すべてのデータベースの定義とdb_datareaderを表示できるようにするにはどうすればよいでしょうか。

  • これは可能ですか?

6
Magier

すべてのデータベースにアクセスするには、CONNECT ANY DATABASE権限を付与する必要があります。

すべての定義を表示するには、VIEW ANY DEFINITION権限を付与する必要があります。

すべてのユーザーテーブルからすべてのデータを選択するには、SQL Server 2014以降でSELECT ALL USER SECURABLESを付与できますが、すべてのデータベースからのみデータを選択できますアクセス可能、つまりCONNECT ANY DATABASEなしそれはあなたに何も与えません。

したがって、SQL Server 2014以降を使用している場合でも、必要なことを行うにはつすべてのアクセス許可を与える必要があります。

  • CONNECT ANY DATABASE
  • VIEW ANY DEFINITION
  • SELECT ALL USER SECURABLES

VIEW ANY DATABASEは既にpublicに付与されているため、付与する必要はありません。

3
sepupic