Sql Server hakkında bilgi verebilirmisiniz?

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Merak ettğim şey bir ağ ortamında aynı database'yi kullanan iki bilgisayar arasında bilgi girişi silme ve update işlemlerinde çakışma olmazmı olmuyorsa nasıl bunun mantığı nedir?
Mesela Sql Server yüklü bir sunucu bilgisayar var birde Bilgisayar1 ve Bilgisayar2 var bu iki bilgisayarda Sql Server database kullannan aynı programdan yüklü ve iki bilgisayar aynı anda sunucudaki database'deki aynı bilgi üzerinde değişiklik yapmaya kalkarsa problem çıkmazmı? Birde program yazarken ben formload'da databasedeki bilgileri çekiyorum programıma ve birdaha değişiklik olmadığı sürece database'ye ulaşıp bilgileri güncellemiyorum gerekte yok ama aynı database'yi kullanan iki bilgisayar varsa durum çok karmaşık görünüyor bana Sql Server'de bu sorunlar çıkarmı çıkmazmı nasıl aşılır bilgi verebilirmisiniz?
 
S

SDN Okuru

SDN Okuru
normalde oracleda o tabloya veri girişi yapıldığında o alanı kitler veri girişini engeller taki commit işlemi yapılana kadar
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
normalde oracleda o tabloya veri girişi yapıldığında o alanı kitler veri girişini engeller taki commit işlemi yapılana kadar
işe yarar bir yöntem gibi görünmüyor ben formload da yüklediğim bilgiyi görüyorum bir başka bilgisayar değişiklik yaptıysa bunu göremiyorum işlem yapılan alanı kilitlese ne olur. Şöyle düşün ben bir alanda update yapıyorum tam o anda başka bilgisayar o alanı değiştiriyor ve o alan kilitlenmiş o bilgisayar bilgiyi değiştiriyor ve bende bunu hemen göremiyorum ve ardından ben update yapınca diğer bilgisayardan girilmiş bilgide gitmiş olacak alanı kilitlemek mantıklı bir çözüm değil. Herhangi bir bilgisayardan bir bilgi değiştirildiğinde benim bunu anında görebilmem lazım değilmi?
 

sunelan

Doçent
Katılım
2 Nisan 2010
Mesajlar
546
Reaksiyon puanı
1
Puanları
18
işe yarar bir yöntem gibi görünmüyor ben formload da yüklediğim bilgiyi görüyorum bir başka bilgisayar değişiklik yaptıysa bunu göremiyorum işlem yapılan alanı kilitlese ne olur. Şöyle düşün ben bir alanda update yapıyorum tam o anda başka bilgisayar o alanı değiştiriyor ve o alan kilitlenmiş o bilgisayar bilgiyi değiştiriyor ve bende bunu hemen göremiyorum ve ardından ben update yapınca diğer bilgisayardan girilmiş bilgide gitmiş olacak alanı kilitlemek mantıklı bir çözüm değil. Herhangi bir bilgisayardan bir bilgi değiştirildiğinde benim bunu anında görebilmem lazım değilmi?

triggerlar falan var araştır istersen.
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
trigger (tetikleyici) falan bunlarıda araştırdım ama hala anlayamadım çakışma nasıl önleniyor
 

sunelan

Doçent
Katılım
2 Nisan 2010
Mesajlar
546
Reaksiyon puanı
1
Puanları
18
trigger (tetikleyici) falan bunlarıda araştırdım ama hala anlayamadım çakışma nasıl önleniyor

Neyi anlamaya çalıştığını anlamadım :D


Triggerla tabloda değişiklik yapıldığında log tutturabilirsin. Kimin değişiklik yaptığını yada hangi değişikliği yaptığını tutabilirsin. başka yöntem bilmiyorum.

senin bahsettiğin olay da çakışma değil zaten. birisi veri girer diğeri o veriyi değiştirir yetkisi varsa. bu çakışma değildir. sen de araya girip bu değişikliklerin kaydını tutacaksın.
 

green_lion

Asistan
Katılım
19 Şubat 2006
Mesajlar
327
Reaksiyon puanı
5
Puanları
18
Form load içerisinde çektiğin veriler güncellenmişse sen bunu göremezsin bu kesin. Veriyi tekrar çekmen lazım.
İkinci aşamada iki bilgisayar aynı veriyi update ederse en son edenin bilgileri görünür. Hata vermez.

Çözmenin yolu yaptığın yazılımdadır ve birden çok fazladır.
Form load olayında mesela sürekli db yi kontrol edip değişen varmı diye bakarsın. Varsa hemen güncellersin. Bu sistemin biraz canına okur tabi ama istediği şeyi yapmış olursun

Aynı verinin update olayında ise ne istediğini bilmen lazım. Birisi güncelleyince başkası güncellemesin, aynı anda iki kişi update edemesin gibi. Bunları da yine yazdığın kodlarla belirlersin. Ne istiyorsan o olur yani.
 
Üst