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.