กู้คืนฐานข้อมูลที่เข้ารหัสไปยังเซิร์ฟเวอร์อื่น


10

ฉันใช้ผลิตภัณฑ์ที่ทำงานบน SQLServer 2008 เข้าใจได้ว่า บริษัท ที่จัดหานั้นไม่ได้ให้การสนับสนุน SQLServer เมื่อฉันติดตั้งผลิตภัณฑ์ฉันระบุรหัสผ่านเพื่อเข้ารหัสฐานข้อมูล ฉันต้องการเรียกใช้สำเนาผลิตภัณฑ์อื่นเพื่อทดสอบบนเซิร์ฟเวอร์อื่น ฉันกู้คืนฐานข้อมูลไปยังเซิร์ฟเวอร์อื่นและติดตั้งผลิตภัณฑ์บนเซิร์ฟเวอร์อื่นนั้น เมื่อฉันติดตั้งฉันได้ให้รหัสผ่านเดียวกันแล้วคืนค่าการสำรองข้อมูลจากเซิร์ฟเวอร์หลัก อย่างไรก็ตามฉันได้รับข้อความแสดงข้อผิดพลาด:

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

จากผลิตภัณฑ์ ฉันสามารถเข้าถึงตารางโดยใช้สตูดิโอจัดการ SQLServer

ฉันได้ลองสิ่งนี้แล้ว:

บนเซิร์ฟเวอร์แรก:

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'
)

บนเซิร์ฟเวอร์ที่สอง:

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'
)

ฉันยังลองนี้ในเซิร์ฟเวอร์ที่สอง:

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

แต่นั่นทำให้เกิดข้อผิดพลาดเกี่ยวกับคีย์ไม่สมมาตร

ฉันจะคืนค่าการสำรองข้อมูลจากเซิร์ฟเวอร์แรกไปยังเซิร์ฟเวอร์ที่สองได้อย่างไร

ปรับปรุง:

มีคีย์แบบอสมมาตรและสมมาตรในฐานข้อมูลด้วย หากฉันเปิดคีย์ symmetric โดยใช้คีย์ asymmetric ฉันได้รับข้อผิดพลาดเดียวกันดังนั้นฉันจึงคิดว่านั่นเป็นสาเหตุที่มันไม่ทำงาน - อย่างใดแป้นไม่ได้ถ่ายโอนในลักษณะที่สามารถใช้งานได้

คำตอบ:


8

ฉันเขียนบล็อกเกี่ยวกับการมิเรอร์และ TDE

ฉันใช้เวลาสักครู่เพื่อที่จะทราบว่าการรับ db บนเซิร์ฟเวอร์รองฉันต้องการโค้ดบรรทัด:

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

รหัสผ่านเป็นรหัสเดียวกับที่ฉันใช้ในการเข้ารหัสไฟล์มาสเตอร์คีย์ หลังจากออกคำสั่งบนเซิร์ฟเวอร์ SQL ที่ 2 ทุกอย่างก็เล่นได้ดี นี่คือ db.stackexchange โพสต์ที่ฉันทำด้วย


รายการบล็อกนั้นมีประโยชน์ ฉันติดตามแล้วยกเว้นว่า "master" ฉันใช้ฐานข้อมูลเฉพาะที่ฉันต้องการคัดลอก ฉันได้รับข้อผิดพลาด "มีข้อผิดพลาดเกิดขึ้นขณะถอดรหัสคีย์ asymmetric 'asym_something' ที่ถูกเข้ารหัสโดยคีย์หลักเก่าตัวเลือก FORCE สามารถใช้เพื่อละเว้นข้อผิดพลาดนี้และดำเนินการต่อไปได้ แต่ข้อมูลที่ไม่สามารถถอดรหัสได้ด้วยรหัสหลักเก่า จะไม่สามารถใช้งานได้ " เมื่อฉันคืนค่ามาสเตอร์คีย์จากไฟล์ ฉันควรบังคับใช้หรือไม่ (นี่คือหลังจากที่ผมได้เรียกคืนฐานข้อมูลในขณะที่คำแนะนำของคุณได้ฟื้นฟูในภายหลัง.)
paulmorriss

1
ขอบคุณฉันใช้เวลานานกว่าจะคิดออก eek ฉันไม่แน่ใจว่าคุณควรบังคับ วิธีที่ฉันเข้าใจ "ปุ่ม" จะเชื่อมโยงกับฐานข้อมูล MASTER ในแต่ละเซิร์ฟเวอร์ สิ่งเดียวที่เชื่อมโยงกับฐานข้อมูลคือใบรับรองที่ลงนามโดยมาสเตอร์คีย์ ดังนั้นคุณต้องสร้างคีย์หลักบนเซิร์ฟเวอร์ 1 สำรองข้อมูลจากนั้นเรียกคืนคีย์บนเซิร์ฟเวอร์ 2 จากนั้นย้ายใบรับรองสำหรับฐานข้อมูล ฉันหวังว่าคนอื่นสามารถหลั่งน้ำตาแสงในเรื่อง
RateControl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.