Quantcast
Channel: SQL Server – Leandro Ribeiro
Viewing all articles
Browse latest Browse all 15

Script – Gerando comando Grant para objeto(s)

$
0
0

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.



Viewing all articles
Browse latest Browse all 15