ฉันจะทราบได้อย่างไรว่าเปิด Snapshot Isolation อยู่หรือไม่


34

ใน SQL Server 2005/2008 ฉันจะทราบได้อย่างไรว่ามีการเปิด Snapshot Isolation หรือไม่ ฉันรู้วิธีเปิดใช้งาน แต่ฉันไม่พบคาถาเพื่อให้ google บอกวิธีการสอบถามสถานะของตัวเลือก Snapshot Isolation

คำตอบ:


6

คลิกขวาที่ไดเรกทอรีฐานข้อมูลใน Object explorer และเริ่ม powershell ประเภท:
get-childitem|select name, snapshotisolationstate
และกด Return


9
ว้าว PS จำเป็นจริงๆเหรอ?
Nick Kavadias

66

Powershell จริงเหรอ? เกิดอะไรขึ้นกับ T-SQL ที่ดีแบบ ol

sys.databaseเป็นสิ่งที่คุณต้องการ มีคอลัมน์คำอธิบายที่มนุษย์สามารถอ่านได้เช่น snapshot_isolation_state_desc

SELECT snapshot_isolation_state_desc from sys.databases 
where name='adventureworks'

2
ไม่ไม่จำเป็นทั้งหมด แต่ฉันเพิ่งเริ่มเรียนรู้ PS ดังนั้นลองมาดูว่ามันสามารถทำได้และคิดว่าฉันจะแบ่งปัน .. !
Fatherjack

เท่าที่ฉันเกลียดที่จะยอมรับมันช่างยอดเยี่ยม
Nick Kavadias

พูดตามตรงฉันพยายามดิ้นรนที่จะเห็นว่ามันจะมีประโยชน์กับฉันมากเรามีเซิร์ฟเวอร์ 30ish เท่านั้น ถ้าฉันต้องการแยกสแนปช็อตจากทุกฐานข้อมูลในเซิร์ฟเวอร์ทุกเครื่องฉันคิดว่า PS อาจจะดีกว่า T-SQL .. ตอนนี้ฉันเห็นว่ามันเป็นทางเลือกฉันจะใช้ที่นี่และฉันคาดหวัง
Fatherjack

ฉันไม่สามารถแก้ไขได้เนื่องจากมีการเปลี่ยนแปลงน้อยกว่าหกตัวอักษร แต่สำหรับวิญญาณที่สับสนอื่น ๆ ที่คัดลอกและวางข้อความค้นหาโปรดทราบว่าควรเป็น sys.database sและไม่ใช่ sys.database
Mark Sowul

15

การขยายการตอบสนองของ nicks จากด้านบน ..

ต่อไปนี้จะส่งคืนข้อมูลเกี่ยวกับฐานข้อมูลทั้งหมดของคุณ

    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

3

หรือใช้รหัส 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'

2
คำตอบนี้สำหรับ read_committed_snapshot ไม่ใช่สำหรับระดับ Snapshot Isolation เช่น OP ที่ร้องขอ พวกเขาเป็นสองสิ่งที่แตกต่างกัน
Kevin Kalitowski

0

วิธีการทดสอบว่าระดับการแยกธุรกรรมสแนปชอตเปิดใช้งานอยู่หรือไม่

เมื่อต้องการทดสอบว่าระดับการแยกธุรกรรม snapshot ถูกเปิดใช้งานทำตามขั้นตอนเหล่านี้:

  1. เริ่มตัวสร้างโปรไฟล์ของเซิร์ฟเวอร์ SQL
  2. สร้างการสืบค้นกลับใหม่เพื่อเชื่อมต่อกับแหล่งข้อมูลที่คุณระบุในโครงการ Analysis Services
  3. ในกล่องโต้ตอบติดตามคุณสมบัติคลิกแท็บการเลือกเหตุการณ์
  4. ในคอลัมน์ TransactionID คลิกเพื่อเลือกกล่องกาเครื่องหมายในแถวสำหรับ SQL: BatchCompleted เหตุการณ์และในแถวสำหรับเหตุการณ์ SQL: BatchStarting

หมายเหตุเมื่อต้องการแสดงคอลัมน์ TransactionID คลิกเพื่อเลือกกล่องกาเครื่องหมายแสดงคอลัมน์ทั้งหมด

  1. คลิกเรียกใช้เพื่อเริ่มการติดตาม
  2. ใน Business Intelligence Development Studio ดำเนินการโครงการ Analysis Services

  3. ใน SQL Server Profiler ค้นหาเหตุการณ์ SQL: BatchCompleted และสำหรับ SQL: BatchStarting เหตุการณ์ที่มีค่าเดียวกันในคอลัมน์ TransactionID โดยทั่วไปแล้วเหตุการณ์เหล่านี้มีคำสั่ง SELECT ในคอลัมน์ TextData สำหรับเหตุการณ์เหล่านี้รับ ID เซสชันในคอลัมน์ SPID

  4. เมื่อต้องการเชื่อมต่อกับแหล่งข้อมูลให้เริ่ม Studio จัดการเซิร์ฟเวอร์ SQL

  5. สร้างแบบสอบถามใหม่แล้วเรียกใช้คำสั่ง Transact-SQL ต่อไปนี้

    เลือก session_id, Transaction_Isolation_Level จาก sys.dm_exec_sessions โดยที่ session_id =

หมายเหตุในคำสั่งนี้เป็นตัวยึดสำหรับรหัสเซสชันที่คุณได้รับในขั้นตอนที่ 7

  1. บนแท็บผลลัพธ์ให้สังเกตค่าในคอลัมน์ Transaction_Isolation_Level ค่านี้ระบุระดับการแยกธุรกรรมที่คุณใช้ในโครงการ Analysis Services เมื่อเปิดใช้งานการแยกธุรกรรมระดับสแนปชอตค่าในคอลัมน์ Transaction_Isolation_Level คือ 5

ตารางต่อไปนี้แสดงค่าในคอลัมน์ Transaction_Isolation_Level และระดับการแยกธุรกรรมที่สอดคล้องกัน

ตารางแสดงระดับการแยกธุรกรรม

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.