quarta-feira, 30 de janeiro de 2013

SQL Server - como dar grant em todas as Procedures e Tabelas e SQL Profiler

Para gerar o script de grant de todas as tabelas e todas as procedures para um determinado usuário, utilize o exemplo abaixo, que irá retornar o script pronto para ser executado.

Mais abaixo, o script para dar grant create para o usuário, e grant para rodar o SQL Profiler.


--creating the script to grant in all tables
use [databasename]
go

SELECT 'GRANT SELECT, INSERT, UPDATE, DELETE ON ' + NAME + ' TO ' + '[Domain\Username]'
  FROM SYSOBJECTS
WHERE TYPE = 'U'
  AND CATEGORY <> 2  -ignore system tables
ORDER BY NAME

Copie as linhas retornadas no select e execute


 

-- creating script to grant in all procedures
use [databasename]
go

declare @sql nvarchar(4000)
declare @db  sysname ; set @db = DB_NAME()
declare @u   sysname ; set @u = QUOTENAME('Domain\Username')
-- or -- declare @u   sysname ; set @u = QUOTENAME('username')
select 'grant exec on ' + QUOTENAME(ROUTINE_SCHEMA) + '.' +
QUOTENAME(ROUTINE_NAME) + ' TO ' + @u 
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'


Copie as linhas retornadas no select e execute


--grant create procedure
grant create procedure to [Domain\Username]


--grant to run SQL Profiler
grant alter trace to [Domain\User]