Odpowiedzi:
Wyobraź sobie przez chwilę, że masz 1 terabajtową bazę danych. Tworzenie kopii zapasowej zajmuje trochę czasu, a szyfrowanie zajmuje trochę czasu. Wyobraź sobie, że:
Czego można się spodziewać po zwróceniu zapytania, biorąc pod uwagę, że jak tylko przywrócisz pełną kopię zapasową, nadal będzie stosować TDE, szyfrując resztę bazy danych?
I odwrotnie, wyobraź sobie, że zaczynasz od już zaszyfrowanej bazy danych i:
Czego można oczekiwać od zapytania? Oto przykładowe scenariusze, dlaczego szyfrowanie TDE nie jest jednym z pól zawartych w pliku msdb.dbo.backupset .
Głosowałem za odpowiedzią Brenta , ponieważ jego scenariusz zdecydowanie może zmącić wodę, czy kopia zapasowa zawierała dane TDE.
Jeśli jednak masz włączone TDE, wydaje się, że PRZYWRACANIE FILELISTONLY (Transact-SQL) może dostarczyć poszukiwanych informacji. W zestawie wyników znajduje się kolumna o nazwie TDEThumbprint
„Pokazuje odcisk palca klucza szyfrowania bazy danych. Odcisk palca szyfratora to skrót SHA-1 certyfikatu, za pomocą którego klucz jest szyfrowany”.
Przejrzałem niektóre z moich kopii zapasowych, które były zarówno szyfrowane TDE, jak i nieszyfrowane TDE.
Kopie zapasowe moich baz danych TDE miały odcisk palca certyfikatu w tej kolumnie, a kopie zapasowe, które nie miały baz danych TDE, miały wartość zerową.
Rozszerzając odpowiedź Scotta, oto zapytanie SQL, które powie ci, czy kopia zapasowa jest zaszyfrowana, czy nie.
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'