TDE özellikli bir veritabanı SQL Server

Bu makale, hizmet ana anahtarı (SMK) tarafından ana anahtarın otomatik olarak şifrelenmesi kaldırıldığında TDE özellikli veritabanının kurtarılmaması sorununu çözmenize yardımcı olur.

Şunlar için geçerlidir: SQL Server 2008 Enterprise, SQL Server 2008 R2 Enterprise
Özgün KB numarası: 2666213

Belirtiler

Microsoft SQL Server 2008 ve Microsoft SQL Server 2008 R2'de, saydam veritabanı şifrelemesi (TDE) için etkinleştirilmiş bir veritabanı kurtarılamayabilir. Ayrıca aşağıdaki hata iletisi SQL Server hata günlüğüne kaydedilebilir:

2012-01-14 22:16:26.47 spid20s Hatası: 15581, Önem Derecesi: 16, Durum: 3.
2012-01-14 22:16:26.47 spid20s Bu işlemi gerçekleştirmeden önce lütfen veritabanında bir ana anahtar oluşturun veya oturumda ana anahtarı açın.

Neden

Bu sorun, aşağıdaki komut çalıştırıldığında ana veritabanındaki veritabanı ana anahtarı için hizmet ana anahtarı şifrelemesi kaldırıldığında oluşur:

USE MASTER
GO
ALTER MASTER KEY DROP ENCRYPTION BY SERVICE MASTER KEY

Bir veritabanı ana anahtarı (DMK) ilk kez oluşturulduğunda, SMK ile otomatik olarak şifrelenir.

Veritabanı ana anahtarı, Saydam Veritabanı Şifreleme özelliği tarafından kullanılan sertifikayı şifrelemek için kullanılır. TDE özellikli veritabanını kullanmaya yönelik tüm girişimler için sertifikaya ve ana veritabanındaki veritabanı ana anahtarına erişim gerekir. Varsayılan yapılandırma altında DMK, SMK tarafından örtük olarak açılır. Hizmet ana anahtarı tarafından şifrelenmemiş bir ana anahtar, ana anahtara erişim gerektiren her oturumda bir parolayla birlikte deyimi kullanılarak OPEN MASTER KEY açıkça açılmalıdır.

Veritabanı kurtarma, sistem oturumlarında gerçekleşir. Bu oturumlar sertifikayı ve DMK'yi açamazsa, DMK'nin SMK tarafından otomatik şifre çözmesi kaldırılırsa kurtarma TDE özellikli bir veritabanında tamamlanamaz. Bu senaryoda veritabanı Kurtarma Bekliyor olarak işaretlenir.

Çözüm

Sorunu çözmek için ana anahtarın otomatik şifre çözmesini etkinleştirin. Bunu yapmak için aşağıdaki farklı komutu çalıştırın:

USE MASTER
GO
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY

Veritabanını çevrimdışına alın ve komutunu kullanarak çevrimiçi yapın ALTER DATABASE <databasename> SET ONLINE .

Ana anahtarın ana veritabanı için hizmet ana anahtarı tarafından otomatik şifre çözmesinin devre dışı bırakılıp bırakılmadığını belirlemek için aşağıdaki sorguyu kullanın:

SELECT is_master_key_encrypted_by_server FROM sys.databases WHERE NAME = 'master'

Bu sorgu 0 değerini döndürürse, ana anahtarın hizmet ana anahtarı tarafından otomatik şifre çözmesi devre dışı bırakılır.