web-dev-qa-db-ja.com

SQL Serverで既存のデータベーススナップショットを照会するにはどうすればよいですか?

特定のデータベースに、そこから作成されたデータベーススナップショットがあるかどうかを判断できるt-sqlクエリを作成しようとしています。

たとえば、次のようなスナップショットを作成するとします。

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

そのスナップショットの存在を後でもう一度クエリできる方法はありますか? sys.databasesに表示されることがわかりますが、DatabaseAから作成されたデータベーススナップショットであると判断するのに役立つ情報が見つかりませんでした。

SQL Server Management Studioのオブジェクトエクスプローラーは、 'データベーススナップショット'フォルダーの下に配置するため、これらを通常のデータベースと区別するいくつかの方法があります。

12
Jesse Taber

スナップショットデータベースのエントリは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   
17