请问我能否获得有关使用 T-SQL 循环遍历 SQL 服务器实例中的所有用户数据库的帮助

PTL*_*SQL -1 sql-server t-sql

请任何人都可以帮助我如何循环遍历实例中的所有用户数据库,为每个数据库执行以下查询?

该脚本在单独的语句中返回具有各自权限的用户列表。

SELECT 'USE '+ DB_NAME()+'; '+CASE WHEN dp.state <> 'W' THEN dp.state_desc ELSE 'GRANT' END +' ' + 
        dp.permission_name + ' TO ' + QUOTENAME(dpg.name) COLLATE database_default + 
        CASE WHEN dp.state <> 'W' THEN '' ELSE ' WITH GRANT OPTION' END +';' AS [-- Permission To Be Assign to the User --]
FROM    sys.database_permissions AS dp
INNER JOIN sys.database_principals AS dpg ON dp.grantee_principal_id = dpg.principal_id
WHERE   dp.major_id = 0 AND dpg.principal_id > 4
        AND (dpg.type in ('S','G','U'))
        AND dpg.name NOT LIKE '##%##'
        AND dpg.name NOT LIKE 'NT AUTHORITY%'
        AND dpg.name NOT LIKE 'NT SERVICE%'
        AND dpg.name <> ('sa')
        AND dpg.default_schema_name IS NOT NULL
        AND dpg.name <> 'distributor_admin'
        AND dpg.principal_id > 4
ORDER BY dpg.name
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 6

看看 Aaron Bertrand 出色的sp_foreachdb - 他还有一个非常有用的合作伙伴 sp_ineachdb,这可能是您在这里寻找的更多。