VIEW ANY DATABASE 権限

VIEW ANY DATABASE 権限は、新しいサーバーレベルの権限です。この権限を与えられたログインは、特定のデータベースを所有しているか、または実際にそのデータベースを使用できるかにかかわらず、すべてのデータベースを説明するメタデータを参照できます。

VIEW ANY DATABASE 権限により、sys.databases ビュー、sys.sysdatabases ビュー、および sp_helpdb システム ストアド プロシージャのメタデータの公開が制限されます。

既定では、VIEW ANY DATABASE 権限は public ロールに与えられます。そのため、既定では SQL Server のインスタンスに接続しているすべてのユーザーが、インスタンスのすべてのデータベースを参照できます。この動作を確認するには、次のクエリを実行します。

SELECT l.name as grantee_name, p.state_desc, p.permission_name 
FROM sys.server_permissions AS p JOIN sys.server_principals AS l 
ON   p.grantee_principal_id = l.principal_id
WHERE permission_name = 'VIEW ANY DATABASE' ;
GO

VIEW ANY DATABASE 権限を特定のログインに与えるには、次のクエリを実行します。

GRANT VIEW ANY DATABASE TO <login>; 

master データベースと tempdb データベースのメタデータは、常に public ロールに対して公開されます。

sysadmin 固定サーバー ロールのメンバーは、常にすべてのデータベースのメタデータを参照できます。

データベース所有者は、所有しているデータベースの行を常に sys.databases で参照できます。

CREATE DATABASE 権限と ALTER ANY DATABASE 権限をログインに与えると、データベースのメタデータにアクセスできるようになります。

注意

dbcreator 固定サーバー ロールには、既定で CREATE DATABASE 権限が与えられます。

注意

あるログインに CREATE DATABASE 権限と ALTER ANY DATABASE 権限を与え、そのログインの VIEW ANY DATABASE 権限を拒否しなかった場合、そのログインは sys.databases のすべての行を参照できます。

データベースのメタデータの公開を制限するには、ログインの VIEW ANY DATABASE 権限を拒否します。この権限が拒否された後、ログインがメタデータを参照できるのは、master データベース、tempdb データベース、およびログインが所有しているデータベースのみになります。詳細については、「DENY (サーバーの権限の拒否) (Transact-SQL)」を参照してください。