SQL सर्वर बैकअप को बैकअप पुनर्स्थापित किए बिना TDE के साथ एन्क्रिप्ट किया गया है, तो कैसे पता करें


13

यदि बैकअप फ़ाइल को पुनर्स्थापित करने की कोशिश किए बिना TDE के साथ बैकअप एन्क्रिप्ट किया गया है, तो SQL सर्वर बैकअप फ़ाइल या MSDB तालिकाओं से खोजने का एक तरीका है?

धन्यवाद

जवाबों:


10

एक दूसरे के लिए कल्पना करें कि आपको 1 टेराबाइट डेटाबेस मिला है। इसे बैकअप करने में कुछ समय लगता है, और एन्क्रिप्ट करने में कुछ समय लगता है। तो कल्पना कीजिए कि:

  • 9:00 पूर्वाह्न - आप पूर्ण बैकअप लेना शुरू करते हैं
  • 9:01 AM - एक अन्य विंडो में, आप डेटाबेस पर TDE को सक्षम करना शुरू करते हैं
  • 9:05 AM - बैकअप पूरा हुआ
  • 9:10 AM - TDE पूरा हुआ

आप अपनी क्वेरी की वापसी की उम्मीद करेंगे, यह देखते हुए कि जैसे ही आप पूर्ण बैकअप को बहाल करते हैं, यह TDE को लागू करना जारी रखता है, आपके बाकी डेटाबेस को एन्क्रिप्ट करता है?

इसके विपरीत, कल्पना करें कि आप पहले से ही एन्क्रिप्टेड डेटाबेस से शुरू करते हैं और:

  • 9:00 पूर्वाह्न - आप TDE निकालते हैं (जिसमें कुछ समय लगता है)
  • 9:01 AM - आप एक पूर्ण बैकअप शुरू करते हैं
  • 9:05 AM - डेटा पेज अब एन्क्रिप्ट नहीं किए गए हैं
  • 9:06 AM - आपका पूरा बैकअप पूरा हो गया

आप क्वेरी के वापस लौटने की क्या उम्मीद करेंगे? ये उदाहरण हैं कि क्यों TDE एन्क्रिप्शन msdb.dbo.backupset में शामिल फ़ील्ड में से एक नहीं है ।


एक त्वरित प्रतिक्रिया के लिए आप सभी का धन्यवाद और @ScottHodgin हाँ, मैं जानना चाहता था कि क्या बैकअप TDE डेटाबेस से है और ब्रेंट के उत्तर ने इसे स्पष्ट कर दिया है।
यज्ञस्विव

@ बेंट ओजर: दोनों मामलों में, मैं चाहता हूं कि क्वेरी वापस लौटे, "आंशिक रूप से एन्क्रिप्टेड।" हां, इसका अर्थ है कि बूलियन के बजाय 3-राज्य संपत्ति होना। जब तक Microsoft इसे लागू नहीं करता, जाहिर है ऐसी संपत्ति वास्तव में संभव नहीं है।
ब्रायन

@ ब्रायन बिंगो। यह वर्तमान स्थिति को देखते हुए संभव नहीं है।
ब्रेंट ओजर

30

मैंने ब्रेंट के जवाब को वोट दिया , क्योंकि उनका परिदृश्य निश्चित रूप से पानी को खराब कर सकता था, चाहे बैकअप में टीडीई डेटा हो।

हालाँकि, यदि आपने TDE को कुछ समय के लिए सक्षम किया है, तो ऐसा लगता है कि RESTORE FILELISTONLY (Transact-SQL) आपके द्वारा दी गई जानकारी प्रदान कर सकता है । रिजल्ट सेट पर एक कॉलम होता है TDEThumbprintजिसे "डेटाबेस एन्क्रिप्शन कुंजी के थंबप्रिंट को दिखाता है। एन्क्रिप्टर थंबप्रिंट प्रमाणपत्र का SHA-1 हैश है जिसके साथ कुंजी एन्क्रिप्ट किया गया है।"

मैंने अपने कुछ बैकअप देखे जो TDE एन्क्रिप्टेड थे और TDE एन्क्रिप्टेड नहीं थे।

मेरे TDE डेटाबेस के बैकअप में उस कॉलम में प्रमाणपत्र थंबप्रिंट था और जिन बैकअप में TDE डेटाबेस नहीं था, वे शून्य थे।


2

स्कॉट के उत्तर का विस्तार करते हुए, यहां SQL क्वेरी है जो आपको बताएगी कि बैकअप एन्क्रिप्टेड है या नहीं।

Declare @backupFile varchar(max) = 'J:\backups\psa20191029.bak'

 DECLARE @fileListTable TABLE (
    [LogicalName]           NVARCHAR(128),
    [PhysicalName]          NVARCHAR(260),
    [Type]                  CHAR(1),
    [FileGroupName]         NVARCHAR(128),
    [Size]                  NUMERIC(20,0),
    [MaxSize]               NUMERIC(20,0),
    [FileID]                BIGINT,
    [CreateLSN]             NUMERIC(25,0),
    [DropLSN]               NUMERIC(25,0),
    [UniqueID]              UNIQUEIDENTIFIER,
    [ReadOnlyLSN]           NUMERIC(25,0),
    [ReadWriteLSN]          NUMERIC(25,0),
    [BackupSizeInBytes]     BIGINT,
    [SourceBlockSize]       INT,
    [FileGroupID]           INT,
    [LogGroupGUID]          UNIQUEIDENTIFIER,
    [DifferentialBaseLSN]   NUMERIC(25,0),
    [DifferentialBaseGUID]  UNIQUEIDENTIFIER,
    [IsReadOnly]            BIT,
    [IsPresent]             BIT,
    [TDEThumbprint]         VARBINARY(32) -- remove this column if using SQL 2005
)
INSERT INTO @fileListTable EXEC('RESTORE FILELISTONLY FROM DISK = '''+@backupFile+'''')


select distinct LogicalName + case when TDEThumbprint is null then ' is not encrypted'
                                    else ' is encrypted'
                                    end as AmIEncrypted
from @fileListTable
where type='D'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.