Advertisement
Guest User

Untitled

a guest
Aug 29th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. --Logins and Permissions
  2. DECLARE @dbname VARCHAR(50)-- database name
  3. DECLARE @SQL VARCHAR(MAX)
  4.  
  5. CREATE TABLE #LoginPermissions
  6. (
  7. ServerName Varchar(50),
  8. DBName Varchar(50),
  9. LoginType Varchar(10),
  10. srvLogin Varchar(100),
  11. srvRole Varchar(100),
  12. dbUser Varchar(100),
  13. dbRole Varchar(100)
  14. )
  15.  
  16. DECLARE db_cursor CURSOR FOR
  17. SELECT name FROM MASTER.dbo.sysdatabases
  18.  
  19. OPEN db_cursor
  20. FETCH NEXT FROM db_cursor INTO @dbname
  21.  
  22. WHILE @@FETCH_STATUS = 0
  23. BEGIN
  24.  
  25. SET @SQL = '
  26. Insert Into #LoginPermissions
  27. select
  28. @@SERVERNAME AS ServerName,'''
  29. + @dbname + ''' AS DBName,
  30. [Login Type]=
  31. case sp.type
  32. when ''u'' then ''WINDOWS''
  33. when ''s'' then ''SQL LOGIN''
  34. when ''g'' then ''GROUP''
  35. end,
  36. convert(char(45),sp.name) as srvLogin,
  37. convert(char(45),sp2.name) as srvRole,
  38. convert(char(25),dbp.name) as dbUser,
  39. case when convert(char(25),dbp2.name) IS NULL then ''Public'' ELSE convert(char(25),dbp2.name) end as dbRole
  40.  
  41. from ' +
  42. @dbname + '.sys.server_principals as sp join '
  43. + @dbname + '.sys.database_principals as dbp on sp.sid=dbp.sid left join '
  44. + @dbname + '.sys.database_role_members as dbrm on dbp.principal_Id=dbrm.member_principal_Id left join '
  45. + @dbname + '.sys.database_principals as dbp2 on dbrm.role_principal_id=dbp2.principal_id left join '
  46. + @dbname + '.sys.server_role_members as srm on sp.principal_id=srm.member_principal_id left join '
  47. + @dbname + '.sys.server_principals as sp2 on srm.role_principal_id=sp2.principal_id'
  48.  
  49. EXECUTE (@SQL)
  50. FETCH NEXT FROM db_cursor INTO @dbname
  51. END
  52.  
  53. CLOSE db_cursor
  54. DEALLOCATE db_cursor
  55.  
  56. SELECT * FROM
  57. (
  58. Select distinct srvLogin, LoginType,
  59. case when srvRole = 'sysadmin' then '' ELSE DBName END as DBName, ServerName, ISNULL(srvRole, '') as srvRole,
  60. case when srvRole = 'sysadmin' then '' ELSE dbRole END as DBRole from #LoginPermissions
  61.  
  62. UNION ALL
  63.  
  64. Select name,
  65. [Login Type]=
  66. case [type]
  67. when 'u' then 'WINDOWS'
  68. when 's' then 'SQL LOGIN'
  69. when 'g' then 'GROUP'
  70. end, '', @@SERVERNAME,
  71. CASE WHEN IS_SRVROLEMEMBER ('sysadmin',name) = 1 THEN 'sysadmin'
  72. WHEN IS_SRVROLEMEMBER ('serveradmin',name) = 1 THEN 'serveradmin'
  73. ELSE ''
  74. END AS SrvRole, ''
  75. from sys.server_principals where convert(char(45),name) not in (select distinct srvLogin from #LoginPermissions)
  76. ) x
  77. Where LoginType IS NOT NULL
  78. order by ISNULL(srvRole, '') desc, srvLogin
  79.  
  80. DROP TABLE #LoginPermissions
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement