Advertisement
Guest User

Untitled

a guest
Sep 7th, 2021
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.39 KB | None | 0 0
  1.  
  2.  
  3. -- Set server properties
  4. DECLARE @SERVER_NAME VARCHAR(100)
  5.  
  6. CREATE TABLE ##Databases(
  7.   ServerName VARCHAR(100),
  8.   DatabaseName VARCHAR(100)
  9. )
  10.  
  11. CREATE TABLE ##TableGrants(
  12.     name VARCHAR(100),
  13.     type_desc VARCHAR(100),
  14.     permission_name VARCHAR(100),    
  15.     state_desc VARCHAR(100),
  16.     class_desc VARCHAR(100),
  17.     objectName VARCHAR(100),
  18.     DatabaseName VARCHAR(100),
  19.     ServerName VARCHAR(100)
  20. )
  21.  
  22.  
  23. CREATE TABLE ##Servers(
  24.   Name VARCHAR(100)
  25. )
  26.  
  27. DECLARE SERVER_CURSOR CURSOR FOR
  28. SELECT s.data_source FROM sys.servers s WHERE s.is_linked = 1
  29. OPEN SERVER_CURSOR
  30. FETCH NEXT FROM SERVER_CURSOR INTO @SERVER_NAME
  31. BEGIN
  32.     EXEC sp_serveroption @server=@SERVER_NAME, @optname='rpc', @optvalue='true'
  33.     EXEC sp_serveroption @server=@SERVER_NAME, @optname='rpc out', @optvalue='true'
  34. END
  35. DEALLOCATE SERVER_CURSOR
  36.  
  37.  
  38. -- Get data
  39. DECLARE @DBName VARCHAR(100)
  40. DECLARE Server_CURSOR CURSOR FOR
  41.     SELECT s.data_source FROM sys.servers s WHERE s.is_linked = 1
  42. OPEN SERVER_CURSOR
  43. FETCH NEXT FROM SERVER_CURSOR INTO @SERVER_NAME
  44. WHILE @@FETCH_STATUS = 0
  45. BEGIN
  46.     EXEC ('INSERT INTO ##Databases(DatabaseName)   SELECT name from ['+@Server_name+'].master.sys.databases')
  47.     UPDATE ##Databases
  48.     SET
  49.     ServerName =@SERVER_NAME
  50.     WHERE ServerName IS NULL
  51.     FETCH NEXT FROM SERVER_CURSOR INTO @SERVER_NAME
  52. END
  53. DEALLOCATE SERVER_CURSOR
  54.  
  55.  
  56. DECLARE @Database_Name VARCHAR(100)
  57. DECLARE Database_CURSOR CURSOR FOR
  58. SELECT DatabaseName FROM ##Databases
  59. OPEN Database_CURSOR
  60. FETCH NEXT FROM Database_CURSOR INTO @Database_Name
  61.  
  62. While @@FETCH_STATUS = 0
  63. BEGIN
  64.  INSERT INTO ##TableGrants(name,type_desc,  permission_name,state_desc, class_desc ,    objectName)
  65.  EXEC('USE  ' + @Database_Name + ' ' +
  66.     'select  princ.name, ' +  
  67.     'princ.type_desc, '+
  68.     'perm.permission_name, '+    
  69.     'perm.state_desc, '+
  70.     'perm.class_desc, ' +
  71.     'object_name(perm.major_id) ' +
  72.     ' from   sys.database_principals princ '+
  73.     ' left join ' +
  74.     '  sys.database_permissions perm ' +
  75.     'on  perm.grantee_principal_id = princ.principal_id ') AT [DESKTOP-N76O6I4\TAKSATORSQL]
  76.  
  77.  
  78. UPDATE ##TableGrants
  79. SET
  80. DatabaseName = @Database_Name,
  81. ServerName = @SERVER_NAME
  82. WHERE DatabaseName  IS NULL AND ServerName IS NULL
  83.  
  84. FETCH NEXT FROM Database_CURSOR INTO @Database_Name
  85. END
  86.  
  87. DEALLOCATE Database_CURSOR
  88.  
  89.  
  90.     SELECT * FROM ##TableGrants ORDER BY name, objectName
  91.  
  92. DROP TABLE ##Databases
  93. DROP TABLE ##Servers
  94. DROP TABLE ##TableGrants
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement