스냅 샷 격리가 켜져 있는지 어떻게 알 수 있습니까?


34

SQL Server 2005/2008에서 스냅 샷 격리가 설정되어 있는지 어떻게 알 수 있습니까? 사용 설정 방법 을 알고 있지만 Google에서 Snapshot Isolation 옵션의 상태를 쿼리하는 방법을 알려주는 주문을 찾을 수 없습니다.

답변:


6

객체 탐색기에서 데이터베이스 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 powershell을 시작하십시오. 유형 :
get-childitem|select name, snapshotisolationstate
그리고 return return


9
와, 정말 PS가 필요한가요?
Nick Kavadias

66

파워 쉘? 좋은 ol '형식의 T-SQL의 문제점은 무엇입니까?

sys.databases 는 원하는 것입니다. snapshot_isolation_state_desc와 같이 사람이 읽을 수있는 설명 열이 있습니다.

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

2
아니, 전적으로 필요하지는 않지만 방금 PS를 배우기 시작했기 때문에 어떻게 할 수 있는지보고 공유 할 것이라고 생각했습니다 ..!
Fatherjack

내가 인정하기를 싫어하는만큼 시원합니다
Nick Kavadias

솔직히 말해서, 나는 그것이 나에게 많은 용도로 사용되기를 고심하고 있습니다. 우리는 30 대의 서버 만 가지고 있습니다. 모든 서버의 모든 데이터베이스에서 스냅 숏 격리를 원한다면 PS가 T-SQL보다 낫다고 생각합니다. 지금은 대안으로 간주되므로 여기저기서 사용할 것입니다.
Fatherjack

6 글자 미만으로 편집 할 수는 없지만 쿼리를 복사하여 붙여 넣는 다른 혼란스러운 영혼의 경우 sys.database 아니라 sys.database 이어야합니다 .
Mark Sowul

15

위에서 닉 응답 확장

다음은 모든 데이터베이스에 대한 정보를 반환합니다.

    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
이 답변은 요청 된 OP와 같은 스냅 샷 격리 수준이 아니라 read_committed_snapshot에 대한 것입니다. 그것들은 서로 다른 두 가지입니다.
케빈 칼리토 프 스키

0

스냅 샷 트랜잭션 격리 수준의 활성화 여부를 테스트하는 방법

스냅 샷 트랜잭션 격리 레벨이 사용 가능한지 테스트하려면 다음 단계를 수행하십시오.

  1. SQL Server 프로파일 러를 시작하십시오.
  2. Analysis Services 프로젝트에서 지정한 데이터 소스에 연결할 새 추적을 작성하십시오.
  3. 에서 추적 속성 대화 상자에서 클릭 이벤트 선택 탭을 선택합니다.
  4. TransactionID 열에서 SQL : BatchCompleted 이벤트 행과 SQL : BatchStarting 이벤트 행의 확인란을 클릭하여 선택합니다.

참고 TransactionID 열을 표시하려면 모든 열 표시 확인란 을 선택합니다 .

  1. 실행 을 클릭 하여 추적을 시작하십시오.
  2. Business Intelligence Development Studio에서 Analysis Services 프로젝트를 처리하십시오.

  3. SQL Server 프로파일 러에서 TransactionID 열의 값이 같은 SQL : BatchCompleted 이벤트와 SQL : BatchStarting 이벤트를 찾습니다. 일반적으로 이러한 이벤트는 TextData 열에 SELECT 문을 포함합니다. 이러한 이벤트의 경우 SPID 열에서 세션 ID를 얻습니다.

  4. 데이터 원본에 연결하려면 SQL Server Management Studio를 시작하십시오.

  5. 새 쿼리를 만들고 다음 Transact-SQL 문을 실행하십시오.

    sys.dm_exec_sessions에서 session_id, Transaction_Isolation_Level을 선택하십시오. 여기서 session_id =

참고이 설명에서 7 단계에서 얻은 세션 ID의 자리 표시 자입니다.

  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.