OLEH KELOMPOK 6
1.
2.
3.
4.
5213100028
5213100055
5213100115
5213100178
DAFTAR ISI
Soal 1 ...................................................................................................................................................... 3
Melakukan Set Autocommit menjadi Off melalui Options .................................................................... 3
A.
B.
Soal 2 .................................................................................................................................................... 26
MENJAWAB SOAL 2 A ............................................................................................................................ 26
A. INTRODUCTION ............................................................................................................................ 26
b. TRANSACTION 1 ............................................................................................................................ 27
b. TRANSACTION 2 ............................................................................................................................ 28
b. TRANSACTION 3 ............................................................................................................................ 29
b. TRANSACTION 4 ............................................................................................................................ 30
MENJAWAB SOAL 2 B ............................................................................................................................ 31
1. Efek Save Transaction .................................................................................................................... 31
2. PERAN Save Transaction ................................................................................................................ 32
3. Efek Checkpoints ........................................................................................................................... 34
Soal 3 .................................................................................................................................................... 36
Soal 4 .................................................................................................................................................... 46
Soal 5 .................................................................................................................................................... 48
JAWABAN 5 a .................................................................................................................................... 48
JAWABAN 5 B .................................................................................................................................... 49
JAWABAN 5 c..................................................................................................................................... 50
REFERENSI ............................................................................................................................................. 52
SOAL 1
Set Autocommit dalam SQL Server Management studio menjadi Off
a. Bereksperimenlah dengan rollback dan commit statement
b. Perbedaan commit dan rollback pada autocommit on dan off
Jawaban :
Autocommit adalah sebuah perintah dimana setiap proses yang berhasil dilaksanakan akan
secara otomatis secara fisik disimpan dalam database. Biasanya dalam Microsoft SQL server akan
secara otomatis autocommit aktif sehingga tidak perlu dilakukan commit disetiap akhir traksaksi.
Karena akan secara otomatis dilakukan commit dan semua transaksi akan tersimpan secara
otomatis pada database. Untuk menonaktifkan autocommit pada SQL Server Management Studio
adalah sebagai berikut :
Melakukan Set Autocommit menjadi Off melalui Options,
Melakukan Set Autocommit menjadi Off dengan Query
Langkah untuk melakukan Set Autocommit dalam SQL Server Management Studio
menjadi Off melalui options adalah sebagai berikut :
2. Langkah selanjutnya adalah pada Menu bar, pilih Tools kemudian pilih pilhan options.
Maka akan muncul jendela options.
3. Selanjutnya pada jendela option pilihlah Query Execution kemudian akan muncul
beberapa pilihan, pilih SQL Server kemudian pilih kembali ANSI
4. Setelah itu untuk melakukan Set Autocommit, centang pada bagian SET
IMPLICIT_TRANSACTIONS setelah itu pilih OK.
Untuk membuktikan apakah benar Set Autocommit sudah tidak berfungsi lakukan update data tanpa
melakukan commit, dan apakah data akan berubah atau tidak :
Berikut ini adalah database pada tabel CUSTOMER sebelum dilakukan update :
Setelah itu dilakukan update dengan mengubah nomer telpon dari customer dengan melakukan update
pada query berikut :
BEGIN TRANSACTION
UPDATE CUSTOMER
SET CUS_PHONE = '556-9877'
WHERE CUS_CODE = '10010'
Maka hasil dari tabel Customer setelah dilakukan update akan tetap berubah sesuai yang diupdate, seperti
berikut :
Namun saat sql query akan di lakukan close maka akan ada pesan permintaan dimana apakah ingin
dilakukan commit seperti gambar dibawah ini, hal ini menunjukkan bahwa perintah commit sudah tidak
aktif, sehingga Set Autocommit ke Off sudah berhasil dilakukan.
Maka jika pesan diatas dipilih NO dimana tidak melakukan commit maka data yang berhasil di update
akan kembali seperti sebelumnya, yaitu sebagi berikut :
Commit :
Untuk mencoba melakukan transaksi commit maka akan dilakukan perubahan dengan
melakukan update pada tabel customer dimana dilakukan perubahan pada customer
PHONE dengan query sebagai berikut, untuk commit pada SQL Server Management
studio terdapat dua penggunaan query yaitu dengan :
o
o
COMMIT TRANSACTION
COMMIT WORK
Berikut ini adalah contoh penggunaan dari COMMIT TRANSACTION dimana dengan
melakukan perubahan update pada SQL Server Management Studio, pada kasus ini
dilakukan perubahan pada nomor telpon dari pelanggan dengan query sebagai berikut :
BEGIN TRANSACTION
UPDATE CUSTOMER
SET CUS_PHONE = '556-9877'
WHERE CUS_CODE = '10010'
COMMIT TRANSACTION
Maka hasil update data adalah seperti gambar berikut, dimana terjadi perubahan pada
nomor telpon dari pelanggan. Dalam hal ini karena dalam query sudah dilakukan commit
maka pesan commit tidak muncul saat query di keluarkan karena sudah dilakukan commit.
Sebelum update :
Sesudah update :
Berikut ini adalah contoh penggunaan dari COMMIT WORK dimana dengan melakukan
perubahan update pada SQL Server Management Studio, pada kasus ini dilakukan
perubahan pada nomor telpon dari pelanggan dengan query sebagai berikut :
BEGIN TRANSACTION
UPDATE CUSTOMER
SET CUS_PHONE = '220-2200'
WHERE CUS_CODE = '10015'
COMMIT WORK
Maka hasil update data adalah seperti gambar berikut, dimana terjadi perubahan pada
nomor telpon dari pelanggan. Dalam hal ini karena dalam query sudah dilakukan commit
maka pesan commit tidak muncul saat query di keluarkan karena sudah dilakukan commit.
Sebelum update :
Setelah update :
ROLLBACK :
Untuk mencoba melakukan transaksi rollback maka akan dilakukan dengan melakukan
perubahan kembali pada customer phone yang telah dilakukan update.
Berikut ini adalah data setelah berhasil dilakukan update sebelumnya :
Berikut ini adalah contoh penggunaan dari ROLLBACK dimana dengan mengembalikan
nomer telpon pelanggan yang telah di update menjadi 100-1100 kembali seperti semua
yaitu 297-3809 dengan query sebagai berikut :
BEGIN TRANSACTION
GO
UPDATE CUSTOMER
SET CUS_PHONE = '110-1100'
WHERE CUS_CODE = '10019'
ROLLBACK TRANSACTION
Sebelum update :
Setelah update :
Berikut ini adalah contoh penggunaan dari ROLLBACK dimana dengan mengembalikan
nomer telpon pelanggan yang telah di update menjadi 220-2200 kembali seperti semua
yaitu 442-3381 dengan query sebagai berikut :
BEGIN TRANSACTION;
UPDATE CUSTOMER
SET CUS_PHONE = '442-3381'
WHERE CUS_CODE = '10015'
ROLLBACK TRANSACTION;
Sebelum update :
Setelah update :
Data tidak dapat dilakukan ROLLBACK karena data yang sudah dilakukan COMMIT sudah
disimpan secara permanen sehingga tidak dapat dilakukan ROLLBACK.
Langkah untuk melakukan Set Autocommit dalam SQL Server Management Studio
menjadi Off melalui query adalah sebagai berikut :
1. Setelah mengaktifkan aplikasi SQL Server Management Studio, lakukan koneksi
database seperti biasa :
2. Langkah selanjutnya adalah pada database, klik kanan dan pilih New Query
3. Selanjutnya pada jendela option pilihlah SQL Query tuliskan perintah berikut, SET
IMPLICIT_TRANSACTIONS ON, untuk menonaktifkan Autocommit.
Untuk membuktikan apakah benar Set Autocommit sudah tidak berfungsi lakukan update data tanpa
melakukan commit, dan apakah data akan berubah atau tidak :
Berikut ini adalah database pada tabel VENDOR sebelum dilakukan update :
Setelah itu dilakukan update dengan mengubah kode area dari vendor dengan melakukan update pada
query berikut :
BEGIN TRANSACTION;
UPDATE VENDOR
SET V_AREACODE = '600'
WHERE V_CODE = '21225'
Maka hasil dari tabel Customer setelah dilakukan update akan tetap berubah sesuai yang diupdate, seperti
berikut :
Namun saat sql query akan di lakukan close maka akan ada pesan permintaan dimana apakah ingin
dilakukan commit seperti gambar dibawah ini, hal ini menunjukkan bahwa perintah commit sudah tidak
aktif, sehingga Set Autocommit ke Off sudah berhasil dilakukan.
Maka jika pesan diatas dipilih NO dimana tidak melakukan commit maka data yang berhasil di update
akan kembali seperti sebelumnya, yaitu sebagi berikut :
Commit :
Untuk mencoba melakukan transaksi commit maka akan dilakukan perubahan dengan
melakukan update pada tabel customer dimana dilakukan perubahan pada customer
PHONE dengan query sebagai berikut, untuk commit pada SQL Server Management
studio terdapat dua penggunaan query yaitu dengan :
o
o
COMMIT TRANSACTION
COMMIT WORK
Berikut ini adalah contoh penggunaan dari COMMIT TRANSACTION dimana dengan
melakukan perubahan update pada SQL Server Management Studio, pada kasus ini
dilakukan perubahan pada kode area dari vendor dengan query sebagai berikut :
BEGIN TRANSACTION
UPDATE VENDOR
SET V_AREACODE = '600'
WHERE V_CODE = '21225'
COMMIT TRANSACTION
Maka hasil update data adalah seperti gambar berikut, dimana terjadi perubahan pada
kode area dari vendor. Dalam hal ini karena dalam query sudah dilakukan commit maka
pesan commit tidak muncul saat query di keluarkan karena sudah dilakukan commit.
Sesudah update :
Berikut ini adalah contoh penggunaan dari COMMIT WORK dimana dengan melakukan
perubahan update pada SQL Server Management Studio, pada kasus ini dilakukan
perubahan pada kode area dari vendor dengan query sebagai berikut :
BEGIN TRANSACTION
UPDATE VENDOR
SET V_AREACODE = '800'
WHERE V_CODE = '25595'
COMMIT WORK
Data sebelumnya :
ROLLBACK :
Untuk mencoba melakukan transaksi rollback maka akan dilakukan dengan melakukan
perubahan kembali pada customer phone yang telah dilakukan update.
Berikut ini adalah data setelah berhasil dilakukan update sebelumnya :
Berikut ini adalah contoh penggunaan dari ROLLBACK dimana dengan mengembalikan
kode area pelanggan yang telah di update menjadi 700 kembali seperti semua yaitu 904
dengan query sebagai berikut :
BEGIN TRANSACTION
GO
UPDATE VENDOR
SET V_AREACODE = '700'
WHERE V_CODE = '21226'
ROLLBACK TRANSACTION
Sama seperti sebelumnya data yang sudah dilakukan commit tidak dapat dilakukan
ROLLBACK karena data yang sudah dilakukan COMMIT sudah disimpan secara permanen
sehingga tidak dapat dilakukan ROLLBACK.
Commit
NO
Autocommit on
Autocommit off
Rollback
NO
1
Autocommit on
Pada saat autocommit diaktifkan maka
secara otomatis commit akan menyimpan
data secara permanen sehingga tidak dapat
dilakukan ROLLBACK, data yang tersimpan
tidak dapat dikembalikan seperti semulai
lagi seperti berikut :
Autocommit off
Pada saat autocommit dinonaktifkan
dapat dilakukan ROLLBACK untuk
mengembalikan
data
sebelumnya,
dengan syarat belum dilakukan commit,
seperti berikut ini
SOAL 2
Buatlah sebuah transaksi dengan skenario bebas. Db req=2, ada update menggunakan database sale_co
a. Jalankan transaksi tersebut
b. Jelaskan aplikasikan dan tunjukkan dampak dari save transaction dan checkpoint
Jawaban :
MENJAWAB SOAL 2 A
A. INTRODUCTION
1. Sebagai langkah pertama, kami akan menjalankan query untuk membuat database yang
direkomendasikan :
2. Bila dilihat struktur datanya akan terbentuk seperti gambar di bawah ini :
B. TRANSACTION 1
B. TRANSACTION 2
4. A. PRODUCT BEFORE QUERY INSERT
B. TRANSACTION 3
5. A. CUSTOMER BEFORE QUERY INSERT
B. TRANSACTION 4
6. A. PRODUCT BEFORE QUERY UPDATE
MENJAWAB SOAL 2 B
1. EFEK SAVE TRANSACTION
Melihat efek dari save transaction adalah dengan cara membiarkan database pada kondisi default
(Database SaleCo), kemudian jalankan query berikut :
BEGIN TRANSACTION
SAVE TRANSACTION kenyamanan
Query di atas berfungsi untuk menyimpan kondisi database pada saat belum terjadi transaction, dimana
kondisi tersebut disimpan dengan nama kenyamanan. Kemudian dikombinasikan dengan query yang
sebelumnya dimasukkan yakni INSERT dan UPDATE :
INSERT INTO VENDOR VALUES (21290, 'SUBUR_EYANG', 'SUBUR', 212, 212-5213, 'SB', 'N');
INSERT INTO PRODUCT VALUES ('11NOV/55', 'CELANA KOMPRANK', 2005-11-11, 10, 5, 15, 0, 21290);
INSERT INTO CUSTOMER VALUES (10020, 'WARAS', 'SEGER', 'T', '713', '031-5555', 0);
UPDATE PRODUCT SET P_PRICE = 20 WHERE V_CODE = 21290 ;
Jika query tersebut dijalankan, maka database akan dieksekusi menjadi empat transaksi seperti yang
sudah dituliskan tadi.
Database akan memiliki data baru berupa vendor, product, customer dan mengupdate data product.
Selanjutnya untuk melihat log aktifitas yang telah dieksekusi pada database dapat dilakukan dengan cara
menjalankan query berikut :
SELECT [Current LSN], [Operation] FROM fn_dblog (NULL, NULL);
Query tersebut berfungsi untuk menampilkan Log Sequence Numbers (LSN) yang isinya adalah aktivitas
eksekusi dari database.
Dalam log ini tersimpan juga aktivitas checkpoint dan aktivitas lain yang mungkin tidak terlihat oleh user.
Didukung dengan gambar yang menunjukkan 4 transaksi yang dieksekusi oleh database, dimana transaksi
yang diakomodir adalah :
1.
2.
3.
4.
Dalam gambar tersebut juga muncul LOP_MARK_SAVEPOINT dimana terjadi pencatatan kondisi database
yang ditandai dengan perintah SAVE TRANSACTION.
Adapun jika didokumentasikan lognya dapat dilihat dengan gambar berikut ini :
3. EFEK CHECKPOINTS
Fungsi dari checkpoints adalah untuk membuang data yang kotor (dirty data) dari cache buffer yang
ada pada database disk, yang berguna untuk memastikan jumlah data pada database log tetap dalam
jumlah yang wajar sehingga sistem tidak mengalami load dalam ukuran yang besar.
Pada dasarnya, checkpoints sudah berjalan ketika sql server di start, adapun untuk melihatnya dapat
menggunakan query berikut ini :
Gambar di atas terlihat bahwa penggunaan log dari database afterbebas adalah 41.33858%, untuk
mengetahui dampak dari checkpoint.
Untuk menjalankan perintah checkpoint secara manual, kita dapat menjalankannya dengan query :
CHECKPOINT;
Kemudian setelah query dijalankan, ketikkan kembali query log space berikut :
DBCC SQLPERF('LOGSPACE')
Dari hasil perbandingan kedua gambar di atas, terlihat bahwa penggunaan log space meningkat sekitar
16.92914% setelah eksekusi checkpoint secara manual yang telah dilakukan. Hal tersebut dapat terjadi
karena sistem mencatat aktivitas baru berupa checkpoint pada Log Sequence Number, efeknya adalah
sistem memiliki load tambahan pada usage log space.
Jika kita ingin mengetahui log aktivitas untuk menunjukkan bahwa log ditambahkan karena query
checkpoints dijalankan adalah dengan cara menjalankan query :
SOAL 3
Jelaskan macam-macam Isolation Level pada SQL Server
a. Tunjukkan cara merubah settingan isolation level
Jawaban :
Isolation level sendiri terdiri atas:
1. READ UNCOMMITTED
Pada read uncommitted, tidak terdapat isolation pada transaksi sehingga data yang telah dimodifikasi
masih dapat dibaca meskipun transaksi tersebut belum dicommit.
Contoh:
Pada transaksi yang pertama akan dilakukan update P_QOH pada P_CODE=11QER/31 dengan
waktu delay selama 20 detik. Untuk melakukan hal tersebut dapat memasukkan query seperti
dibawah ini:
BEGIN TRAN
UPDATE PRODUCT SET P_ONHAND = 2 WHERE P_CODE ='13-Q2/P2' ;
WAITFOR DELAY '00:00:20'
ROLLBACK
Selanjutnya kita ingin melihat daftar product dengan memasukkan query SELECT * FROM PRODUCT.
Transaksi kedua tersebut tidak menunggu hingga transaksi yang pertama selesai. Transaksi kedua
tetap dapat tereksekusi tanpa adanya jeda karena tidak perlu menunggu commit.
Kemudian masukkan query berikut ini:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM PRODUCT
2. READ COMMITTED
Read committed merupakan kebalikan dari read uncommitted. Disini terdapat isolation pada
transaksi sehingga database hanya dapat membaca transaksi yang sudah dicommit. Read
committed terbebas dari gangguan dirty reads.
Contoh:
Pada transaksi pertama akan dilakukan update P_QOH pada P_CODE=11QER/31 dengan
waktu delay selama 20 detik. Untuk melakukan hal tersebut dapat memasukkan query
seperti dibawah ini:
BEGIN TRAN
UPDATE PRODUCT SET P_ONHAND = 14 WHERE P_CODE ='13-Q2/P2' ;
WAITFOR DELAY '00:00:20'
COMMIT
Selanjutnya kita ingin melihat daftar product dengan memasukkan query SELECT * FROM PRODUCT.
Transaksi kedua tersebut menunggu hingga transaksi yang pertama selesai.
Kemudian masukkan query berikut ini:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM PRODUCT
Hasilnya dapat dilihat dibawah ini, dimana transaksi kedua hanya dapat tereksekusi saat transaksi
sebelumnya selesai dilakukan.
3. REPEATABLE READ
Repeatable read memastikan transaksi terjaga dari upaya modifikasi hingga proses transaksi
selesai dilakukan. Jadi transaksi tersebut tidak dapat diganggu sampai proses commit sehingga
terlindungi dari dirty reads dan non-repeatable reads.
Contoh:
Akan tetapi transaksi pertama tersebut belum selesai sehingga transaksi yang lainnya tidak dapat
tereksekusi. Masukkan query dibawah ini:
UPDATE PRODUCT SET P_ONHAND = 14 WHERE P_CODE ='13-Q2/P2' ;
Jadi transaksi dua baru dapat dieksekusi setelah transaksi yang pertama selesai.
Isolation Level ini tidak bisa melakukan modifikasi dengan perintah update tetapi dapat
melakukan input baru pada baris baru dengan perintah insert.
4. SERIALIZABLE
Pada serialiazable mencegah transaksi update, insert, dan delete. Pada serializable sebelum
transaksi selesai dilakukan maka transaksi yang lain tidak dapat dimodifikasi. Data pada transaksi
yang belum selesai juga tidak dapat dibaca.
Contoh:
Masukkan query berikut ini:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN
Dapat dilihat bahwa transaksi kedua tidak tereksekusi karena transaksi pertama masih belum
selesai dilakukan. Hali ini menyebabkan transaksi pertama hasilnya sama. Jadi tunggulah transaksi
pertama selesai baru eksekusi transaksi kedua.
Kemudian masukkan query dibawah ini:
INSERT VENDOR (V_CODE, V_NAME, V_CONTACT, V_AREACODE, V_PHONE, V_STATE, V_ORDER)
VALUES ('21228','Nintendo', 'Nigo','667', '111-223', 'JP', 'N')
5. SNAPSHOT
Snapshot berfungsi untuk melindungi dari permasalahan concurrency. Pada snapshot tidak terjadi
lock pada tabel sehingga memungkinkan modifikasi/uptade pada transaksi yang lain. Jadi pada
snapshot data lamanya mempertahankan versi Tempdb.
Contoh:
Agar dapat mempraktekkan snapshot, kita harus melakukan alter terlebih dahulu dengan
memasukkan query dibawah ini:
ALTER DATABASE tugaskelompokbaru
SET ALLOW_SNAPSHOT_ISOLATION ON
Dapat dilihat bahwa pada transaksi kedua ingin melakukan penambahan row dan transaksi kedua
akan langsung tereksekusi dan tidak perlu menunggu transaksi pertama selesai. Hal ini disebabkan
snapshot tidak melakukan lock pada tabel sehingga dapat dilakukan dimodifikasi.
Cobalah masukkan query dibawah ini untuk menambahkan row baru:
INSERT VENDOR (V_CODE, V_NAME, V_CONTACT, V_AREACODE, V_PHONE, V_STATE, V_ORDER)
VALUES ('21227','Sega', 'Mike','666', '111-222', 'GB', 'N')
SOAL 4
Sp lock, merupakan procedure yang menyediakan informasi tentang locks yang ada pada SQL Server
Connections.
Secara eksplisit, procedure ini memberikan system proses ids yang dicari. Tetapi apabila
menjalankan sp_lock tanpa parameter juga dapat dilakukan seperti gambar diatas, hasilnya sistem akan
memberikan pengembalian data yang dipegang oleh semua spids pada server.
Hasil dari procedure ini adalah berupa laporan semua lock yang sedang aktif pada Database Engine.
Penjelasan dari Laporan procedure sp_lock :
1. spid : Database Engine session ID yang meminta Lock
2. dbid : Nomor identifikasi dari database di mana kunci diadakan. Dapat menggunakan fungsi
DB_NAME () untuk mengidentifikasi database.
3. objld : Nomor identifikasi dari objek yang kunci diadakan. Dapat menggunakan fungsi
OBJECT_NAME () dalam database terkait untuk mengidentifikasi objek.
4. indld : Nomor identifikasi dari indeks yang kunci diadakan.
serializable.
PAG = Lock pada halaman data atau indeks.
EXT = Lock pada Extent.
TAB = Lock pada seluruh tabel, termasuk semua data dan indeks.
DB = Lock pada database.
FIL = Lock pada file database.
APP = Lock pada sumber daya aplikasi-ditentukan.
MD = Kunci pada metadata, atau informasi katalog.
HBT = Lock di atas tumpukan atau indeks B-Tree. Informasi ini tidak lengkap dalam
SQL Server.
11. AU = Lock pada unit alokasi. Informasi ini tidak lengkap dalam SQL Server.
SOAL 5
JAWABAN 5 A
Restore Operation
Full Recovery
Bulk-Logged Recovery
Simple Recovery
Log Backup
Membutuhkan log
backup
Membutuhkan log
backup
Data recovery
Recover to point in
time?
Dapat memulihkan
hanya untuk cadangan
akhir
File Restore
Full support
Terkadang
Page Restore
Full support
Terkadang
Tidak support
Full support
Terkadang
Perubahan sejak
backup terbaru. Dalam
terjadi bencana
perubahan yang terjadi
akan terulang
JAWABAN 5 B
Pada saat pertamakali melakukan create database nilai default dari model recovery database adalah
simple recovery Nilai tersebut dapat dilihat dari properties pada database baru yaitu seperti berikut ini :
1.
2.
Setelah database berhasil di create lihat nilai recovery dengan melalui properties
3. Setelah jendela properties muncul pilih pilihan options, lihat pada kolom recovery model
akan terlihat nilai default dari recovery.
JAWABAN 5 C
Cara mengubah recovery model pada database dapat dilakukan melalui Properties pilih
Options kemudian pilih atau lakukan perubahan dengan memilih recovery model yang
diinginkan. Langkah untuk mengubah dijelaskan sebagai berikut :
1. Lakukan koneksi database seperti biasa
2. Pilih database yang ingin dirubah klik kanan kemudian pilih properties
3.
4.
Setelah itu klik drop down pada recovery model kemudian pilih recovery model yang
diinginkan.
5.
Setelah dipilih untuk mengaktifkan perubahan klik tombol OK maka perubahan recovery
model akan tersimpan.
REFERENSI
http://stackoverflow.com/questions/1090240/how-do-you-set-autocommit-in-an-sql-server-session
https://suneethasdiary.wordpress.com/tag/disabling-auto-commit-mode-in-sql-server-managementstudio/
https://msdn.microsoft.com/en-us/library/ms189275.aspx
https://risqajulia.wordpress.com/2014/08/27/backup-dan-recovery-data/
http://hikaruyuuki.lecture.ub.ac.id/files/2010/08/11-Backup-Recovery.pdf
http://gavindraper.com/2012/02/18/sql-server-isolation-levels-by example/#
http://www.besttechtools.com/articles/article/sql-server-isolation-levels-by-example