डेटाबेस मास्टर कुंजी सर्वर मास्टर कुंजी का उपयोग करके एन्क्रिप्ट की गई है, जो उस मशीन के लिए विशिष्ट है जहां SQL सर्वर स्थापित है। जब आप डेटाबेस को किसी अन्य सर्वर पर ले जाते हैं, तो आप डेटाबेस मास्टर कुंजी को स्वचालित रूप से डिक्रिप्ट और खोलने की क्षमता खो देते हैं क्योंकि स्थानीय सर्वर कुंजी सबसे अलग होगी। यदि आप डेटाबेस मास्टर कुंजी को डिक्रिप्ट नहीं कर सकते हैं, तो आप उस पर निर्भर किसी अन्य चीज़ को डिक्रिप्ट नहीं कर सकते हैं (प्रमाणपत्र, सममित कुंजी, आदि)।
मूल रूप से, आप नई सर्वर कुंजी के विरुद्ध डेटाबेस मास्टर कुंजी को फिर से एन्क्रिप्ट करना चाहते हैं, जो इस स्क्रिप्ट के साथ किया जा सकता है (व्यवस्थापक विशेषाधिकारों का उपयोग करके):
-- Reset database master key for server (if database was restored from backups on another server)
OPEN MASTER KEY DECRYPTION BY PASSWORD = '---your database master key password---'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO
ध्यान दें कि जब आप डेटाबेस मास्टर कुंजी बनाते हैं, तो आपको हमेशा एक पासवर्ड भी प्रदान करना चाहिए ताकि आप उस परिदृश्य में पासवर्ड का उपयोग करके कुंजी खोल सकें जहां सेवा मास्टर कुंजी का उपयोग नहीं किया जा सकता है - उम्मीद है कि आपने वह पासवर्ड कहीं संग्रहीत किया है!
वैकल्पिक रूप से, आप डेटाबेस मास्टर कुंजी का बैकअप पुनर्स्थापित कर सकते हैं - लेकिन आपको एक की आवश्यकता है जो लक्ष्य सर्वर के लिए बनाई गई थी, न कि स्रोत सर्वर के लिए।
यदि आपके पास बैकअप या पासवर्ड नहीं है, तो मुझे यकीन नहीं है कि आप नए सर्वर पर एन्क्रिप्टेड डेटा को पुनर्प्राप्त करने में सक्षम होंगे, क्योंकि आपको डेटाबेस मास्टर कुंजी को एक नए पासवर्ड के साथ छोड़ना और फिर से बनाना होगा, जो किसी भी आश्रित कुंजी और डेटा को मार देगा।