Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.513 pregleda

Najnovija ↓

SELECT dozvoljenih kolona? 28.07.2008. u 21:28 · pre 222 meseca #1
Recimo da tabela u bazi ima 3 fielda - field1, field2, field3. Ulogujem se na server kao user kome su stavljene zabrane SELECT-a na fieldove field1 i field2. Kako da selektujem sve kolone iz tabele koje su dozvoljene za odredjenog user-a? Gledao sam mypermissions proceduru, ali ne znam kako da je koristim, i ne znam da li se ovaj problem uopshte reshava na taj nachin?

Unapred hvala na odgovorima...
Re: SELECT dozvoljenih kolona? 07.08.2008. u 18:07 · pre 221 mesec #2
Imas generalno dva nacina za ovaj problem.
Nacin 1: ne das nikome prevo da otvori tabelu direktno. Znaci, niko ne moze da uradi "SELECT Field1 FROM MyTable", nema permissions. Onda napravis nekoliko VIEW-a i na njih das prava odredjenim grupama korisnika.

Nacin 2: razbijes tabelu na nekoliko tabela, pa recimo user 'Aca' moze da cita/pise po svim tabelaam, a user 'Maca' moze samo po tabeli A ali ne i po tabeli B.

I jedan i drugi nacin traze da dobro smislis ko sta sme da radi i da ne komplikujes previse. To ti sve preraste u jednu glavobolju za administraciju ali tu se ne moze nista. Zato je MS SQL skup - treba ti administrator i da mislis o ovim stvarima.

:-)
Re: SELECT dozvoljenih kolona? 08.08.2008. u 15:48 · pre 221 mesec #3
Citat:
trodon: Recimo da tabela u bazi ima 3 fielda - field1, field2, field3. Ulogujem se na server kao user kome su stavljene zabrane SELECT-a na fieldove field1 i field2. Kako da selektujem sve kolone iz tabele koje su dozvoljene za odredjenog user-a? Gledao sam mypermissions proceduru, ali ne znam kako da je koristim, i ne znam da li se ovaj problem uopshte reshava na taj nachin?

Unapred hvala na odgovorima...


Mozete da iskoristite sp_column_privileges proceduru da bi ste videli da li trenutni korisnik ima SELECT prava na odredjenoj koloni i da na osnovu toga napravite odgovarajuci SQL upit.
Na primer, mogli bi ste da izvrsite sledeci upit:
Code:

DECLARE @PrivilegedColumns 
      TABLE (
            TABLE_QUALIFIER SYSNAME, 
            TABLE_OWNER SYSNAME, 
            TABLE_NAME SYSNAME, 
            COLUMN_NAME SYSNAME, 
            GRANTOR SYSNAME, 
            GRANTEE SYSNAME, 
            PRIVILEGE VARCHAR(32), 
            IS_GRANTABLE VARCHAR(3))
INSERT INTO @PrivilegedColumns
EXEC sp_column_privileges @table_name = 'MyTable', 
   @column_name = 'MyColumn'

SELECT * FROM @PrivilegedColumns

Odnosno da ga izmenite tako da se iz @PrivilegedColumns tabele proveri da li korisnik ima "SELECT" privilege na zadatoj koloni. Zatim dinamicki napravite SQL upit koji ce izvuci podatke samo iz zeljenih kolona i dinamicki izvrsite SQL upit.

Pozdrav,
Sasa
Potpis
http://www.vegaitsourcing.rs
http://www.linkedin.com/in/popovicsasa
http://www.codeplex.com/aspnetlibrary
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme