.NET System.Data ad alanında, güncelleme komutunun çalıştırıldığı sırada, satır içinde olup olmadığını belirleyen koddur. İstemci programı okuduktan sonra SQL Server 2K tablosu değiştirildi, yani satırın istemci tarafındaki sürümü "eski" mi?.NET System.Data ad alanı decompilation: SQL Server eşzamanlılık ihlalleri ile ilgili kodu nereden bulabilirim
Kodu incelemek ve eşzamanlılık ihlali olduğunu nasıl belirlediğini belirlemek için bir decompiler kullanmak istiyorum. Tabloda ve/veya @ rowcount'taki bir zaman damgası sütunu ile ilgili bir şey olacağını biliyorum, ancak depolanmış bir proba sarılı bir güncelleme komutu kütüphane tarafından yürütüldüğünde neler olduğunu görmek istiyorum.
saklı proc bu yapıya sahip olacaktır:
çünkü istemci tarafında System.Data içinde rowversion karşılaştırır nerede fıkra değiştiyse, hiçbir satır güncellenir edilir create proc foo_update
@id int,
@rowversion timestamp,
@val varchar(5)
as
begin
update foo set a = @val
where id = @id and mytimestampcolumn = @rowversion;
end
. Veritabanındaki satırın zaman damgası değerine DataRow ve proc başarıyla çalıştı ve bir hata oluşturmaz. Yine de SqlClient kütüphaneleri, yardımcı olmaları bakımından bu senaryoyu eş zamanlı bir ihlal olarak rapor eder.
Teşekkür
yerine Decompiler kullanmanın
'SqlDataAdapter' kullanıyor musunuz? Nasıl arıyorsun? Bu kaynak kodu bularak, eşzamanlılık ihlali hatasını atlayarak ne elde etmek istiyorsunuz? –
@ Jordão: Hatanın atılması için hangi koşulların gerekli olduğunu, yani kütüphanenin zaman damgası değerlerini karşılaştırarak mı yoksa yalnızca etkilenen kayıtların sayısına bakıp bakmadığını görmek istedim. – Tim