6

Utilizzo la versione di SQL Server 2008 Express.Come concedo a un ruolo del database di eseguire le autorizzazioni su uno schema? Che cosa sto facendo di sbagliato?

Ho creato un accesso, utente, ruolo e schema. Ho mappato l'utente al login e assegnato il ruolo all'utente.

Lo schema contiene un numero di tabelle e procedure memorizzate.

Desidero che il ruolo disponga delle autorizzazioni di esecuzione sull'intero schema.

Ho provato a concedere il permesso di esecuzione tramite lo studio di gestione e inserendo il comando in una finestra di query.

GRANT EXEC ON SCHEMA::schema_name TO role_name 

ma quando mi collego al database utilizzando Management Studio SQL (come il login ho creato) in primo luogo non riesco a vedere le stored procedure, ma ancora più importante ricevo un errore di autorizzazione negata quando si tenta di eseguirli.

La procedura memorizzata in questione non fa altro che selezionare i dati da una tabella all'interno della stessa scala.

Ho provato a generare la stored procedure con e senza la linea:

WITH EXECUTE AS OWNER 

Questo non fa alcuna differenza.

Sospetto di aver commesso un errore durante la creazione del mio schema, o che ci sia un problema di proprietà da qualche parte, ma sto davvero cercando di far funzionare qualcosa.

L'unico modo in cui sono riuscito a eseguire le stored procedure è concedere le autorizzazioni di controllo al ruolo e all'esecuzione, ma non credo che questo sia il modo corretto e sicuro per procedere.

Qualsiasi suggerimento/commento sarebbe molto apprezzato.

Grazie.

+0

Hai concesso autorizzazioni di esecuzione all'utente che hai creato per Sproc? –

risposta

4

Ci sono un paio di problemi che posso vedere nel tuo caso.

Prima di tutto è necessario disporre di Definizione vista per poter vedere gli oggetti nello studio di gestione.

Vorrei raccomandare questo se si vuole il ruolo di avere tutte le autorizzazioni,

GRANT EXECUTE, SELECT, INSERT, UPDATE, DELETE, VIEW DEFINITION 
    ON Schema::SchemaName TO [RoleName/LoginName] 

Assicurarsi inoltre che il proprietario di schema definito dall'utente è "dbo".

+1

GRANT VIEW A QUALSIASI DEFINIZIONE SU [someUser] GRANT VIEW SERVER STATE SU [someUser]/* Questi sono altri 2 permessi per dare "sola lettura" tutto * / – granadaCoder

Problemi correlati