Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

onemoguciti brisanje zapisa

[es] :: MS SQL :: onemoguciti brisanje zapisa

[ Pregleda: 2634 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nadavesela
programer, DZS

Član broj: 199298
Poruke: 93
*.205.8.137.robi.com.mk.



+3 Profil

icon onemoguciti brisanje zapisa07.01.2011. u 09:15 - pre 160 meseci
Dali neko ima ideju na koji nacin (osim sa trigerom) ja moguce da na nivou baze, onemogucim brisanje zapisa, za bilo kog usera (pa i administratora) odnosno da je moguc samo insert i update
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: onemoguciti brisanje zapisa07.01.2011. u 09:43 - pre 160 meseci
kakvi crni trigeri, deny delete za usere i zdravo.

http://www.mssqltips.com/tip.asp?tip=1138
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

nadavesela
programer, DZS

Član broj: 199298
Poruke: 93
*.205.8.137.robi.com.mk.



+3 Profil

icon Re: onemoguciti brisanje zapisa07.01.2011. u 10:19 - pre 160 meseci
Mislila sam da i za bilo kog usera (sa i dbo) to isto vazi, i da se odnosi ne samo na DENY DELETE permisiju tabele, vec i na DENY stored procedure za brisanje.
Odnosno da generalno na nivou tabele postoji neki constraint.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: onemoguciti brisanje zapisa07.01.2011. u 10:32 - pre 160 meseci
ako tabela ima deny delete onda ni stored procedura koja radi delete ne moze da prodje.

Ti mozes i za sa/dbo da ukines delete, sta vise ljudi to i rade na kriticnium tabelama da ni bi doslo do brisanja greskom. Ali budimo realni dbo je glavni, dbo uvek moze da ukine sebi deny delete i da uradi delete i ne psotoji nista sto ti mozes da uradis po tom pitanju. Ni trigger tu ne sprecava jer sa/dbo moze da otkaci triger sa tabele.


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

nadavesela
programer, DZS

Član broj: 199298
Poruke: 93
*.205.8.137.robi.com.mk.



+3 Profil

icon Re: onemoguciti brisanje zapisa07.01.2011. u 11:15 - pre 160 meseci
Zahvaljujem se na pomoci.
Generalno kao glavni princip, na nivou sheme, stavljam DENY na SELECT,INSERT,UPDATE, DELETE na tabele, a GRANTUJEM EXECUTE na procedure sa datom funkcijom, jer zelim da je moguce izvrsavanje tih akcija samo preko stored procedura (za sve korisnike). Kao zakljucak, dali je ipak moguce brisanje preko stored procedure, pa cak ako korisnik ima DENY na DELETE tabele, a ima GRANT na EXECUTE stored proceduru koja vrsi DELETE?
Moj cilj je bio da nesto (ne) omogucim na nivou dizajna tabele, da vazi i za administratora i ownera, da greskom ne uradi nesto, a da pri tom ne mora to preko Securit-ja da ide, i da ne mora da se podesava za bilo kog novog korisnika, database rolu, ownera
'Ni trigger tu ne sprecava jer sa/dbo moze da otkaci triger sa tabele.'
Al u slucaju greske, to svesno radi, odnosno mora da otkaci triger, pa ponovo svesno da ga vrati.
Nisam ni ja pristalica trigera, al izgleda je za sad jedino generalno resenje.
Ipak mi je 'teorisko prakticni' cilj, ne ko sta (ne)moze, nego kako generalno (da vazi za sve korisnike) ?, sto kracim putem da se podesi da (ne)moze.
Pozdrav.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: onemoguciti brisanje zapisa07.01.2011. u 11:29 - pre 160 meseci
Dadoh ti pogrensu informaciju, ocigledno se nisam davno ovim pozabavio.

Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.

Dakle sa i dbo su untouchable sada, ne mozes ih ograniciti.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: onemoguciti brisanje zapisa12.01.2011. u 17:59 - pre 160 meseci
AKo bas mora trigger, onda je barem prost za pisanje:

Code:

CREATE TRIGGER myTable _ZabranjenoBrisanje ON myTable FOR DELETE
AS
rollback


Naravno da dbo ili sa moze uvek da DISABLE TRIGGER ili cak da ga obrise pa da utadi DELETE. Ali ako se stitis od nenamernih brisanja, ovo bi trebalo da bude dovoljno.

 
Odgovor na temu

nadavesela
programer, DZS

Član broj: 199298
Poruke: 93
195.26.131.*



+3 Profil

icon Re: onemoguciti brisanje zapisa13.01.2011. u 10:23 - pre 160 meseci
‘Prakticno Teoriski’ to bi bilo pozeljno ne samo zbog slucajnog brisanja od strane administratora.
Ideja je da se obezbedi referencijalni integritet medju tabelama koje se nalaze u razlicitim bazama.
U odredjenim situacijima i kad je nekom dozvoljeno brisanje, trebalo bi da mu je onemoguceno na nivou tabele.
E sad, bilo bi dobro kad bi dati red tabele mogao da se izbrise ako vrednost kljuc-a nije upotrebljena kao ‘Foreign Key’ u nekoj tabeli u drugoj bazi. Da su tabele u istoj bazi to bih resila tako.
Ali kako postaviti referencijalni integrite medju tabelama razlicitih baza?
Slicno brisanju, isto bi bilo i za referencijalni integritet prilikom INSERT,UPDATE, al to bih moglo nekim CONSTRAINTOM (da mogu da se unose samo vrednosti iz datog kljuca tabele iz neke druge baze). Al brisanje, bi znacilo da treba da se proveri dal je taj kljuc upotrebljen u ‘ko zna’ koliko tabela u drugim bazama...tako da je najkrace, onemoguciti brisanje (pomocu triger-a)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: onemoguciti brisanje zapisa13.01.2011. u 10:51 - pre 160 meseci
Pa sto ne kazes odmah sta hoces.

Transactional real time replikacija je potencijalno resenje za tebe. Napravis repliku master tabele u details bazi ali da sadrzi samo master kljuc. Onda uvezes details tabele u repliku mastera i obewzbedis kakvu hoces proveru referencijalnog integriteta. Onda i brisanje master elementa biva ukljuceno u distributed transakciju sa brisanjem na klijentima i ako ga neko referencira puca delete.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

nadavesela
programer, DZS

Član broj: 199298
Poruke: 93
*.205.8.137.robi.com.mk.



+3 Profil

icon Re: onemoguciti brisanje zapisa14.01.2011. u 10:03 - pre 160 meseci
Mozda je naslov trebao biti o(ne)moguciti brisanje zapisa pod datim uslovima, slicno kao sto je moguc Insert i Update, pomocu Constrainta na nivou tabele
(Referencijalni Integritet je jedna vrsta Constrainta)
I dal je za Delete to moguce samo preko trigera, odnosno proverom uslova u trigeru.
Ovo sa replikacijom, u slucaju kad se radi o bazama na istom serveru, i kad opet treba replicirati ko zna koliko tabela i uspostavljati proveru referencijalnog integriteta, po mom misljenju manje je transakcija onemogucavanjem brisanja 'master' bilo kog zapisa pomocu trigera (pa nek bude neki odvisan zapis), a u ostalim tabelama vec po potrebama moze se napisati (Insert, Update) Constraint koji referencira na tu 'master' tabelu.
Hvala na interesovanju.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: onemoguciti brisanje zapisa14.01.2011. u 10:29 - pre 160 meseci
Pa sad zavisi. Za pocetak zavisi od razloga zasto si uopste postavila ovu temu? Ako si ti vec u glavi zacrtala da je trigger super i treba ti samo externa validacija tvoje odluke, onda , trigeri su super (nisu) Al onda ti mi ovde nismo ni potrebni.

Ali ako hoces da kvalitetno resis svoj problem onda treba da das i malo vise detalja o problemu i onda treba prouciti i alternativna resenja i izabrati najbolje (pa makar to bio i triger). Onda treba preispitati i neke arhitekturalne odluke kao npr ta da imas N baza koji bacaju reference jedna na drugu. Drugacije ne ide, bacis nam po jednu kosku, mi ti damo neko resenje koje je inherentno neodredjeno i nespecificno tvom problemu.

Dakle, ako nije slucaj kao sa pocetka ove poruke, zasto N baza?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

nadavesela
programer, DZS

Član broj: 199298
Poruke: 93
*.205.8.137.robi.com.mk.



+3 Profil

icon Re: onemoguciti brisanje zapisa14.01.2011. u 17:32 - pre 160 meseci
Slucaj je znaci ipak, kao sa pocetka poruke. Znaci 'moja' odluka je onemoguciti brisanje reda na nivou tabele. Pitala sam, dali je to moguce bez trigera?
Sve ostalo su bili odgovori na ponudjene odgovore, koji nadam se nikom nisu bili odvisni, a mislim da cilj foruma nije samo iznosenje problema i resavanje problema nego i razmena misljenja pa makar i o 'hipoteticki realnim' situacijama.
 
Odgovor na temu

[es] :: MS SQL :: onemoguciti brisanje zapisa

[ Pregleda: 2634 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.