db_owner
私にはJohn.Smithというユーザーがいますが、彼が持っているデータベースと、持っていないデータベースを知りたいですdb_owner
。実行できるスクリプトはありますか?私たちはたくさんのデータベースを持っており、ユーザーマップを見ると、何かを見過ぎているように感じます。
2448 次
1 に答える
2
次のようなものを使用できます。
CREATE TABLE ##DBOwners
(
DBName SYSNAME,
Username SYSNAME,
Rolename NVARCHAR(50),
IsOwner BIT
);
EXEC sp_MSforeachdb
'
USE [?];
INSERT INTO ##DBOwners
SELECT
DB_NAME(),
dp.name,
dp2.name,
CASE
WHEN dp2.name = ''db_owner'' THEN 1
ELSE 0
END AS ''db_owner''
FROM
sys.database_principals AS dp
LEFT JOIN
sys.database_role_members AS rm
ON
rm.member_principal_id = dp.principal_id
LEFT JOIN
sys.database_principals AS dp2
ON
rm.role_principal_id = dp2.principal_id
WHERE
dp.type <> ''R''
'
SELECT * FROM ##DBOwners WHERE Username = 'John.Smith'
DROP TABLE ##DBOwners;
ストアド プロシージャ sp_MSforeachdb を使用してすべてのデータベースに関する情報を収集し、結果をグローバル一時テーブルに保存します。
于 2013-02-14T23:20:24.020 に答える