Şifrelenmiş veritabanını başka bir sunucuya geri yükleme


10

SQLServer 2008 üzerinde çalışan bir ürün kullanıyorum. Anlaşılır şekilde onu sağlayan şirket SQLServer desteği sunmuyor. Ürünü kurduğumda veritabanını şifrelemek için bir şifre belirledim. Başka bir sunucuda test edilmek üzere ürünün başka bir kopyasını çalıştırmak istiyorum. Veritabanını başka bir sunucuya geri yükledim ve ürünü diğer sunucuya yükledim. Yüklediğimde aynı şifreyi verdim ve ardından ana sunucudan bir yedeği geri yükledim. Ancak hata mesajını alıyorum:

System.Data.SqlClient.SqlException: An error occurred during decryption.

üründen. SQLServer Management studio'yu kullanarak tablolara erişebilirim.

Bunu denedim:

ilk sunucuda:

CREATE CERTIFICATE cert1 WITH SUBJECT = 'Certificate for my stuff'

BACKUP CERTIFICATE  cert1 TO FILE = 'd:\backup\cert1.dat' 
WITH PRIVATE KEY 
(
ENCRYPTION BY PASSWORD = 'mypassword',
FILE = 'd:\backup\cert1_privatekey.dat'
)

ikinci sunucuda:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mypassword'

CREATE CERTIFICATE cert1 FROM FILE = 'd:\cert1.dat'
WITH PRIVATE KEY
(
FILE = 'd:\cert1_privatekey.dat',
DECRYPTION BY PASSWORD = 'mypassword'
)

Ayrıca ikinci sunucuda bunu denedim:

alter MASTER KEY regenerate with enCRYPTION BY PASSWORD='password'

ancak bu asimetrik bir anahtar hakkında bir hata mesajı verdi.

Yedeklemeyi ilk sunucudan ikinci sunucuya nasıl geri yükleyebilirim?

Güncelleme:

Veritabanında da asimetrik ve simetrik bir anahtar vardır. Simetrik anahtarı asimetrik anahtarı kullanarak açarsam aynı hatayı alıyorum, bu yüzden işe yaramadığını düşünüyorum - bir şekilde anahtarlar kullanılabilecek şekilde aktarılmıyor.

Yanıtlar:


8

Ben yazdım yansıtma ve TDE hakkında bir blog girişi.

İkincil sunucuda db almak için anlamaya biraz zaman aldı, ben kod satırı gerekli:

 OPEN MASTER KEY DECRYPTION BY PASSWORD = 'SomePassword'
 ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
 GO

Parola, ana anahtar dosyasını şifrelemek için kullandığım parolayla aynı. Komutu 2. SQL sunucusunda verdikten sonra, her şey güzel oynadı. İşte ben de yaptığım db.stackexchange yazı.


Bu blog girişi faydalıdır. Ben "master" yerine kopyalamak istediğiniz belirli bir veritabanı kullanmak dışında izledim. "Eski ana anahtar tarafından şifrelenen asimetrik anahtar 'asym_something' şifresi çözülürken bir hata oluştu. FORCE seçeneği bu hatayı yok saymak ve işleme devam etmek için kullanılabilir, ancak eski ana anahtar tarafından şifresi çözülemeyen veriler kullanılamaz hale gelecek. " ana anahtarı dosyadan geri yüklediğimde. YÜRÜTMELİ MİYİM? (Bu, veritabanını geri yükledikten sonra, oysa talimatlarınız daha sonra geri yüklüyor.)
paulmorriss

1
Teşekkürler, anlaması çok uzun sürdü. eek, zorlaman gerektiğinden emin değilim. Anladığım gibi, "anahtarlar" her sunucudaki MASTER veritabanlarına bağlıdır. Veritabanına bağlı olan tek şey, ana anahtar tarafından imzalanan sertifikadır. Bu nedenle, sunucu1 üzerinde bir ana anahtar oluşturmanız, yedeklemeniz ve daha sonra anahtarı sunucu 2'ye geri yüklemeniz gerekir. Sonra veritabanı için sertifikayı hareket ettirin. Umarım başka biri konuya ışık tutabilir.
RateControl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.