Articles

Acordarea de Vedere Definiția Permisiunea de la un Utilizator sau Rol în SQL Server

Posted by admin

De: Nitin Rana | Actualizat: 2008-09-29 | Comentarii (7) | Conexe: Mai > Vedere

Probleme

În SQL Server 2005 implicit utilizatorii unei baze de date care sunt doar în publicrole nu pot vedea definițiile de un obiect în timp ce utilizați sp_help, sp_helptext sau object_definition funcție. Uneori, acest lucru este util pentru a permite dezvoltatorilor sau altor Non-administratori să vadă definițiile obiectelor dintr-o bază de date, astfel încât aceștia pot crea ca obiecte într-o bază de date de testare sau dezvoltare., În loc de grantinghigher nivel de permisiuni, există o modalitate de a permite utilizatorilor care au numai publice accessthe capacitatea de a vedea obiectul definiții?

Soluție

atunci Când eliberează sp_help, sp_helptext sau folosind object_definition() funcția următoarele erori SQL 2005 va avea loc în cazul în care utilizatorul nu are permisiuni pentru a vedea obiectul de metadate. Iată câteva exemple ale acestoraerori.,

EXEC sp_help Customer

Returnează următoarele:

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.

O selectați împotriva OBJECT_DEFINITION funcția va returna valoarea NULL dacă utilizatorul nu are permisiuni pentru a vedea datele meta.

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

Returnează următoarele:

NULL

mod implicit, utilizatorii au posibilitatea de a vedea obiect definiții în SQL Server 2000, darîn SQL Server 2005 această funcționalitate a fost eliminat pentru a permite un alt strat de securitate., Folosind o nouă caracteristică numită vizualizare definiție, este posibil să permiteți utilizatorilor care au acces public doar posibilitatea de a vedea definițiile obiectelor., problema următoarea declarație:

USE master GO GRANT VIEW ANY DEFINITION TO User1

Pentru a activa această caracteristică pentru o bază de date și pentru toți utilizatorii care au public accessyou pot emite următoarele:

USE AdventureWorks GO GRANT VIEW Definition TO PUBLIC

Dacă doriți să acorde acces la singurul utilizator „User1” a bazei de date, puteți face următoarele:

USE AdventureWorks GO GRANT VIEW Definition TO User1

Pentru a dezactiva această funcționalitate ar emite REVOCA commandsuch ca fiind una dintre următoarele:

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

Dacă doriți pentru a vedea utilizatorii care au acest acces poate emite următoarele în baza de date.,

USE AdventureWorks GO sp_helprotect

iată două rânduri care arată unde a fost acordată acțiunea de definire a vizualizării. Primul pe un anumit obiect și al doilea pentru toate obiectele din Baza de date.

Pentru a lua acest un pas mai departe, dacă nu doriți să acorde această permisiune, pe allobjects următoarea procedură stocată poate fi folosit pentru a acorda tuturor objectsor special obiecte într-o bază de date., Aceasta este în prezent configurată pentru toate tipurile de obiecte, dar aceasta poate fi modificată prin includerea mai multor tipuri de obiecte în clauza WHERE.

pentru a utiliza acest lucru, puteți crea această procedură stocată în bazele de date de utilizator șiapoi acordați permisiunile utilizatorului corespunzător, în loc să faceți lucrurile largdeschise pentru un utilizator sau pentru toți utilizatorii. Doar înlocuiți ChangeToYourDatabaseName pentru yourdatabase înainte de a crea.odată ce această procedură a fost creată, puteți acorda permisiunile după cum urmează.Acest exemplu acordă definiția vizualizării unui utilizator ” userXYZ „în baza de date” MSSQLTIPS ” pentru toate tipurile de obiecte selectate.,e On-line:

  • sp_helptext
  • sp_help
  • object_definition
  • Object_Id
  • Crearea de Procedură
  • Nume_schemă
  • Schema_ID
  • Replace
  • GRANT
  • VIZUALIZARE DEFINIȚIE

Ultima Actualizare: 2008-09-29

Despre autor
Nitin Rana este un Microsoft Certified Professional și în prezent are peste 12 ani de experienta cu SQL server componente de bază.,
Vezi toate sfaturile mele
Resurse conexe

  • Mai multe sfaturi pentru dezvoltatori de baze de date…

Leave A Comment