Câu trả lời:
Hãy tưởng tượng trong một giây rằng bạn đã có cơ sở dữ liệu 1 terabyte. Sao lưu nó mất một lúc và mã hóa nó mất một lúc. Hãy tưởng tượng rằng:
Bạn mong muốn truy vấn của mình sẽ trả về điều gì, ngay khi bạn hoàn tất khôi phục bản sao lưu đầy đủ, nó sẽ tiếp tục áp dụng TDE, mã hóa phần còn lại của cơ sở dữ liệu của bạn?
Ngược lại, hãy tưởng tượng rằng bạn bắt đầu với một cơ sở dữ liệu đã được mã hóa và:
Những gì bạn sẽ mong đợi các truy vấn trở lại? Đây là các kịch bản ví dụ về lý do tại sao mã hóa TDE không phải là một trong các trường được bao gồm trong msdb.dbo.backupset .
Tôi đã bình chọn câu trả lời của Brent , vì kịch bản của anh ấy chắc chắn có thể làm vấy bẩn nước về việc bản sao lưu có chứa dữ liệu TDE hay không.
Tuy nhiên, nếu bạn đã kích hoạt TDE trong một thời gian, có vẻ như RESTORE FILELISTONLY (Transact-SQL) có thể cung cấp thông tin mà bạn theo dõi. Có một cột trên tập kết quả được gọi là TDEThumbprint
"Hiển thị dấu vân tay của Khóa mã hóa cơ sở dữ liệu. Dấu vân tay của người mã hóa là hàm băm SHA-1 của chứng chỉ mà khóa được mã hóa."
Tôi đã xem xét một số bản sao lưu của mình, cả mã hóa TDE và không mã hóa TDE.
Các bản sao lưu cơ sở dữ liệu TDE của tôi có dấu vân tay chứng chỉ trong cột đó và các bản sao lưu không có cơ sở dữ liệu TDE là null.
Mở rộng Câu trả lời của Scott, đây là Truy vấn SQL sẽ cho bạn biết bản sao lưu có được mã hóa hay không.
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'