2011-12-13 5 views
37

मैं एक बहुत सारी Google पोस्ट और StackOverflow प्रश्नों को पढ़ रहा हूं कि SQL सर्वर में डेटाबेस को किसी .bak फ़ाइल से पुनर्स्थापित कैसे करें।एक SQL सर्वर .bak फ़ाइल खोलना (पुनर्स्थापित नहीं करना!)

लेकिन उनमें से कोई भी बताता है कि डेटाबेस-बैकअप में तालिकाओं को कैसे पढ़ा जाए। (कोई भी जो मुझे वैसे भी मिल सकता है?)

मैं बस कुछ पुरानी जानकारी देखना चाहता हूं जो वास्तव में पूर्ण डेटाबेस को पुनर्स्थापित किए बिना हटा दिया गया है। क्या यह संभव है?

संपादित करें:

मैं सिर्फ समस्या के लिए अपने T-SQL समाधान पोस्ट करने के लिए, ताकि अन्य लोग इसका इस्तेमाल कर सकते हैं और मैं वापस जाकर उसे देख सकते हैं चाहता था;)

पहले मेरे द्वारा बनाए गए एक backup_lookup नामक नया डेटाबेस और इसे ऑफ़लाइन ले गया। इसके बाद मैं अपने मूल डेटाबेस को छूए बिना, मेरे पुराने डेटाबेस mydb को नए में पुनर्स्थापित कर सकता था।

USE master 
GO 
RESTORE DATABASE backup_lookup 
FROM DISK = 'D:\backup\mydb.bak' 
WITH REPLACE, 
MOVE 'mydb' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup.mdf', 
MOVE 'mydb_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup_log.ldf' 
GO 

मुझे आशा है कि इस मदद करता है :)

उत्तर

29

एसक्यूएल सर्वर 2008 SSMS (SQL सर्वर प्रबंधन स्टूडियो), बस से:

  1. कनेक्ट अपने डेटाबेस उदाहरण के लिए (उदाहरण के लिए, "स्थानीय होस्ट \ sqlexpress")
  2. कोई एक:

    • ए) उस डेटाबेस का चयन करें जिसे आप पुनर्स्थापित करना चाहते हैं; या, वैकल्पिक रूप से
    • बी) बस पुनर्स्थापित करने के लिए एक नया, खाली डेटाबेस बनाएं।
  3. राइट-क्लिक करें, कार्य, पुनर्स्थापित, डाटाबेस

  4. डिवाइस, [...], जोड़े, अपने .bak फ़ाइल
  5. बैकअप का चयन करें करने के लिए ब्राउज़ करें।
    विकल्पों के तहत "ओवरराइट = वाई" चुनें।
    डेटाबेस को पुनर्स्थापित करें
  6. इसे "100% पूर्ण" कहना चाहिए, और आपका डेटाबेस ऑनलाइन होना चाहिए।

पुनश्च: फिर से, मैं जोर देना: आप आसानी से एक "खरोंच डेटाबेस" पर ऐसा कर सकते हैं - आप नहीं अपने वर्तमान डेटाबेस के ऊपर लिख करने की आवश्यकता है। लेकिन आप RESTORE की आवश्यकता है।

पीपीएस: यदि आप इसे स्क्रिप्ट करना चाहते हैं तो आप टी-एसक्यूएल कमांड के साथ भी वही काम कर सकते हैं।

+0

आह डालने, तो मैं बस अपने मूल डेटाबेस पर कोई प्रभाव के बिना एक अस्थायी रूप से डेटाबेस बना सकता है और इसे में बहाल, और बाद में इसे हटा? :) – Behrens

+0

हां, बिल्कुल :) – paulsm4

+0

+1 और उत्तर मुफ्त समाधान के कारण स्वीकार किया गया है :) – Behrens

9

केवल समस्या का समाधान करने के लिए .bak फ़ाइल को पुनर्स्थापित है। उन फ़ाइलों की सामग्रियों और संरचना दस्तावेज नहीं हैं और इसलिए, काम करने के लिए वास्तव में कोई रास्ता नहीं है (एक भयानक हैक के अलावा) - निश्चित रूप से आपके समय और प्रयास के लायक नहीं है!

केवल उपकरण मैं उस के बारे में पता उन्हें पुनर्स्थापित किए बिना .bak फ़ाइलों का मतलब कर सकते हैं Red-Gate SQL Compare Professional जो आपको एक .bak फ़ाइल की सामग्री के खिलाफ अपने डेटाबेस संरचना तुलना करने की अनुमति है (और साथ एसक्यूएल डाटा तुलना करें)। रेड-गेट टूल्स बिल्कुल आश्चर्यजनक हैं - अत्यधिक मूल्यवान और उनके द्वारा खर्च किए जाने वाले हर पैसे के लायक!

और मैंने अभी अपनी वेबसाइट की जांच की - ऐसा लगता है कि आप सचमुच एक ही तालिका को .bak फ़ाइल से SQL तुलना प्रो के साथ पुनर्स्थापित कर सकते हैं! :-)

0

यह अकेले SQL Server 2008 के साथ प्रतीत नहीं होता है। आपको किसी तृतीय-पक्ष टूल की सहायता की आवश्यकता होगी।

यह आप एक जीवित डेटाबेस की तरह अपने .bak कार्य करने में मदद मिलेगी:

http://www.red-gate.com/products/dba/sql-virtual-restore/

+1

फिर भी एक और लाल-गेट मणि! :-) –

+0

मुझे समझ में नहीं आता कि माइक्रोसॉफ्ट ने इस तरह की सुविधा उपलब्ध कराने का फैसला क्यों नहीं किया है .. यह व्यवसाय के लिए अच्छा होगा अगर उन्होंने किया .. – Nonym

+1

रेड-गेट के व्यवसाय के लिए नहीं, हालांकि .... –

9

यह करने के लिए कोई मानक तरीका नहीं है। आपकोया SQL Virtual Restore जैसे तृतीय पक्ष टूल का उपयोग करने की आवश्यकता है। ये उपकरण वास्तव में सीधे बैकअप फ़ाइल नहीं पढ़ते हैं। वे बैकअप फ़ाइलों के "सोचने" के लिए SQL सर्वर प्राप्त करते हैं जैसे कि ये लाइव डेटाबेस थे।

+0

एसक्यूएल वर्चुअल पुनर्स्थापना समर्थन 6 फरवरी 2015 को समाप्त हुआ। – mukama

1

बस मेरे TSQL-पटकथा समाधान जोड़ने के लिए:

सबसे पहले; backup_lookup नामक एक नया डेटाबेस जोड़ें। तो बस, इस स्क्रिप्ट को चलाने अपनी खुद डेटाबेस 'रूट पथ और बैकअप filepath

USE [master] 
GO 
RESTORE DATABASE backup_lookup 
FROM DISK = 'C:\backup.bak' 
WITH REPLACE, 
MOVE 'Old Database Name' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup.mdf', 
MOVE 'Old Database Name_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup_log.ldf' 
GO 
संबंधित मुद्दे