다음을 통해 공유


VIEW ANY DATABASE 권한

VIEW ANY DATABASE 권한은 새로운 서버 수준 권한입니다. 이 권한이 부여된 로그인은 특정 데이터베이스를 소유하는지 여부 또는 실제로 사용할 수 있는지 여부에 관계없이 모든 데이터베이스를 설명하는 메타데이터를 볼 수 있습니다.

VIEW ANY DATABASE 권한은 sys.databasessys.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 권한을 부여하면 데이터베이스 메타데이터에 대한 액세스 권한이 부여됩니다.

[!참고]

CREATE DATABASE 권한은 dbcreator 고정 서버 역할에 암시적으로 부여됩니다.

[!참고]

로그인에 CREATE DATABASE 및 ALTER ANY DATABASE 권한을 부여하고 VIEW ANY DATABASE를 거부하지 않으면 해당 로그인은 sys.databases의 모든 행을 볼 수 있습니다.

데이터베이스 메타데이터 표시를 제한하려면 로그인에 대해 VIEW ANY DATABASE 권한을 거부하면 됩니다. 이 권한이 거부되면 로그인은 master, tempdb 및 로그인이 소유한 데이터베이스에 대한 메타데이터만 볼 수 있습니다. 자세한 내용은 DENY 서버 사용 권한(Transact-SQL)을 참조하십시오.