4

db_owner私にはJohn.Smithというユーザーがいますが、彼が持っているデータベースと、持っていないデータベースを知りたいですdb_owner。実行できるスクリプトはありますか?私たちはたくさんのデータベースを持っており、ユーザーマップを見ると、何かを見過ぎているように感じます。

4

1 に答える 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 に答える