Risposte:
Immagina per un secondo di avere un database da 1 terabyte. Il backup richiede un po 'di tempo e la crittografia richiede un po' di tempo. Quindi immagina che:
Cosa ti aspetteresti che la tua query restituisca, dato che non appena finisci di ripristinare il backup completo, continuerà ad applicare TDE, crittografando il resto del tuo database?
Al contrario, immagina di iniziare con un database già crittografato e:
Cosa ti aspetteresti che la query restituisca? Questi sono scenari di esempio del perché la crittografia TDE non è uno dei campi inclusi in msdb.dbo.backupset .
Ho votato a favore della risposta di Brent , poiché il suo scenario potrebbe sicuramente confondere la questione se il backup contenesse dati TDE.
Tuttavia, se TDE è stato abilitato per un po ', sembra che RESTORE FILELISTONLY (Transact-SQL) possa fornire le informazioni che stai cercando. Sul set di risultati è presente una colonna denominata TDEThumbprint"Mostra l'identificazione personale della chiave di crittografia del database. L'identificazione personale del crittografo è un hash SHA-1 del certificato con il quale è crittografata la chiave."
Ho esaminato alcuni dei miei backup che erano entrambi crittografati TDE e non crittografati TDE.
I backup dei miei database TDE avevano l'identificazione personale del certificato in quella colonna e i backup che non avevano database TDE erano nulli.
Estendendo la risposta di Scott, ecco la query SQL che ti dirà se un backup è crittografato o meno.
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'