Articles

Concessione dell’autorizzazione alla definizione della vista a un utente o a un ruolo in SQL Server

Posted by admin

By: Nitin Rana | Updated: 2008-09-29 | Comments (7) | Related: More > Views

Problem

In SQL Server 2005 per impostazione predefinita, gli utenti di un database che si trovano solo nel publicrole non possono vedere le definizioni di sp_help, sp_helptextthe funzione object_definition. A volte questo è utile per consentire agli sviluppatori o ad altri non amministratori di vedere le definizioni degli oggetti in un database, quindi possono creare oggetti simili in un database di test o di sviluppo., Invece di concedere autorizzazioni di livello superiore, esiste un modo per consentire agli utenti che hanno solo accesso pubblicola possibilità di vedere le definizioni degli oggetti?

Soluzione

Quando si emette sp_help, sp_helptext o si utilizza la funzione object_definition (), si verificheranno i seguenti errori in SQL 2005 se l’utente non dispone delle autorizzazioni per vedere i metadati dell’oggetto. Ecco un paio di esempi di questierrori.,

EXEC sp_help Customer

Restituisce quanto segue:

Msg 15009, Level 16, State 1, Procedure sp_help, Line 66
The object 'Customer' does not exist in database 'MSSQLTIPS' or is invalid for this operation.

A select against the OBJECT_DEFINITION function will return a value of NULL ifthe user doesn’t have permissions to see the meta data.

SELECT object_definition (OBJECT_ID(N'dbo.vCustomer'))

Restituisce quanto segue:

NULL

Per impostazione predefinita gli utenti potevano vedere le definizioni degli oggetti in SQL Server 2000, ma in SQL Server 2005 questa funzionalità è stata rimossa per consentire un altro livello di sicurezza., Utilizzando una nuova funzionalità chiamata VIEW DEFINITION è possibileconsentire agli utenti che hanno solo accesso pubblico la possibilità di vedere le definizioni degli oggetti., eseguire l’istruzione seguente:

USE master GO GRANT VIEW ANY DEFINITION TO User1

Per attivare questa funzione, per un database e per tutti gli utenti che hanno pubblico accessyou in grado di emettere il seguente:

USE AdventureWorks GO GRANT VIEW Definition TO PUBLIC

Se si desidera concedere l’accesso solo utente “Utente1” del database, è possibile eseguire i seguenti:

USE AdventureWorks GO GRANT VIEW Definition TO User1

Per disattivare questa funzionalità, è necessario emettere la REVOCA commandsuch come uno dei seguenti:

USE master GO REVOKE VIEW ANY DEFINITION TO User1 -- or USE AdventureWorks GO REVOKE VIEW Definition TO User1 

Se si desidera vedere quali utenti hanno accesso, si può eseguire il seguente nel database.,

USE AdventureWorks GO sp_helprotect

Qui ci sono due righe che mostrano dove è stata concessa l’azione di DEFINIZIONE DELLA VISTA. Il primo su un particolare oggetto e il secondo per tutti gli oggetti nel database.

prendere questo un ulteriore passo avanti, se non si desidera concedere questa autorizzazione allobjects la seguente stored procedure può essere utilizzato per concedere a tutti objectsor particolare gli oggetti di un database., Questo è attualmente impostato per tutti gli objecttypes, ma questo può essere modificato includendo meno tipi di oggetto nella clausola WHERE.

Per utilizzare questo, è possibile creare questa stored procedure nei database degli utenti e quindi concedere le autorizzazioni all’utente appropriato invece di rendere le cose aperte per un utente o tutti gli utenti. Basta sostituire ChangeToYourDatabaseName per yourdatabase prima di creare.

Una volta creata questa procedura è possibile concedere le autorizzazioni come segue.Questo esempio concede la definizione della vista a un utente “userXYZ” nel database “MSSQLTIPS” Per tutti i tipi di oggetto selezionati.,s Online:

  • sp_helptext
  • sp_help
  • object_definition
  • Object_Id
  • Creare Procedure
  • Schema_Name
  • Schema_ID
  • Sostituire
  • GRANT
  • DEFINIZIONE della VISTA

Ultimo Aggiornamento: 2008-09-29

Circa l’autore
Nitin Rana è un Microsoft Certified Professional e attualmente ha oltre 12 anni di esperienza con SQL server core componenti.,
Visualizza tutti i miei suggerimenti
Risorse correlate

  • Altri suggerimenti per gli sviluppatori di database…

Leave A Comment