Home Forums SQL Server 2008 T-SQL (SS2K8) Trying to build a stored procedure with insert into... RE: Trying to build a stored procedure with insert into...

  • I meant to post this much earlier, but the network at work gets flaky sometimes...

    Here's the query I was using to create the SP (scrubbed the user name, and skipping the step to make it a system SP)

    use [master];

    go

    create procedure dbo.sp_DBRoleAudit

    with execute as 'domain\UserWithSysAdmin'

    as

    create TABLE #DB_USers (

    DBName sysname

    , UserName sysname

    , LoginType sysname

    , AssociatedRole varchar(max)

    ,create_date datetime

    ,modify_date datetime

    )

    INSERT #DB_USers

    EXEC sp_MSforeachdb

    'use [?]

    SELECT ''?'' AS DB_Name

    ,case prin.name when ''dbo''

    then prin.name + '' (''+ (select SUSER_SNAME(owner_sid) from master.sys.databases where name =''?'') + '')''

    else prin.name

    end AS UserName

    ,prin.type_desc AS LoginType

    ,isnull(USER_NAME(mem.role_principal_id),'''') AS AssociatedRole

    ,create_date,modify_date

    FROM sys.database_principals as prin

    LEFT OUTER JOIN sys.database_role_members as mem

    ON prin.principal_id=mem.member_principal_id

    WHERE prin.sid IS NOT NULL

    and prin.sid NOT IN (0x00)

    and prin.is_fixed_role <> 1

    AND prin.name NOT LIKE ''##%'''

    SELECT dbname as [DBName]

    ,username as [UserName]

    ,logintype as [LoginType]

    ,create_date as [CreateDate]

    ,modify_date as [ModifyDate]

    , STUFF( ( SELECT ',' + CONVERT(VARCHAR(500),associatedrole)

    FROM #DB_USers as user2

    WHERE user1.DBName=user2.DBName

    AND user1.UserName=user2.UserName FOR XML PATH('') ) ,1,1,'') AS [Permissions_user]

    FROM #DB_USers as user1

    GROUP BY dbname

    ,username

    ,logintype

    ,create_date

    ,modify_date

    ORDER BY DBName

    ,username

    drop table #DB_USers;