SQL Server에서 기존 데이터베이스 스냅 샷을 어떻게 쿼리 할 수 ​​있습니까?


12

주어진 데이터베이스에 데이터베이스 스냅 샷이 있는지 여부를 확인할 수있는 t-sql 쿼리를 만들려고합니다.

예를 들어, 다음과 같이 스냅 샷을 생성하려는 경우 :

CREATE DATABASE [DatabaseA_Snapshot] ON 
(NAME=DatabaseA, FileName='<whatever>') 
AS SNAPSHOT OF [DatabaseA]

나중에 해당 스냅 샷의 존재를 쿼리 할 수있는 방법이 있습니까? sys.databases에 표시되는 것을 볼 수 있지만 DatabaseA에서 생성 된 데이터베이스 스냅 샷인지 확인하는 데 도움이되는 정보를 찾을 수 없습니다.

SQL Server Management Studio의 개체 탐색기는이를 '데이터베이스 스냅 샷'폴더 아래에 배치하므로 일반 데이터베이스와 구별 할 수있는 방법이 있습니다.

답변:


17

스냅 샷 데이터베이스에는에 항목이 sys.databases.source_database_id있으므로 다음과 같은 것을 사용하여 현재 스냅 샷을 확인할 수 있습니다. 마찬가지로 DROP새 스냅 샷을 만들기 전에 기존 스냅 샷에 동일한 검사를 사용할 수 있습니다 .

IF NOT EXISTS(
    SELECT 
        * 
    FROM 
        sys.databases 
    WHERE 
        name = 'DatabaseA_Snapshot' 
    AND source_database_id IS NOT NULL
    )
BEGIN
    CREATE DATABASE [DatabaseA_Snapshot] 
    ON (NAME=DatabaseA, FileName='<whatever>') 
    AS SNAPSHOT OF [DatabaseA]
END   
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.