Bagaimana saya bisa meminta snapshot database yang ada di SQL server?


12

Saya mencoba membuat kueri t-sql yang dapat menentukan apakah database yang diberikan memiliki snapshot database yang dibuat atau tidak.

Misalnya, jika saya membuat snapshot seperti ini:

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

Apakah ada cara saya bisa menanyakan keberadaan snapshot itu lagi nanti? Saya dapat melihat bahwa itu muncul di sys.databases, tetapi saya tidak dapat menemukan informasi yang akan membantu saya menentukan bahwa itu adalah snapshot database yang dibuat dari DatabaseA.

Obyek Explorer SQL Server Management Studio menempatkannya di bawah folder 'Database Snapshots' sehingga jelas ada beberapa cara untuk membedakan ini dari database biasa.

Jawaban:


17

Database snapshot akan memiliki entri sys.databases.source_database_id, sehingga Anda dapat menggunakan sesuatu seperti berikut untuk memeriksa snapshot saat ini. Demikian pula, Anda bisa menggunakan pemeriksaan yang sama untuk DROPfoto yang ada sebelum membuat yang baru.

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   
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.