มีวิธีการค้นหาจากไฟล์ SQL Server Backup หรือตาราง MSDB หรือไม่หากการสำรองข้อมูลถูกเข้ารหัสด้วย TDE โดยไม่ต้องพยายามเรียกคืนไฟล์ข้อมูลสำรอง?
ขอบคุณ
มีวิธีการค้นหาจากไฟล์ SQL Server Backup หรือตาราง MSDB หรือไม่หากการสำรองข้อมูลถูกเข้ารหัสด้วย TDE โดยไม่ต้องพยายามเรียกคืนไฟล์ข้อมูลสำรอง?
ขอบคุณ
คำตอบ:
ลองคิดดูสักครู่ว่าคุณมีฐานข้อมูล 1 เทราไบต์ การสำรองข้อมูลใช้เวลาสักครู่และการเข้ารหัสจะใช้เวลาครู่หนึ่ง ดังนั้นลองจินตนาการว่า:
สิ่งที่คุณคาดหวังว่าแบบสอบถามของคุณจะกลับมาเมื่อคุณคืนค่าการสำรองข้อมูลเต็มรูปแบบให้เสร็จสมบูรณ์จะมีการใช้ TDE ต่อไปโดยเข้ารหัสลับส่วนที่เหลือของฐานข้อมูลของคุณ
ในทางกลับกันลองจินตนาการว่าคุณเริ่มต้นด้วยฐานข้อมูลที่เข้ารหัสไว้แล้วและ:
คุณคาดหวังให้แบบสอบถามส่งคืนอะไร เหล่านี้เป็นตัวอย่างสถานการณ์ที่ว่าทำไมการเข้ารหัส TDE ไม่ได้เป็นหนึ่งของเขตข้อมูลที่รวมอยู่ในmsdb.dbo.backupset
ฉันลงมติให้คำตอบของเบรนต์เนื่องจากสถานการณ์ของเขาอาจทำให้น้ำขุ่นมัวอย่างแน่นอนว่าข้อมูลสำรองมีข้อมูล TDE หรือไม่
อย่างไรก็ตามหากคุณเปิดใช้งาน TDE มาระยะหนึ่งดูเหมือนว่าRESTORE FILELISTONLY (Transact-SQL) อาจให้ข้อมูลที่คุณต้องการ มีคอลัมน์ในชุดผลลัพธ์ที่เรียกว่าTDEThumbprint"แสดงรหัสประจำตัวของคีย์การเข้ารหัสฐานข้อมูลรหัสประจำตัวของการเข้ารหัสคือแฮช SHA-1 ของใบรับรองที่มีการเข้ารหัสคีย์"
ฉันดูข้อมูลสำรองบางส่วนซึ่งเข้ารหัสทั้ง TDE และไม่เข้ารหัส TDE
การสำรองข้อมูลของฐานข้อมูล TDE ของฉันมีรหัสประจำตัวใบรับรองในคอลัมน์นั้นและการสำรองข้อมูลที่ไม่มีฐานข้อมูล TDE นั้นเป็นโมฆะ
ขยายคำตอบของ Scott นี่คือ SQL Query ที่จะบอกคุณว่าการสำรองข้อมูลถูกเข้ารหัสหรือไม่
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'