SQL sunucusundaki mevcut veritabanı anlık görüntülerini nasıl sorgulayabilirim?


12

Belirli bir veritabanı ondan oluşturulan herhangi bir veritabanı anlık görüntüleri olup olmadığını belirleyebilir bir t-sql sorgusu oluşturmaya çalışıyorum.

Örneğin, ben böyle bir anlık görüntü oluşturmak olsaydı:

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

Daha sonra tekrar bu anlık görüntünün varlığını sorgulamak için bir yolu var mı? Sys.databases içinde göründüğünü görebiliyorum, ancak DatabaseA'dan oluşturulan bir veritabanı anlık görüntüsü olduğunu belirlememe yardımcı olacak herhangi bir bilgi bulamadım.

SQL Server Management Studio'nun Nesne Gezgini, onu 'Veritabanı Anlık Görüntüleri' klasörünün altına yerleştirir, böylece bunları normal veritabanlarından ayırt etmenin bir yolu vardır.

Yanıtlar:


17

Anlık görüntü veritabanında bir giriş bulunur sys.databases.source_database_id, böylece geçerli bir anlık görüntüyü kontrol etmek için aşağıdakine benzer bir şey kullanabilirsiniz. Benzer şekilde, DROPyeni oluşturmadan önce mevcut bir anlık görüntüyle aynı denetimi kullanabilirsiniz .

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   
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.