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

zastita sql baze od "pucanja"

[es] :: .NET :: zastita sql baze od "pucanja"

[ Pregleda: 4177 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mvasicdo
Mladen Vasic
Doboj

Član broj: 104294
Poruke: 226
89.111.200.*



Profil

icon zastita sql baze od "pucanja"14.03.2007. u 07:56 - pre 208 meseci
Pozdrav svima...

Interesuje me sledece:
Da li se moze desiti da ako u trenutku izvrsenja nekog SQL upita na SQL-ovu (SQL 2005 Express) bazu nestane struje ili nesto slicno sto ce mi naglo odvojiti aplikaciju od baze, da mi u tom trenutku "pukne" baza tako da kasnije ne mogu doci do podataka. Postoje li neke mjere zastite koje to sprecavaju.
Da li se ova zastita treba odraditi na nivou aplikacije ili samog servera.

Konkretno, radim u C#-u, i interesuje me da li se ova zastita moze odraditi na nivou aplikacije.
 
Odgovor na temu

IDeveloper
Beograd

Član broj: 136606
Poruke: 25
*.informatika.com.



Profil

icon Re: zastita sql baze od "pucanja"14.03.2007. u 09:36 - pre 208 meseci
Najbolje je da cuvas transakciju i ako dodje do greske da uradis rollback

evo ti primera za Sql
:

Code:



DECLARE @BRTRANSAK INT
SET @BRTRANSAK=@@TRANCOUNT

IF @@TRANCOUNT>0
   SAVE TRAN PRENOS
ELSE
   BEGIN TRAN PRENOS

BEGIN TRY

-- Ovde tvoj stavis Sql statement

-- Ovde potvrdis
IF @BRTRANSAK = 0 COMMIT TRAN PRENOS

END TRY

BEGIN CATCH

ROLLBACK TRAN PRENOS

END CATCH


[Ovu poruku je menjao mmwc dana 15.03.2007. u 09:06 GMT+1]

[Ovu poruku je menjao mmix dana 15.03.2007. u 15:48 GMT+1]
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: zastita sql baze od "pucanja"14.03.2007. u 11:20 - pre 208 meseci
@IDeveloper: ako coveku nestane struje usred transakcije, rollback ce slabo sta da uradi tu

@mvasicdo: u principu, ne brini za nestanak struje. cak i single-sql statement se izvrsavaju u okviru konteksta implicitne transakcije i bivaju upisane u log pre same promene (Write-Ahead Logging protocol iliti WAL), a sql ima mehanizme da proveri da li je stanje tabela u skladu sa commited transakcijama iz loga i moze da 'premota' bazu unapred u stabilno stanje u skladu sa logom. Doduse to je teorija, u praksi postoje neke razlike koliko dobro taj sistem funkcionise i to zavisi od hardvera na sql serveru; na primer da HD kontroler i HD imaju dovoljno 'snage' da IO kes izbace na medijum pre obaranja diska; jeftini tajvanac sa citavih svojih 8mb kesa garantuje obicno upis samo jednog sektora , skupi serverski diskovi i kontroleri garantuju upisivanje celog HD kesa od 16 i vise MB pa tu u pricu ulazi i power adapter itd, itd. U svakom slucaju imas ovaj tekst o onome sto tebe interesuje i razne tehnologije koje SQL server koristi za "ocuvanje" integriteta podataka:
SQL Server 7.0, SQL Server 2000, and SQL Server 2005 logging and data storage algorithms extend data reliability
Description of caching disk controllers in SQL Server
Description of using disk drive caches with SQL Server that every database administrator should know


Sto se tice same aplikacije, nakon pada baze stici ce ti jedan SqlException sa porukom koja ce zavisiti od trentuka pucanja. Generalno, osim ako ti aplikacija nije multi-database to treba da dovede do "gracefull" pada aplikacije.
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

IDeveloper
Beograd

Član broj: 136606
Poruke: 25
*.informatika.com.



Profil

icon Re: zastita sql baze od "pucanja"14.03.2007. u 11:27 - pre 208 meseci
Ne znam da sam pominjao da je ovo zastita od nestanka struje! Za to sluzi UPS!
U naslovu teme je "pucanje"! Ne mogu bas sve do slova i bukvalno da objasnjavam!

[Ovu poruku je menjao mmwc dana 15.03.2007. u 09:07 GMT+1]
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: zastita sql baze od "pucanja"14.03.2007. u 13:53 - pre 208 meseci
Citat:
IDeveloper: Ne znam da sam pominjao da je ovo zastita od nestanka struje! Za to sluzi UPS!
U naslovu teme je "pucanje"! Ne mogu bas sve do slova i bukvalno da objasnjavam!


wow
ok, da ne bi bilo zabune, niko ne ocekuje ni od koga ovde da sve do slova objasnjava, ucesce ovde je dobrovoljno i po broju poruka i po detaljnosti; ali ono sto se definitivno ocekuje od svakog je da ne odgovara na naslove poruka nego na pitanje koje je postavljeno u poruci. Ono sto tebi predstavlja "pucanje" ne mora drugima da ima isto znacenje; meni npr. 'pucanje baze' ima totalno drugacije znacenje od 'pucanja sql statement-a' koje se resava rollbackom.

I kad smo vec kod rollback-a, off topic, snimanje transaction checkpoint-a i nasledjivanje parent transakcije (ako postoji) koje radis u kodu koji si okacio je nepreporucljivo, nested transakcije savrseno dobro rade posao i obezbedjuju atomicity cele transakcije. Koriscenje save pointa u "nizoj" transakciji razbija "sve ili nista" koncepciju vise transakcije i ti u nizoj transakciji odlucujes da li je za visu transakciju prihvatljivo ili ne da neka niza transakcija ne odradi posao i da se pretvara da je sve ok. Ovo je narocito vazno ako je ceo taj SQL posao samo deo DCOM MTS transakcije ili slicnog high level mehanizma u kome mozda drugi deo MTS transakcije zavisi od toga dali je ta niza transakcija odradila posao kako treba, svi ce se pretvarati da je sve ok, a commit-ovano stanje distribuiranog sistema ce postati nestabilno. Ovaj kod je npr ekvivalentan gutanju Exception-a u .NET-u i postoji dobar razlog zasto rollback "unistava" celu hijerarhiju transakcije a ne samo svoju nested instancu. Ako si sa druge strane prisiljen da koristis save point kao jedino resenje to je prva indikacija da dizajn aplikacije/baze nije dobar.


PS: Kad vidis da si napravio propust u svojoj poruci, gledaj da umesto da uradis copy/paste cele poruke u novu poruku uradis izmenu svoje postojece poruke, narocito ako je poruka sa kilometarskim kodom.

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

vladdy
Chicago, USA

Član broj: 30119
Poruke: 137
*.dsl.emhril.ameritech.net.

Sajt: www.pro-transport.com


Profil

icon Re: zastita sql baze od "pucanja"16.03.2007. u 14:17 - pre 208 meseci
Svaki iole normalan server ima UPS koji ce da drzi dok se na normalan nacin ne ugasi server sa sve db-om.

Sto se tice samog pitanja, to se radi na database nivou, tesko ces uraditi nesto vise iz .NET aplikacije. Mislim da je pitanje primerenije database forumu, naravno u zavisnosti koji db koristis kao back-end.
http://www.pro-transport.com - The most advanced trucking software on the market
 
Odgovor na temu

[es] :: .NET :: zastita sql baze od "pucanja"

[ Pregleda: 4177 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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