Olá pessoal.
Post rápido para compartilhar um script que criei para gerar o comando de Grant para um ou mais objetos.
-- ================================ -- -- TÍTULO: SCRIPT PADRÃO - GRANTS -- -- TIPO : SCRIPT -- -- AUTOR : Leandro Ribeiro -- -- ================================ -- -- Twitter: @sqlleroy -- -- blog: sqlleroy.com -- -- email: sqlleroy@hotmail.com -- -- ================================ -- SET NOCOUNT ON SET ANSI_WARNINGS ON SET ANSI_NULLS ON GO DECLARE @Db SYSNAME ,@UserName SYSNAME ,@GrantType VARCHAR (100) ,@TipoObjeto VARCHAR (30) ,@NomeObjeto VARCHAR (100) --===============================================-- -- Definir permissão(ões) a ser(em) concedida(s) -- --===============================================-- -- Exemplos: -- SELECT -> Permissão de consulta -- UPDATE -> Permissão de alteração -- INSERT -> Permissão de Inserção -- DELETE -> Permissão de Deleção -- EXECUTE -> Permissão de execução -- Obs.: Separar por virgula. -- exemplo1: 'SELECT, UPDATE, INSERT, DELETE, EXECUTE' -- exemplo2: 'EXECUTE' SET @GrantType = '' --========================-- -- Definir tipo de objeto -- --========================-- -- P -> SQL_STORED_PROCEDURE -- TR -> SQL_TRIGGER -- U -> USER_TABLE -- V -> VIEW -- Exemplo = 'P' SET @TipoObjeto = '' SET @Db = '' -- Defina o Database do contexto da permissão SET @UserName = '' -- Usuário a receber a permissão --=================================================================-- -- Utilizar parâmetros em caso de permissao específica a um objeto -- --=================================================================-- -- Para conceder permissão a todos os objetos, deixar a variável @NomeObjeto como '' -- PARA OBJETO ESPECÍFICO, INFORMAR NA VARIÁVEL @NomeObjeto O NOME DO OBJETO SET @NomeObjeto = '' IF @GrantType = '' OR @TipoObjeto = '' OR @Db = '' OR @UserName = '' BEGIN; RAISERROR('Os Paramêtros não podem ser vazios', 16, 1); RETURN; END; IF @NomeObjeto = '' EXEC ('USE ' + @Db + ' SELECT ''GRANT '+ @GrantType + ' ON '' + QUOTENAME(OBJECT_SCHEMA_NAME([object_id])) + ''.'' + QUOTENAME([name]) + '' TO '' + QUOTENAME(''' + @UserName +''') + '';'' FROM sys.objects WHERE type IN (''' + @TipoObjeto + ''') ORDER BY [name] ASC') ELSE EXEC ('USE ' + @Db + ' SELECT ''GRANT '+ @GrantType + ' ON '' + QUOTENAME(OBJECT_SCHEMA_NAME([object_id])) + ''.'' + QUOTENAME([name]) + '' TO '' + QUOTENAME(''' + @UserName +''') + '';'' FROM sys.objects WHERE name like ''%' + @NomeObjeto + '%''')
Espero que seja útil.
Até o próximo post.
