Elizabeth.J.Doering at wellsfargo.com
Elizabeth.J.Doering at wellsfargo.com
Fri Mar 16 16:34:25 CDT 2007
Thanks Robert!
Liz
Liz Doering
612.667.2447
"This message may contain confidential and/or privileged information. If
you are not the addressee or authorized to receive this for the
addressee, you must not use, copy, disclose, or take any action based on
this message or any information herein. If you have received this
message in error, please advise the sender immediately by reply e-mail
and delete this message. Thank you for your cooperation"
-----Original Message-----
From: dba-sqlserver-bounces at databaseadvisors.com
[mailto:dba-sqlserver-bounces at databaseadvisors.com] On Behalf
Of Robert L. Stewart
Sent: Friday, March 16, 2007 2:15 PM
To: dba-sqlserver at databaseadvisors.com
Cc: Doering, Elizabeth J.
Subject: Re: [dba-SQLServer] Securables in SQL Server 2005
Liz,
Here is what I think will be a better solution next time you
have this problem. This is an SP that you can add to a
database and then run. You pass in the user/role that you want
to grant EXECUTE rights to and it goes through the SPs and
functions and grants the rights.
(SQL 2005)
CREATE PROCEDURE dbo.__SetProcPermissions
@Role varchar(50)
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@ProcName varchar(100),
@ProcType varchar(100),
@Sql varchar(1000)
DECLARE cProcs CURSOR
FOR
SELECT sys.objects.name AS ProcName,
sys.objects.type_desc AS ProcType
FROM sys.objects
WHERE type_desc = 'SQL_STORED_PROCEDURE'
OR type_desc LIKE '%FUNCTION%'
OPEN cProcs
FETCH NEXT
FROM cProcs
INTO @ProcName,
@ProcType
WHILE (@@FETCH_STATUS = 0)
-- it still is getting records
BEGIN
SELECT @Sql = 'GRANT EXECUTE ON '
+ @ProcName + ' TO ' + @Role
EXEC sp_ExecuteSQL @Sql
IF (CHARINDEX(@ProcType,'FUNCTION', 1) > 0)
BEGIN
SELECT @Sql = 'GRANT REFRENCES ON '
+ @ProcName + ' TO ' + @Role
EXEC sp_ExecuteSQL @Sql
END
FETCH NEXT
FROM cProcs
INTO @ProcName,
@ProcType
END
CLOSE cProcs
DEALLOCATE cProcs
END
GO
I guess it would help if I actually sent it. :-)
Robert
At 01:00 PM 3/16/2007, you wrote:
>Date: Fri, 16 Mar 2007 08:15:40 -0500
>From: <Elizabeth.J.Doering at wellsfargo.com>
>Subject: Re: [dba-SQLServer] Securables in SQL Server 2005
>To: <dba-sqlserver at databaseadvisors.com>
>Message-ID:
>
><1C2084FD2472124AB1812A5476EA3B7A014836EB at msgswbmnmsp04.wellsfargo.com>
>
>Content-Type: text/plain; charset="US-ASCII"
>
>Francisco,
>
>Thanks so much for replying. I actually came to the same solution.
>
>Since, however, I had hundreds to set--and a bunch to unset--I created
>a table with all the objects and who needed permissions on each one.
>Then I built up all my Grant and Revoke statements in a query, pasted
>the results in a new query window and ran them all at once. I'm sure
>there were more elegant solutions, but this one did save my
>fingers--and my hair!
>
>Thanks,
>
>Liz
_______________________________________________
dba-SQLServer mailing list
dba-SQLServer at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
http://www.databaseadvisors.com