전체 DB 목록 조회

SELECT name FROM master.dbo.sysdatabases

 

DB별 계정 및 역할(Role) 조회

SELECT
	[UserName] = CASE memberprinc.[type] 
		WHEN 'S' THEN memberprinc.[name]
		WHEN 'U' THEN ulogin.[name] COLLATE Latin1_General_CI_AI
		END,   
	[Role] = roleprinc.[name]
FROM 
	sys.database_role_members members
JOIN
	sys.database_principals roleprinc ON roleprinc.[principal_id] = members.[role_principal_id]
JOIN
	sys.database_principals memberprinc ON memberprinc.[principal_id] = members.[member_principal_id]
LEFT JOIN
	sys.login_token ulogin on memberprinc.[sid] = ulogin.[sid]

 

여러 방법을 이용하여 DB별 계정과 역할을 한 번에 조회하려고 했으나 모두 실패했다.

일단, 'USE' 에서 변수 사용이 되지 않아서 배열, 프로시저, 임시 테이블 등의 방법을 사용해도 제대로 작동하지 않는다.

 

결국에는 DB 전체 목록을 출력해서 조회 했다.

 

참고 사이트: 

 

SQL Server query to find all permissions/access for all users in a database

I would like to write a query on a sql 2008 that will report all the users that have access to a specific database, or objects within the database such as tables, views, and stored procedures, either

stackoverflow.com