回答:
1テラバイトのデータベースがあるとします。バックアップにはしばらく時間がかかり、暗号化にはしばらく時間がかかります。想像してみてください:
完全バックアップの復元が完了するとすぐに、TDEの適用が続行され、データベースの残りの部分が暗号化されるため、クエリは何を返しますか?
逆に、すでに暗号化されたデータベースから始めて、次のことを想像してください。
クエリが何を返すと思いますか?これらは、TDE暗号化がmsdb.dbo.backupsetに含まれているフィールドの1つではない理由のシナリオ例です。
バックアップにTDEデータが含まれているかどうかについて、彼のシナリオが間違いなく混乱を招く可能性があるため、私はブレントの回答に賛成票を投じました。
ただし、TDEをしばらく有効にしていた場合は、RESTORE FILELISTONLY(Transact-SQL) が目的の情報を提供しているようです。結果セットにはTDEThumbprint
、「データベース暗号化キーの拇印を表示します。暗号化ツールの拇印は、キーの暗号化に使用された証明書のSHA-1ハッシュです」という列があります。
TDE暗号化とTDE暗号化の両方が行われていないバックアップの一部を確認しました。
TDEデータベースのバックアップの列には証明書の拇印があり、TDEデータベースのないバックアップにはnullがありました。
スコットの回答を拡張して、バックアップが暗号化されているかどうかを通知する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'