एन्क्रिप्टेड डेटाबेस को दूसरे सर्वर पर पुनर्स्थापित करें


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'

लेकिन एक असममित कुंजी के बारे में एक त्रुटि संदेश दिया।

मैं दूसरे सर्वर पर पहले सर्वर से बैकअप को कैसे पुनर्स्थापित कर सकता हूं?

अपडेट करें:

डेटाबेस में एक असममित और सममित कुंजी भी है। अगर मैं असममित कुंजी का उपयोग करके सममित कुंजी खोलता हूं तो मुझे वही त्रुटि मिलती है, इसलिए मुझे लगता है कि यह काम नहीं कर रहा है - किसी भी तरह से कुंजी इस तरह से स्थानांतरित नहीं हो रही है कि उनका उपयोग किया जा सके।

जवाबों:


8

मैंने मिररिंग और TDE के बारे में एक ब्लॉग प्रविष्टि लिखी

मुझे यह पता लगाने में थोड़ा समय लगा कि माध्यमिक सर्वर पर डीबी प्राप्त करने के लिए, मुझे कोड लाइन की आवश्यकता थी:

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

पासवर्ड वही है जो मैं मास्टर कुंजी फ़ाइल को एन्क्रिप्ट करने के लिए उपयोग करता था। 2nd SQL सर्वर पर कमांड जारी करने के बाद, सब कुछ अच्छी तरह से खेला जाता है। यहाँ db.stackexchange पोस्ट मैंने भी बनाया है।


वह ब्लॉग प्रविष्टि उपयोगी है। मैंने इसे छोड़ दिया है इसके अलावा "मास्टर" के बजाय मैं उस विशेष डेटाबेस का उपयोग करता हूं जिसे मैं कॉपी करना चाहता हूं। मुझे त्रुटि मिलती है "पुराने मास्टर कुंजी द्वारा एन्क्रिप्ट की गई असममित कुंजी 'asym_something' को डिक्रिप्ट करते समय एक त्रुटि हुई। इस त्रुटि को अनदेखा करने और ऑपरेशन को जारी रखने के लिए FORCE विकल्प का उपयोग किया जा सकता है, लेकिन पुराने मास्टर कुंजी द्वारा डिक्रिप्ट नहीं किए जा सकने वाले डेटा। अनुपलब्ध हो जाएगा। " जब मैं फ़ाइल से मास्टर कुंजी को पुनर्स्थापित करता हूं। क्या मुझे इसे लागू करना चाहिए? (यह बाद मैं डेटाबेस पुनर्स्थापित कर दी है अपने निर्देशों को बहाल कर दिया है, जबकि बाद में, है।)
paulmorriss

1
धन्यवाद, मुझे यह पता लगाने में बहुत समय लग गया। eek, मुझे यकीन नहीं है कि आपको इसे मजबूर करना चाहिए। जिस तरह से मैं इसे समझता हूं, "कुंजी" प्रत्येक सर्वर पर मास्टर डेटाबेस से बंधा हुआ है। केवल एक चीज जो डेटाबेस से जुड़ी हुई है वह है मास्टर कुंजी द्वारा हस्ताक्षरित प्रमाणपत्र। तो आपको सर्वर 1 पर एक मास्टर कुंजी बनाने की आवश्यकता है, इसे वापस करें, फिर सर्वर 2 पर कुंजी को पुनर्स्थापित करें। फिर डेटाबेस के लिए सर्टिफिकेट पर जाएं। मुझे आशा है कि कोई और व्यक्ति इस विषय पर कुछ प्रकाश डाल सकता है।
RateControl
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.