Bagaimana saya bisa tahu jika Isolasi Snapshot dihidupkan?

34

Dalam SQL Server 2005/2008, bagaimana saya bisa tahu jika Isolasi Snapshot dihidupkan? Saya tahu cara mengaktifkannya, tetapi saya tidak dapat menemukan mantera untuk mendapatkan google untuk memberi tahu saya bagaimana cara menanyakan keadaan opsi Isolasi Snapshot.

Samuel Jack
sumber

Jawaban:

6

klik kanan pada direktori database di objek explorer dan mulai PowerShell. ketik:
get-childitem|select name, snapshotisolationstate
dan tekan kembali

Fatherjack
sumber
9
wow, apakah PS benar-benar diperlukan?
Nick Kavadias
66

Powershell, benarkah? apa yang salah dengan T-SQL kuno yang bagus?

sys.databases adalah apa yang Anda inginkan. Ini memiliki kolom deskripsi yang dapat dibaca manusia seperti snapshot_isolation_state_desc

SELECT snapshot_isolation_state_desc from sys.databases 
where name='adventureworks'
Nick Kavadias
sumber
2
Tidak, tidak sepenuhnya diperlukan tapi saya baru mulai belajar PS jadi lihatlah untuk melihat bagaimana itu bisa dilakukan dan saya pikir saya akan berbagi ..!
Fatherjack
sebanyak yang saya benci mengakuinya, itu keren
Nick Kavadias
sejujurnya, saya berjuang untuk melihat ini akan banyak berguna bagi saya, kami hanya memiliki 30 server. Jika saya ingin snapshot isolasi dari setiap database pada setiap server maka saya kira PS mungkin lebih baik daripada T-SQL .. untuk sekarang saya melihatnya hanya sebagai alternatif, saya akan menggunakannya di sana-sini saya harapkan.
Fatherjack
Saya tidak dapat mengedit karena ini kurang dari perubahan enam karakter, tetapi untuk jiwa bingung lainnya yang menyalin dan menempelkan kueri, perhatikan bahwa itu harus sys.database s dan bukan sys.database.
Mark Sowul
15

Memperluas respons torehan dari atas ..

Berikut ini akan mengembalikan informasi tentang semua database Anda

    select name
        , s.snapshot_isolation_state
        , snapshot_isolation_state_desc
        , is_read_committed_snapshot_on
        , recovery_model
        , recovery_model_desc
        , collation_name
    from sys.databases s
jcrawfor74
sumber
3

Atau menggunakan kode T-SQL:

SELECT
'Current Isolation State:' [ ],
CASE is_read_committed_snapshot_on
        WHEN 1 THEN 'ON' ELSE 'OFF'
    END AS [Read Committed Snapsot State]
FROM sys.databases
WHERE name = 'MyDatabaseName'
Arthur
sumber
2
Jawaban ini untuk read_committed_snapshot, bukan untuk Level Isolasi Snapshot seperti yang diminta OP. Mereka adalah dua hal yang berbeda.
Kevin Kalitowski
0

Cara menguji apakah tingkat isolasi transaksi snapshot diaktifkan

Untuk menguji apakah tingkat isolasi transaksi snapshot diaktifkan, ikuti langkah-langkah ini:

  1. Mulai SQL Server Profiler.
  2. Buat jejak baru untuk menyambungkan ke sumber data yang Anda tentukan dalam proyek Layanan Analisis.
  3. Di kotak dialog Properti Lacak , klik tab Pilihan Acara .
  4. Di kolom TransactionID, klik untuk memilih kotak centang di baris untuk acara SQL: BatchCompleted dan di baris untuk acara SQL: BatchStarting.

Catatan Untuk menampilkan kolom TransactionID, klik untuk memilih kotak centang Tampilkan semua kolom .

  1. Klik Jalankan untuk memulai penelusuran.
  2. Di Business Development Intelligence Studio, proses proyek Layanan Analisis.

  3. Di SQL Server Profiler, cari peristiwa SQL: BatchCompleted dan untuk peristiwa SQL: BatchStarting yang memiliki nilai yang sama di kolom TransactionID. Biasanya, peristiwa ini mengandung pernyataan SELECT di kolom TextData. Untuk acara ini, dapatkan ID sesi di kolom SPID.

  4. Untuk terhubung ke sumber data, mulai SQL Server Management Studio.

  5. Buat kueri baru, dan kemudian jalankan pernyataan Transact-SQL berikut.

    pilih session_id, Transaction_Isolation_Level dari sys.dm_exec_sessions di mana session_id =

Catatan Dalam pernyataan ini, adalah penampung untuk ID sesi yang Anda peroleh di langkah 7.

  1. Pada tab Hasil , perhatikan nilai di kolom Transaction_Isolation_Level. Nilai ini menunjukkan tingkat isolasi transaksi yang Anda gunakan dalam proyek Layanan Analisis. Ketika tingkat isolasi transaksi snapshot diaktifkan, nilai di kolom Transaction_Isolation_Level adalah 5.

Tabel berikut ini memperlihatkan nilai-nilai di kolom Transaction_Isolation_Level dan tingkat isolasi transaksi yang sesuai.

tabel yang menunjukkan tingkat isolasi transaksi

https://support.microsoft.com/en-us/help/919160/how-to-enable-the-snapshot-transaction-isolation-level-in-sql-server-2

JAHAT
sumber