SQL सर्वर डेटाबेस त्रुटि को बहाल: निर्दिष्ट कास्ट मान्य नहीं है। (SqlManagerUI)


91

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

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

त्रुटि: निर्दिष्ट कास्ट मान्य नहीं है। (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, स्तर 16, राज्य 4, पंक्ति 1
बैकअप सेट मौजूदा 'प्रकाशन' डेटाबेस के अलावा किसी डेटाबेस का बैकअप रखता है।
Msg 3013, लेवल 16, स्टेट 1, लाइन 1
RESTORE DATABASE असामान्य रूप से समाप्त हो रहा है।

मैंने संस्करणों की जांच की है। जैसा कि नीचे की छवि में दिखाया गया है, वे सभी मुझे मेल खाते लगते हैं

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

मैं निश्चित नहीं हूं मुझसे क्या गलत हो रहा है। मैं इस संबंध में मदद की सराहना करूंगा

मुद्दा हल हो गया जैसा लगता है ।bak फ़ाइल दूषित थी। जब मैंने इसे एक अलग फाइल के साथ आजमाया तो यह काम कर गया।


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

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

,REPLACEमौजूदा AlHabtoorPublications डेटाबेस को अधिलेखित करने के लिए T-SQL कमांड को जोड़ने का प्रयास करें।
श्मिटजिट

मैं आज काम पर एक ही मुद्दा मारा .. लगता है कि फ़ाइल आकार पोस्ट की जाँच FTP हस्तांतरण पर्याप्त नहीं है। फ़ाइल की तरह लगता है बहुत संवेदनशील है। स्थानांतरण को निष्पादित करने से पहले फ़ाइल को ज़िप करके समस्या को हल किया।
rofans91

स्केनेरियो I ने SQL SERVER 2008 पर डेटाबेस बैकअप लिया और इसे SQL SERVER 2008 R2 पर पुनर्स्थापित करने का प्रयास किया। आदर्श रूप से, यह ठीक काम करना चाहिए लेकिन बैकअप फ़ाइल का चयन करते समय, SQL प्रबंधन स्टूडियो 2208 R2 त्रुटि उठा रहा था "निर्दिष्ट डाली निर्दिष्ट नहीं है। (SqlManagerUI)"। कारण और समस्या यह थी। FTP हस्तांतरण के दौरान .BAK फ़ाइल भ्रष्टाचार के कारण (हस्तांतरण मोड ASCII पर सेट है)। डेटाबेस ट्रांसफर करते समय हमेशा BINARY में FTP ट्रांसफर मोड सेट करना याद रखें। BAK फाइल।
रोहन सरकार

जवाबों:


40

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

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.

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

1
असल में, Failed: 38इंगित करता है reached end of the file। (कमांड विंडो में, रन करें NET HELPMSG 38)। यह आमतौर पर एक भ्रष्ट बैकअप का संकेत देता है: stackoverflow.com/questions/5656363/…
SchmitzIT

मैंने बिट पुराने .bak फ़ाइल के साथ पुनर्स्थापना का परीक्षण किया जो बिना किसी समस्या के पुनर्स्थापित हो गया। ऐसा लगता है कि यह विशेष रूप से .bak फ़ाइल भ्रष्ट है
सीखना

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

आप स्क्रिप्ट निम्न त्रुटि उत्पन्न करते हैं Msg 3203, स्तर 16, राज्य 1, पंक्ति 1 "C: \ Publications.bak" पर विफल: 38 (इस त्रुटि के लिए पाठ पुनर्प्राप्त करने में विफल। कारण: 15105) Msg 3013, स्तर 16, राज्य 1। , लाइन 1 पुनर्वसन DATABASE असामान्य रूप से समाप्त हो रहा है।
सीखने

163

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


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

4
यह मेरी समस्या थी। ऐसा लगता है कि एमएस के लिए इनमें से कुछ मामलों के लिए अधिक उपयोगी संदेश देना कठिन नहीं होगा।
जॉन गिल्मर

पीनल दवे यहाँ कारण बताते हैं - blog.sqlauthority.com/2015/06/01/…
shrivb

15

अंत में एक पुनर्स्थापना पर चले जाने के लिए यह त्रुटि मिली। मैं हताशा से 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'

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

सौभाग्य!


4

नीचे इस समस्या के 2 कारण हो सकते हैं:

  1. SQL 2012 और पुनर्स्थापना Headeronly पर लिया गया बैकअप SQL 2008 R2 में किया गया था

  2. बैकअप मीडिया दूषित है।

यदि हम नीचे कमांड चलाते हैं, तो हम हमेशा वास्तविक त्रुटि पा सकते हैं:

restore headeronly
from disk = 'C:\Users\Public\Database.bak'

अपने डेटाबेस फ़ाइल का पूरा स्थान उद्धरण में दें

आशा करता हूँ की ये काम करेगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.