Bir işlemi geri almazsanız, değişiklik yine de yapılacak mı?


10

Diyelim ki bir sorgu çalıştırıyorum

begin tran

update users
set name = 'Jimmy'
where name = 'john'

Ben ise YAPMAYIN İşlem geri, hala yapılacak bu değişiklikler, bu bir hata atar olacak ya da zaten bir geri alma olarak hareket edecek?


Sanırım bu ifadeleri çalıştırmak için kullandığınız istemci yazılımının veya gömülü olduğu uygulamanın davranışına bağlıdır. Bazıları yapılandırılırsa otomatik olarak kapanabilir (SSMS bunu varsayılan olarak yapar).
mustaccio

3
Açıkça beyan edilen işlemler otomatik olarak yapılmaz. Josh bir işlemin başladığını ilan ettiğinden, tam olarak Justin Cave'in yanıtladığı gibi davranacaktır.
Dave

Yanıtlar:


16

Bir işlemin ne olduğunu anlamalısınız - Bu tek bir iş birimidir. TÜMÜ veya HİÇBİR ŞEY ( ASİT özelliklerini izler ) ve bu veritabanı tutarlılığını garanti eder.

İşlemi geri almazsam, bu değişiklikler yine de yapılacak mı?

Değişiklikler yalnızca taahhüt verirseniz yapılacaktır. SQL Server, işlem günlüğündeki tüm değişiklikleri kaydeder ve bir kez taahhüt ettiğinizde, veri dosyasına sertleştirilir.

Taahhüt etmezseniz, işleminiz süresiz olarak açık kalacaktır - ki içinde sys.dm_tran_active_transactions / sys.dm_tran_database_transactions / sys.dm_tran_session_transactionsveya içinde görebilirsiniz DBCC OPENTRAN.

Ayrıca, başlattığınız, açıkça bir COMMIT veya ROLLBACK deyimiyle sonlandırılması gereken açık bir işlemdir.

Ayrıca okuyun - Her zaman bir işlem oluşturmak kötü bir uygulama mı?


@JoshStevenson Bence veritabanı bağlamında Atomik Operasyonlar hakkında okumaya değer .
Nelz

12

İşlemi taahhüt etmez veya geri almazsanız, işlem süresiz olarak devam eder. İşlemi a commitveya a yoluyla rollbackbitirene kadar veya bir DBA gelip oturumu öldürene kadar (veya ağda bir hıçkırık gibi bir şey bağlantının kesilmesine neden olana kadar) diğer oturumları engelleyerek kilitlerini tutmaya devam edecektir . Bir DBA oturumu öldürürse, bu ve diğer açık işlemler için dolaylı olarak bir geri alma işlemi gerçekleştirir.


Bu doğru cevap. Bu bilgi olmadan, hem COMMIT hem de ROLLBACK ifadelerinin birlikte kullanılması benim için bir anlam ifade etmiyordu.
Tarec

1

İşlem yapılmadıkça ve yapılmadıkça, yukarıda belirtildiği gibi tümü veya hiçbiri,

Atomisite bunun arkasındaki nedendir, ACID işlem özelliklerini, bir veritabanı sisteminin takip ettiği temel özellikleri kontrol edebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.