Thursday, 26 August 2010

GRANT ALL Permissions on SQL Objects

Here's a quick little widget I created to GRANT ALL permissions on all SQL Server objects. It's crude and nasty, but does the trick. Quite easy to modify if need be...

DECLARE cObjects CURSOR READ_ONLY
FOR
SELECT name, xtype
FROM sysobjects
LEFT OUTER JOIN syspermissions ON sysobjects.id = syspermissions.id
WHERE xtype IN ('V', 'P', 'U', 'FN')
AND syspermissions.id IS NULL

DECLARE @ObjName varchar(255), @ObjType varchar(2)
DECLARE @SQL varchar(MAX)
DECLARE @User varchar(100)
SELECT @User = '[DOMAIN]\[USER]'

OPEN cObjects

FETCH NEXT FROM cObjects INTO @ObjName, @ObjType
WHILE (@@FETCH_STATUS <> -1)
BEGIN
 IF (@@FETCH_STATUS <> -2)
 BEGIN
  --Set the access permissions
  IF @ObjType = 'V' -- View
   SELECT @SQL = 'SELECT, INSERT, DELETE, UPDATE'
  ELSE IF @ObjType = 'P' -- Stored Procedure
   SELECT @SQL = 'EXEC'
  ELSE IF @ObjType = 'U' -- Table
   SELECT @SQL = 'SELECT, INSERT, DELETE, UPDATE'
  ELSE IF @ObjType = 'FN' -- User Defined Function
   SELECT @SQL = 'EXEC'

  --Build the rest of the statement and execute
  SELECT @SQL = 'GRANT ' + @SQL + ' ON dbo.[' + @ObjName + '] TO [' + @User + ']'
  EXEC(@SQL)
  PRINT @SQL
 END
 FETCH NEXT FROM cObjects INTO @ObjName, @ObjType
END

CLOSE cObjects
DEALLOCATE cObjects
GO

No comments:

Post a Comment