SQL सर्वर में मौजूदा डेटाबेस स्नैपशॉट के लिए मैं कैसे क्वेरी कर सकता हूं?


12

मैं एक t-sql क्वेरी बनाने की कोशिश कर रहा हूं जो यह निर्धारित कर सकती है कि किसी दिए गए डेटाबेस में कोई डेटाबेस स्नैपशॉट है या नहीं जो कि इससे बनाया गया था।

उदाहरण के लिए, अगर मैं इस तरह एक स्नैपशॉट बनाने के लिए थे:

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

क्या कोई तरीका है जो मैं बाद में उस स्नैपशॉट के अस्तित्व के लिए क्वेरी कर सकता हूं? मैं देख सकता हूं कि यह sys.dat डेटाबेस में दिखाई देता है, लेकिन मुझे कोई भी जानकारी नहीं मिली जो मुझे यह निर्धारित करने में मदद करे कि यह एक डेटाबेस स्नैपशॉट है जो डेटाबेस से बनाया गया था।

SQL सर्वर प्रबंधन स्टूडियो का ऑब्जेक्ट एक्सप्लोरर इसे 'डेटाबेस स्नैपशॉट' फ़ोल्डर के अंतर्गत रखता है, इसलिए स्पष्ट रूप से नियमित डेटाबेस से इन्हें अलग करने का कोई तरीका है।

जवाबों:


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   
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.