2012-11-28 30 views
82

मैं अपने उत्पादन वेबसाइट और डेटाबेस के रूप में अपने स्थानीयहोस्ट के लिए उन्नत सेवाओं (v10.50.1600.1) के साथ SQL सर्वर एक्सप्रेस संस्करण के लिए SQL Server 2008 R2 मानक (संस्करण 10.50.1600.1) का उपयोग कर रहा हूं।SQL सर्वर डेटाबेस पुनर्स्थापित त्रुटि: निर्दिष्ट कास्ट मान्य नहीं है। (SqlManagerUI)

कुछ दिनों पहले मेरा SQL सर्वर क्रैश हो गया और मुझे अपने स्थानीयहोस्ट पर एक नया 2008 आर 2 एक्सप्रेस संस्करण स्थापित करना पड़ा। यह ठीक काम किया जब मैं एक्सप्रेस संस्करण से लिया कुछ पुराने संस्करण बहाल लेकिन जब मैं .bak फ़ाइल जो यह निम्न त्रुटि उत्पन्न कर रहा है उत्पादन सर्वर से लिया जाता है से डेटाबेस बहाल करने की कोशिश:

Error: Specified cast is not valid. (SqlManagerUI)

और जब मैं बहाल करने की कोशिश का उपयोग कर डेटाबेस आदेश

Use Master 
Go 
RESTORE DATABASE Publications 
FROM DISK = 'C:\Publications.bak' 
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path 
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf' 

यह एक अलग त्रुटि

Msg 3154, Level 16, State 4, Line 1
The backup set holds a backup of a database other than the existing 'Publications' database.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

मैं पार संस्करणों की जाँच की है उत्पन्न करता है।

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

मुझे यकीन नहीं है कि मैं क्या गलत कर रहा हूं।

समस्या के बारे में को हल किया गया था, जैसा कि लगता है .bak फ़ाइल भ्रष्ट थी। जब मैंने इसे एक अलग फ़ाइल के साथ करने की कोशिश की तो यह काम किया।

+0

इस में समर्थ नहीं है, लेकिन त्वरित प्रश्न, डेटाबेस में x86 और x64 arhitecture संगत है? –

+0

उस समय मैंने पिछले डेटाबेस को पुनर्स्थापित किया था, मुझे इस तरह के किसी भी मुद्दे का सामना नहीं करना पड़ा। कुछ कारणों से अब यह त्रुटियां उत्पन्न कर रहा है, मुझे यकीन नहीं है कि डेटाबेस सर्वर संयोजन किसी भी समस्या का निर्माण कर रहा है – Learning

+0

मौजूदा AlHabtoorPublications डेटाबेस को ओवरराइट करने के लिए T-SQL कमांड में ', REPLACE' जोड़ने का प्रयास करें। – SchmitzIT

उत्तर

38

जीयूआई कई बार गुदगुदी हो सकता है। टी-एसक्यूएल का उपयोग करते समय आपको मिली त्रुटि इसलिए है क्योंकि आप किसी मौजूदा डेटाबेस को ओवरराइट करने का प्रयास कर रहे हैं, लेकिन मौजूदा डेटाबेस को ओवरराइट/प्रतिस्थापित करने के लिए निर्दिष्ट नहीं किया है। निम्नलिखित काम कर सकते हैं:

Use Master 
Go 
RESTORE DATABASE Publications 
    FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak' 
    WITH 
    MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path 
    MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf' 
, REPLACE -- Add REPLACE to specify the existing database which should be overwritten. 
+0

विषम, मैंने आपके मूल कथन का पुन: उपयोग किया। किसी भी मामले में, मैंने जो एकमात्र संकेत जोड़ा था वह अंतिम पंक्ति थी: ', REPLACE' – SchmitzIT

+0

यह मुझे निराशाजनक है, मुझे आशा है कि मैं इसे जल्द ही हल कर सकता हूं – Learning

+1

असल में, 'विफल: 38'' फ़ाइल के अंत तक पहुंचने वाला संकेत 'इंगित करता है। (एक कमांड विंडो में, 'नेट हेल्पएमएसजी 38' चलाएं)। यह आमतौर पर भ्रष्ट बैकअप इंगित करता है: http://stackoverflow.com/questions/5656363/restore-sql-server-database-failed-38reached-the-end-of-the-file – SchmitzIT

12

अंत में यह त्रुटि पुनर्स्थापना पर जाने के लिए मिली। मैं निराशा से SQL2012 में चले गए, लेकिन मुझे लगता है कि यह शायद 2008R2 पर काम करेगा। मैं तार्किक नाम का उपयोग करने के लिए किया था:

RESTORE FILELISTONLY 
FROM DISK = ‘location of your.bak file’ 

और वहाँ से मैं तार्किक नाम का उपयोग MOVE साथ एक बयान बहाल भाग गया।

RESTORE DATABASE database1 
FROM DISK = '\\database path\database.bak' 
WITH 
MOVE 'File_Data' TO 'E:\location\database.mdf', 
MOVE 'File_DOCS' TO 'E:\location\database_1.ndf', 
MOVE 'file' TO 'E:\location\database_2.ndf', 
MOVE 'file' TO 'E:\location\database_3.ndf', 
MOVE 'file_Log' TO 'E:\location\database.ldf' 

जब इसे बहाल किया गया, तो मैं लगभग खुशी से रोया।

शुभकामनाएं!

152

SQL सर्वर 2012 संस्करण बैकअप फ़ाइल को SQL Server 2008 R2 या इससे भी कम में पुनर्स्थापित करने के कारण हो सकता है।

+10

आपने मेरे लिए सिर पर नाखून मारा :) – ABH

+2

इसके बजाय किसी को "स्क्रिप्ट जेनरेट" का उपयोग करने की आवश्यकता होगी। – kroiz

+0

बिल्कुल मेरे लिए भी मुद्दा। – SimonGoldstone