quarta-feira, 20 de junho de 2012

T-SQL: Gerar queries dinamicamente em todos objectos de uma base de dados

-- O objectivo desta query é gerar queries no message output do SQL Management Studio sem usar CURSORs
-- Depois basta executar, copiar e validar o resultado
-- Pegar no SQL gerado e executar.

USE nome_da_base_de_dados

DECLARE @ID    integer
DECLARE @LAST_ID integer
declare @name nvarchar(255)

SET @LAST_ID = 0

WHILE @LAST_ID IS NOT NULL
BEGIN

   --alterar esta query para devolver o tipo de objectos pretendido
   --mais info sobre types e outras informações do sysobjects em:
   -- http://msdn.microsoft.com/en-us/library/ms190324.aspx
    SELECT @ID = MIN(id)
    FROM dbo.sysobjects
    WHERE id > @LAST_ID  AND type = 'P' AND category = 0
   
    SELECT @name = name
        FROM dbo.sysobjects
        WHERE id = @ID
   
    --alterar este print com o tipo de permissões ou outra ação sobre o objecto da base de dados
    print 'GRANT EXECUTE ON [' + @name + '] TO usp_myStoreProcedure'
    SET @LAST_ID = @ID
END

Sem comentários:

Enviar um comentário