jueves, 12 de febrero de 2015

GRANT TABLES, VIEW and SP's

--GRANT TO TABLES
DECLARE CURSOR_GRANT CURSOR FOR
SELECT
'GRANT SELECT ON [dbo].['+NAME+'] TO [E8F575915A2E4897A517779C0DD7CE]',
'GRANT CONTROL ON [dbo].['+NAME+'] TO [MSDSL]'
FROM SYSOBJECTS WHERE NAME LIKE 'X%' AND TYPE = 'U'

DECLARE @SELECT AS VARCHAR(100)
DECLARE @CONTROL AS VARCHAR(100)
DECLARE @CONTADOR AS INT
SET @CONTADOR = 0

OPEN CURSOR_GRANT

FETCH NEXT FROM CURSOR_GRANT INTO @SELECT, @CONTROL

WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE(@SELECT)
EXECUTE(@CONTROL)
SET @CONTADOR = @CONTADOR + 1
FETCH NEXT FROM CURSOR_GRANT INTO @SELECT, @CONTROL
END

CLOSE CURSOR_GRANT
DEALLOCATE CURSOR_GRANT
PRINT @CONTADOR
GO

--GRANT TO VIEWS
DECLARE CURSOR_GRANT CURSOR FOR
SELECT
'GRANT SELECT ON [dbo].['+NAME+'] TO [E8F575915A2E4897A517779C0DD7CE]',
'GRANT CONTROL ON [dbo].['+NAME+'] TO [MSDSL]'
FROM SYSOBJECTS WHERE NAME LIKE 'X%' AND TYPE = 'V'

DECLARE @SELECT AS VARCHAR(100)
DECLARE @CONTROL AS VARCHAR(100)
DECLARE @CONTADOR AS INT
SET @CONTADOR = 0

OPEN CURSOR_GRANT

FETCH NEXT FROM CURSOR_GRANT INTO @SELECT, @CONTROL

WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE(@SELECT)
EXECUTE(@CONTROL)
SET @CONTADOR = @CONTADOR + 1
FETCH NEXT FROM CURSOR_GRANT INTO @SELECT, @CONTROL
END

CLOSE CURSOR_GRANT
DEALLOCATE CURSOR_GRANT
PRINT @CONTADOR
GO

--GRANT TO PROCEDURES
DECLARE CURSOR_GRANT CURSOR FOR
SELECT
'GRANT EXECUTE ON [dbo].['+NAME+'] TO [E8F575915A2E4897A517779C0DD7CE]',
'GRANT CONTROL ON [dbo].['+NAME+'] TO [MSDSL]'
FROM SYSOBJECTS WHERE NAME LIKE 'X%' AND TYPE = 'P'

DECLARE @EXECUTE AS VARCHAR(100)
DECLARE @CONTROL AS VARCHAR(100)
DECLARE @CONTADOR AS INT
SET @CONTADOR = 0

OPEN CURSOR_GRANT

FETCH NEXT FROM CURSOR_GRANT INTO @EXECUTE, @CONTROL

WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE(@EXECUTE)
EXECUTE(@CONTROL)
SET @CONTADOR = @CONTADOR + 1
FETCH NEXT FROM CURSOR_GRANT INTO @EXECUTE, @CONTROL
END

CLOSE CURSOR_GRANT
DEALLOCATE CURSOR_GRANT
PRINT @CONTADOR
GO

No hay comentarios: