बैकअप सेट मौजूदा के अलावा अन्य डेटाबेस का बैकअप रखता है


485

मैं अपने डेटाबेस के लिए SQL सर्वर बैकअप फ़ाइल को पुनर्स्थापित करने का प्रयास कर रहा हूं, लेकिन यह एक त्रुटि का अनुसरण कर रहा है:

बैकअप सेट मौजूदा के अलावा अन्य डेटाबेस का बैकअप रखता है

SQL Server 2008 में मेरा डेटाबेस और बैकअप फ़ाइल 2005 में है।

क्या समस्या हो सकती है?


95
नीचे दिया गया अत्यधिक मतदान उत्तर अखरोट को तोड़ने के लिए एक स्लेजहैमर है। समस्या सबसे अधिक संभावना है कि आपने पुनर्स्थापना> विकल्प विंडो में " मौजूदा डेटाबेस (REPLACE के साथ) " को अधिलेखित नहीं किया है । मुझे कमांड लाइन का उपयोग करने से यह समस्या थी , और उपयोग करके तय किया गया था । WITH MOVEWITH REPLACE, MOVE
जेम्स मैककॉर्मैक

मेरे डेटाबेस में से एक के साथ एक ही त्रुटि है, लेकिन केवल जब SQL सर्वर एजेंट बंद होता है। अगर मैं इसे चालू करता हूं, तो कोई त्रुटि नहीं है और मैं बिना किसी समस्या के पुनर्स्थापित कर सकता हूं। मेरी BAK फ़ाइल में केवल एक ही डेटाबेस है, और उस डेटाबेस का नाम (और तार्किक फ़ाइल नाम) मेरे सर्वर पर अद्वितीय हैं।
डेवलपर वेबसाइड

जवाबों:


807

मैं भी इस मुद्दे पर आया था।

समाधान :

  • एक खाली डेटाबेस न बनाएं और उस .bakपर फ़ाइल को पुनर्स्थापित करें ।
  • SQL सर्वर प्रबंधन स्टूडियो की "डेटाबेस" शाखा पर राइट क्लिक करके सुलभ 'पुनर्स्थापना डेटाबेस' विकल्प का उपयोग करें और पुनर्स्थापित करने के लिए स्रोत प्रदान करते हुए डेटाबेस का नाम प्रदान करें।
  • यदि अन्य डेटाबेस अभी भी मौजूद है, तो "फ़ाइल" में फ़ाइल नाम बदलें। अन्यथा आपको "फ़ाइल '...' ओवरराइट नहीं किया जा सकता है। इसका उपयोग डेटाबेस 'yourFirstDb' द्वारा किया जा रहा है।"

102
SSMS के लिए मुझे यह बताना आसान होगा जब त्रुटि होती है
cja

16
+1 के लिए " खाली डेटाबेस न बनाएं और उस पर .bak फ़ाइल को पुनर्स्थापित करें " ... हाँ, जो इसे हल करता है। (लेकिन मुझे यह समस्या तब नहीं हुई जब मैंने दूसरी बार भी यही काम किया था? और क्या हमने पहले से ही कुछ अन्य अकथनीय त्रुटि संदेश के लिए वर्कअराउंड के रूप में पहले से बनाना शुरू नहीं किया था ?]]
Reg संपादित करें

किसी को इसे एक उत्तर के रूप में चिह्नित करना चाहिए क्योंकि यह एक बैकअप को सफलतापूर्वक बहाल करने के लिए आवश्यक सलाह का टुकड़ा था।
डोरेन

2
रीस्टोर डेटाबेस में, मैं फाइल्स, रिस्टोर अस के पास गया, और अद्वितीय फाइलनाम में डाल दिया, क्योंकि इसमें अभी भी डेटा और लॉग फाइल के मूल नाम थे।
डेव मेटेर

2
यदि अन्य डेटाबेस अभी भी मौजूद है, तो "फ़ाइल" में फ़ाइल नाम बदलें। अन्यथा आपको "फ़ाइल '...' ओवरराइट नहीं किया जा सकता है। इसका उपयोग डेटाबेस 'yourFirstDb' द्वारा किया जा रहा है।"
वेरना हॉनस्किमिड

175

कोई एक:

1) कमांड WITH REPLACEका उपयोग करते समय उपयोग करें RESTORE(यदि GUI का उपयोग करते हुए , यह विकल्प के तहत पाया जाता है -> मौजूदा डेटाबेस को अधिलेखित करें WITH REPLACE) ( )।

2) Deleteपुराना डेटाबेस जो परस्पर विरोधी है और RESTOREकमांड का उपयोग करके फिर से पुनर्स्थापित करता है ।

अधिक जानकारी के लिए लिंक की जाँच करें ।


1
लिंक से कॉपी किया और साथ ही लिंक प्रदान किया .. * आह * (स्मार्ट)
अभिजीतसिंध

4
@ अभिजितेंधे हाहा .. पुन: प्रयोज्य और सौजन्य .. :)
अमरनाथ

:) एक ईमानदार सॉफ्टवेयर एर आप हैं! वैसे भी, इस सवाल का सबसे अच्छा जवाब है। और जिस समय आपने इसे खोजने के लिए वोट दिया है, उसके लिए वोट करें :)
अभिजीतसिंध

1
सेशन के रूप में एक ही मुद्दा था और यह जवाब ठीक काम करता है। +1
एस्टेबन

1
REPLACE के विकल्प के साथ यह भी मेरे लिए आवश्यक समाधान था। धन्यवाद!
एडम

90

सबसे पहले इसी नाम का एक खाली डेटाबेस बनाएं। फिर रिस्टोर ऑप्शन पर जाएं

बाएं फलक पर विकल्पों के तहत चयन करना न भूलें

  • मौजूदा डेटाबेस को अधिलेखित करें
  • प्रतिकृति सेटिंग संरक्षित करें

यहाँ छवि विवरण दर्ज करें

बस


51

एक ही समस्या का सामना कर रहे हैं और एसएसएमएस 2014 का उपयोग करके ऐसा करने से समाधान पाया

- बस विकल्प चुनें मौजूदा डेटाबेस को अधिलेखित करें (उत्तर के साथ) 

मौजूदा डेटाबेस> कार्य> पुनर्स्थापना> डेटाबेस


34
USE [master];
GO

CREATE DATABASE db;
GO

CREATE DATABASE db2;
GO

BACKUP DATABASE db TO DISK = 'c:\temp\db.bak' WITH INIT, COMPRESSION;
GO

RESTORE DATABASE db2
  FROM DISK = 'c:\temp\db.bak'
  WITH REPLACE,
  MOVE 'db' TO 'c:\temp\db2.mdf',
  MOVE 'db_log' TO 'c:\temp\db2.ldf';

33

सरल 3 चरण:

1- डेटाबेस पर राइट क्लिक करें → टास्क → रिस्टोर → डेटाबेस

2- Deviceस्रोत के रूप में जांचें और .bak (या zipped .bak) फ़ाइल खोजें

3- बाएँ फलक में क्लिक करें optionsऔर:

  • जाँच मौजूदा डेटाबेस अधिलेखित।
  • अनचेक करें पुनर्स्थापना से पहले टेल-लॉग बैकअप लें
  • जाँच गंतव्य डेटाबेस के लिए बंद मौजूदा कनेक्शन।

अन्य विकल्प वास्तव में वैकल्पिक हैं (और निश्चित रूप से महत्वपूर्ण)!


23

इसका कारण यह है कि मूल से फ़ाइलें .mdfऔर .ldfफ़ाइलें Dbशायद ढूँढी गईं थीं c:\programFile\....और यह जानकारी बैकअप में सहेजी गई है!

यदि आप एक अलग SQL सर्वर पर एक ही DB बनाते हैं जहां स्थापना c:\program Files (x86)\ ....आप पर है तो आमतौर पर पुनर्स्थापित नहीं किया जा सकता है। आपको फ़ाइलों .mdfऔर .ldfफ़ाइलों के लिए पथ स्थानांतरित करना होगा ।

इसलिए:

  • नए सर्वर पर एक खाली DB बनाएँ

  • खाली Db> कार्य> पुनर्स्थापना> डेटाबेस पर राइट क्लिक करें डिवाइस पर क्लिक करें अपनी .bakफ़ाइलों का चयन करें > पुनर्स्थापना के लिए Db चुनें

  • बाईं ओर फ़ाइलों पर क्लिक करें> "फ़ोल्डर में सभी फ़ाइलें स्थानांतरित करें" चुनें
  • बाईं साइट पर विकल्प पर क्लिक करें> ओवरराइट पर क्लिक करें

किया हुआ!
आशा है ये मदद करेगा!


16

मैं आज इसी तरह की समस्या में भाग गया था। उपरोक्त सभी समाधानों की कोशिश की, लेकिन काम नहीं किया। इसलिए मेरा समाधान यहां पोस्ट कर रहा हूं।

पुनर्स्थापित करने से पहले टेल-लॉन्ग बैकअप को अनचेक करना न भूलें

पुनर्स्थापित करने से पहले टेल-लॉन्ग बैकअप को अनचेक करना न भूलें

आशा है कि यह दूसरों की भी मदद करे!


इसी से मेरा काम बना है। धन्यवाद!
बिल नॉर्मन

16

यदि आप स्क्रिप्ट दृष्टिकोण का उपयोग कर रहे हैं और एलडीएफ और एमडीएफ फ़ाइलों के विषय में कोई त्रुटि है, तो आप पहले बैकअप सेट में फाइलों के तार्किक नामों (और अन्य विवरणों) के लिए बैकअप फ़ाइल को क्वेरी कर सकते हैं , निम्नलिखित का उपयोग करते हुए:

-- Queries the backup file for the file list in backup set, where Type denotes 
-- type of file. Can be L,D,F or S
-- info: https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql
RESTORE FILELISTONLY FROM DISK = 'C:\Temp\DB_backup.bak'
GO

आपको निम्न के समान परिणाम मिलेंगे:

यहाँ छवि विवरण दर्ज करें

और फिर आप प्रश्नों में उन तार्किक नामों का उपयोग कर सकते हैं:

    -- Script assumes you want MDF and LDF files restored on separate drives. Modify for your scenario
    RESTORE DATABASE DB 
    FROM DISK='C:\Temp\DB_backup.bak'
    WITH REPLACE,
      MOVE 'DB' TO 'E:\MSSQL\Data\DB.mdf', -- "DB" is the mdf logical name from query above
      MOVE 'DB_log' TO 'F:\MSSQL\Logs\DB.ldf'; -- "DB_log" is LDF logical name from query above

RESTORE FILELISTONLY SQL सर्वर डॉक्स से अधिक जानकारी प्राप्त की जा सकती है


प्रश्न में मेरे पास एक ही मुद्दा था, और मेरे मामले में डीबी बैकअप दूरस्थ सर्वर से था और मुझे अपने डी ड्राइव में समान फ़ोल्डर संरचना तैयार करनी थी जो पहली क्वेरी के आउटपुट से मिलती जुलती है। फिर दूसरी क्वेरी सही ढंग से काम की और डेटाबेस को पुनर्स्थापित किया गया।
रिनिलनाथ

11

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


यह विशेष रूप से सच प्रतीत होता है यदि आपके पास कई फाइलें / फ़ाइल समूह और विभाजन तालिकाएं हैं
एलेक्स मार्क

9

कुछ और करने से पहले, पुष्टि करें कि क्या आपका बैकअप पूर्ण या विभेदक है। यदि आप एक अंतर बैकअप से एक नया डेटाबेस बनाने की कोशिश कर रहे हैं, तो कोई फर्क नहीं पड़ता कि आप क्या करते हैं आप त्रुटि का सामना करेंगे।


1
यह वह मुद्दा था जिसका मैं अनुभव कर रहा था, इसलिए इसके लिए धन्यवाद !!! (मुझे नहीं पता था कि बैकअप फ़ाइल वास्तव में एक अंतर बैकअप है।) यहां देखें कि कैसे जांच करें: "रिस्टोरॉइड से पूरी तरह से डिस्क = 'C: \ myfile.bak'" परिणामों में, बैकअप का बैकअप = 1 पूर्ण बैकअप। 5 बैकअप = अंतर बैकअप।
Wimpie Ratte

9

system.data.sqlclient.sqlerror: बैकअप सेट मौजूदा 'Dbname' डेटाबेस के अलावा अन्य डेटाबेस का बैकअप रखता है

मैं आत्मीयता खोजने के लिए सामने आया हूं

  1. एक ही नाम या अलग-अलग डेटाबेस नाम के साथ एक डेटाबेस न बनाएं!

  2. डेटाबेस पर राइट क्लिक करें | कार्य> पुनर्स्थापना> डेटाबेस

  3. "पुनर्स्थापना के लिए स्रोत" के तहत "डिवाइस से" चुनें

  4. .Bak फ़ाइल चुनें

  5. नीचे दिए गए ग्रिडव्यू में डेटाबेस के लिए चेक बॉक्स का चयन करें

  6. DataBase के लिए: "यहां आप नया डेटाबेस नाम टाइप कर सकते हैं" (Ex: DemoDB)

  7. ड्रॉपडाउनलिस्ट से मौजूदा डेटाबेस का चयन न करें

  8. अब Ok बटन पर क्लिक करें, यह एक नया डेटाबेस बना देगा और आपकी .bak फ़ाइल से सभी डेटा को पुनर्स्थापित करेगा।

आप इस लिंक से भी मदद ले सकते हैं

आशा है कि यह आपके मुद्दे को सुलझाने में मदद करेगा ...


1
"एक ही नाम या अलग-अलग डेटाबेस नाम के साथ एक डेटाबेस न बनाएं! महत्वपूर्ण!" क्या मतलब?
साजिद

6

यह हमेशा संस्करण असंगति के कारण होता है। हल करने के लिए इन चरणों का पालन करें:

चरण 1: अपने पसंदीदा नाम के साथ एक डेटाबेस बनाएं। (हमारे मामले में AdventureWorks)

चरण 2: डेटाबेस पर क्लिक करें और कार्य >> पुनर्स्थापना >> डेटाबेस… पर क्लिक करें

यहाँ छवि विवरण दर्ज करें

चरण 3: पुनर्स्थापना स्क्रीन पर विकल्प के तीसरे चयन पर जाएं। अब चेकबॉक्स को चुनें "मौजूदा डेटाबेस को फिर से लिखें (REPLACE के साथ)"

यहाँ छवि विवरण दर्ज करें

चरण 4: ठीक पर क्लिक करें। इसे डेटाबेस को सफलतापूर्वक पुनर्स्थापित करना चाहिए।

नोट: जब आप किसी डेटाबेस को REPLACE से पुनर्स्थापित करते हैं तो यह पुराने डेटाबेस को अधिलेखित कर देगा।


आपके प्रयास के लिए धन्यवाद Alireza .. लेकिन हम GUI के बजाय क्वेरी का उपयोग कर रहे हैं।
पुगल

5

मेरे साथ एक ही मुद्दा। मेरे लिए समाधान है:

  1. डेटाबेस पर राइट क्लिक करें।
  2. कार्यों का चयन करें, पुनर्स्थापना डेटाबेस का चयन करें।
  3. बाएं हाथ की तरफ के विकल्प पर क्लिक करें।
  4. पहले विकल्प की जाँच करें मौजूदा डेटाबेस (REPLACE के साथ) को ओवरराइट करें।
  5. जनरल पर जाएं, स्रोत और गंतव्य डेटाबेस का चयन करें।
  6. ठीक क्लिक करें, यह बात है

3

मैं बस इस मुद्दे को हल करने की कोशिश कर रहा था।

मैंने यहां और अन्य जगहों पर प्राप्त सुझावों के माध्यम से सब कुछ चलाने की कोशिश की; अंत में यह मेरे लिए क्या हल किया गया था "संपत्ति फ़ाइलों में स्थानांतरण फ़ाइलें" विकल्प की जांच करने के लिए।

उम्मीद है कि यह किसी और की मदद करता है।


3

मुझे परीक्षण के लिए अपने स्थानीय पर नई डीबी बनानी थी और मुझे अपने उत्पादों से पीछे हटना पड़ा। मैंने पहले db बनाया और नए db के ऊपर BAK को चलाने की कोशिश की जिसने मेरे लिए यह त्रुटि उत्पन्न की। मैंने db को डिलीट कर दिया और रिस्टोर स्क्रीन में ही नए db नाम की सोर्सिंग करते हुए इसे रीस्टोर कर दिया। DB स्वचालित रूप से पुनर्स्थापना पर बनाया गया था।


3

आप में से कुछ ने इसे बहुत अधिक जटिल कर दिया है। मुझे यह बेहद सरल लगा।

1) अपने .bak फ़ाइल डेटाबेस नाम के समान नाम वाला एक डेटाबेस बनाएँ! महत्वपूर्ण

2) डेटाबेस पर राइट क्लिक करें | कार्य> पुनर्स्थापना> डेटाबेस

3) "पुनर्स्थापना के लिए स्रोत" के तहत "डिवाइस से" चुनें

4) .bak फ़ाइल का चयन करें

5) नीचे दिए गए ग्रिडव्यू में डेटाबेस के लिए चेक बॉक्स का चयन करें

6) दाईं ओर "विकल्प चुनें" पर "एक पृष्ठ का चयन करें"

7) लेबल वाले चेकबॉक्स का चयन करें "प्रतिकृति सेटिंग्स संरक्षित करें (KEEP_REPLICATION के साथ)

अब सामान्य पृष्ठ पर वापस जाएं और डेटाबेस को पुनर्स्थापित करने के लिए ठीक क्लिक करें ... यही है।


वह कहाँ है "एक पृष्ठ का चयन करें"?
कांसईरोबोट

2

मुझे जेनरेट स्क्रिप्ट का उपयोग करके वैकल्पिक तरीके से काम मिला। मेरे लिए यह काम किया क्योंकि बैकअप-रिस्टोर ने एक ही त्रुटि के कारण समस्या को हल करने में मदद नहीं की।


2

विकल्पों में, "पुनर्स्थापना के रूप में" फ़ाइल नाम को नए डेटाबेस mdf और ldf में बदलें। यह स्रोत डेटाबेस .mdf और .ldf फ़ाइलों को संदर्भित कर रहा है।


1

आप एक नए DB को पुनर्स्थापित कर सकते हैं, फ़ाइल नाम सिंटैक्स को सत्यापित कर सकते हैं, यह लॉग फ़ाइल में होगा, नए SQL संस्करण के लिए "_log" प्रत्यय होगा

विज्ञापन विकल्प टैब में मौजूदा डेटाबेस ध्वज को अधिलेखित करें

फैबियो


0

मुझे यकीन है कि यह समस्या फ़ाइलों और फ़ोल्डरों की अनुमति से संबंधित है।


0

मैं एक ही सर्वर पर एक स्टेजिंग डेटाबेस के लिए उत्पादन डेटाबेस को पुनर्स्थापित करने की कोशिश कर रहा था।

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

(या अन्यथा स्टेजिंग डेटाबेस को पहले हटा दें और फिर आप नए डेटाबेस को उसी नाम से पुनर्स्थापित कर सकते हैं जैसे स्टेजिंग डेटाबेस)


0

पुनर्स्थापना डेटाबेस पर क्लिक करने के बजाय पुनर्स्थापना फ़ाइल और फ़ाइल समूह पर क्लिक करें।

Thats मेरे sql सर्वर पर काम करते हैं


0

इसने मुझे सिस्टम ड्राइव से बैक-अप फ़ाइल को आयात करने में मदद की

  1. अपने .bak फ़ाइल डेटाबेस नाम के समान नाम (अधिमानतः) के साथ एक डेटाबेस बनाएँ
  2. डेटाबेस> कार्य> पुनर्स्थापना> डेटाबेस पर राइट क्लिक करें
  3. "पुनर्स्थापना के लिए स्रोत" के तहत "डिवाइस से" चुनें
  4. सिस्टम से पथ का चयन करते हुए .bak फ़ाइल चुनें
  5. नीचे सूची बॉक्स में डेटाबेस के लिए चेक बॉक्स का चयन करें
  6. दाईं ओर "विकल्प का चयन करें" पर "एक पृष्ठ का चयन करें"
  7. लेबल वाले चेकबॉक्स का चयन करें "प्रतिकृति सेटिंग्स को सुरक्षित रखें (KEEP_REPLICATION के साथ)
  8. मौजूदा डेटाबेस को अधिलेखित करने के लिए चेकबॉक्स का चयन करें (उत्तर के साथ) अब सामान्य पृष्ठ पर वापस जाएं और डेटाबेस को पुनर्स्थापित करने के लिए ठीक क्लिक करें ...
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.