डिफ़ॉल्ट रूप से, प्रत्येक सेट अप के RESTORE DATABASE
साथ आता है RECOVERY
। 'NORECOVERY' विकल्प, मूल रूप से SQL सर्वर को बताता है कि डेटाबेस अधिक पुनर्स्थापना फ़ाइलों के लिए प्रतीक्षा कर रहा है (यदि DIFF फ़ाइल और लॉग फ़ाइल हो सकती है और, यदि संभव हो तो टेल-लॉग बैकअप फ़ाइल शामिल कर सकते हैं)। The RECOVERY ’विकल्प, सभी लेनदेन को पूरा करते हैं और डेटाबेस को लेनदेन करने के लिए तैयार करते हैं।
इसलिए:
- यदि आपका डेटाबेस SIMPLE पुनर्प्राप्ति मॉडल के साथ सेट है , तो आप केवल एक पूर्ण प्रदर्शन कर सकते हैं DIFF बैकअप
NORECOVERY
होने पर ही विकल्प के साथ पुनर्स्थापना । SIMPLE पुनर्प्राप्ति मॉडल डेटाबेस में कोई लॉग बैकअप की अनुमति नहीं है ।
- अन्यथा, यदि आपका डेटाबेस FULL या BULK-LOGGED रिकवरी मॉडल के साथ सेट किया गया है , तो आप उसके बाद FULL रिस्टोर कर सकते हैं
NORECOVERY
विकल्प है, तो एक प्रदर्शन DIFF के बाद NORECOVERY
अंत में, है, और, प्रदर्शन लॉग साथ बहाल RECOVERY
विकल्प।
याद रखें, पिछले सबसे पहले जरूरी RECOVERY
विकल्प है । यह एक स्पष्ट तरीका हो सकता है या नहीं। T-SQL के थर्मस में, स्थिति:
1।
USE [master]
GO
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak WITH FILE = 1, [REPLACE],NOUNLOAD,
RECOVERY -- This option could be omitted.
GO
REPLACE विकल्प के साथ सावधानी के साथ उपयोग किया जाना चाहिए क्योंकि इससे डेटा हानि हो सकती है
या, यदि आप एक पूर्ण और DIFF बैकअप करते हैं, तो आप इसका उपयोग कर सकते हैं
USE [master]
GO
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1,
NOUNLOAD,NORECOVERY
GO
RESTORE DATABASE Database_name
FROM DISK =N'\\path_of_**diff**backup_file.bak' WITH FILE = 1,
NOUNLOAD, RECOVERY
GO
2. USE [master]
GO
-- Perform a Tail-Log backup, if possible.
BACKUP LOG Database_name
GO
-- Restoring a FULL backup
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1,
NOUNLOAD,NORECOVERY
GO
-- Restore the last DIFF backup
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_DIFF_backup_file.bak' WITH FILE = 1,
NORECOVERY,NOUNLOAD
GO
-- Restore a Log backup
RESTORE LOG Database_name
FROM DISK = N'path_of_LOG_backup_file.trn' WITH FILE = 2,
RECOVERY, NOUNLOAD
GO
बेशक, आप विकल्प के साथ एक पुनर्स्थापना प्रदर्शन कर सकते हैं STATS = 10 जो SQL सर्वर को हर 10% पूरा होने की रिपोर्ट करने के लिए कहता है।
यदि आप पसंद करते हैं, तो आप प्रक्रिया का निरीक्षण कर सकते हैं या वास्तविक समय आधारित क्वेरी में पुनर्स्थापित कर सकते हैं। निम्नलिखित अनुसार:
USE[master]
GO
SELECT session_id AS SPID, command, a.text AS Query, start_time, percent_complete, dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time
FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a
WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')
GO
उममीद है कि इससे मदद मिलेगी।
DROP DATABASE db
एसएसएमएस के माध्यम से कमांड जारी किया और यह काम किया (पहले मैं कमांड जारी करने के लिए किसी अन्य मशीन से एसएसएमएस का उपयोग कर रहा था)। मैं अनुमान लगा रहा हूं कि अन्य समाधानों ने भी काम किया होगा।