2010-08-20 9 views

risposta

37

cederle VIEW DEFINITION privilegio di quei procs, vedi qui http://msdn.microsoft.com/en-us/library/ms175808.aspx

C'è

  • portata Server

  • portata Database

  • portata Schema

  • Entità individuali

È anche possibile utilizzare una query per generare uno script. quindi se avete un utente Bob

select 'GRANT VIEW DEFINITION ON ' + quotename(specific_schema) 
+ '.' + quotename(specific_name) 
+ ' TO ' + 'BOB' 
    from INFORMATION_SCHEMA.routines 
where routine_type = 'PROCEDURE' 

che vi darà qualcosa di simile, che è quindi possibile eseguire

GRANT VIEW DEFINITION ON [dbo].[aspnet_RegisterSchemaVersion] TO BOB 
GRANT VIEW DEFINITION ON [dbo].[aspnet_CheckSchemaVersion] TO BOB 
GRANT VIEW DEFINITION ON [dbo].[aspnet_Applications_CreateApplication] TO BOB 
+1

Esistono alternative per impostarlo per stored procedure? Speravo in un metodo che non richiedesse la modifica di ogni processo. – adam0101

+0

vedi risposta aggiornata – SQLMenace

+0

Impressionante. Grazie – adam0101

7

Esempio di fare a livello di ambito dello schema per dbo. vista

concessione definizione sullo schema :: [dbo] per BOB

MSDN

4

avevo bisogno di concedere l'accesso a un account di dominio .. sintassi per questo è stato

concessione definizione della vista sullo schema: : [dbo] a "dominio \ BOB"

0

mio variante per tutte le procedure db:

select 'GRANT VIEW DEFINITION ON [' + schema_name(schema_id) + '].[' + name + 
     '] TO ' + '[domain\username]' 
    from sys.all_objects 
where type_desc = 'SQL_STORED_PROCEDURE' 
    and schema_id <> schema_id('sys') 
0

Mentre so che questo è in ritardo in risposta alla domanda, ma per quelle persone che sono venute qui in cerca di una risposta (proprio come ho fatto qualche minuto fa) in almeno lo studio di gestione SQL 2014 è possibile modificare l'account utente e modifica le autorizzazioni nell'area SECURABLES e spunta tutte le caselle in VIEW a cui vuoi che abbiano accesso.

Questo fa quanto sopra senza dover eseguire script.

Problemi correlati