जीयूआई का उपयोग करके डेटाबेस को पुनर्स्थापित करें - पुनर्स्थापित करने के लिए गलत फ़ाइल


20

मैं बस SSMS ग्राफिक इंटरफ़ेस के साथ खिलवाड़ कर रहा हूं और "पुनर्स्थापना" कार्य के विकल्पों का अध्ययन कर रहा हूं।

एक बात जो मैंने देखी है जब मैं "स्क्रिप्ट उत्पन्न करता हूं" पर क्लिक करता हूं, तो क्वेरी की पहली पंक्ति है:

 RESTORE DATABASE [MyDatabase] FROM  DISK = N'Server_Patch\Database_name_LOGSHIPPING.BKP' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 5 ( and a lot of log backups for point in time )

ठीक है, कोई समस्या नहीं है, लेकिन, मैं इस डेटाबेस के दैनिक बैकअप कर रहा हूं। यह Database_name_LOGSHIPPING.BKPउस फ़ाइल का नाम था जिसे मैंने एक महीने पहले लॉग शिपिंग के लिए बनाया था।

जब मैं बैकअप को पुनर्स्थापित करने के लिए SSMS ग्राफिक इंटरफ़ेस का उपयोग करने की कोशिश करता हूं, तो यह इस बैकअप फ़ाइल की ओर इशारा करता है? मेरे पास अब यह फाइल भी नहीं है।


MSSQLTIPS की इस क्वेरी के साथ मैं इस डेटाबेस से सभी बैकअप देख सकता हूं:

SELECT 
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_start_date, 
msdb.dbo.backupset.backup_finish_date, 
msdb.dbo.backupset.expiration_date, 
CASE msdb..backupset.type 
WHEN 'D' THEN 'Database' 
WHEN 'L' THEN 'Log' 
END AS backup_type, 
msdb.dbo.backupset.backup_size, 
msdb.dbo.backupmediafamily.logical_device_name, 
msdb.dbo.backupmediafamily.physical_device_name, 
msdb.dbo.backupset.name AS backupset_name, 
msdb.dbo.backupset.description 
FROM msdb.dbo.backupmediafamily 
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7)   and  msdb..backupset.type ='D'
ORDER BY 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_finish_date 

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

यहां क्या गलत हो सकता है? मैं केवल कॉपी का उपयोग नहीं कर रहा हूँ।


EDIT2:

मैं परीक्षण करने के लिए दैनिक मैनुअल बैकअप बनाता हूं, और इस तरह भी, SQL सर्वर उस पुराने बैकअप का चयन करता है जो अब मौजूद नहीं है। RESTORE HEADERONLY...इसे चलाने के दौरान (स्पष्ट रूप से) फ़ाइल मौजूद नहीं है।


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

यह GUI प्रिंट:

1 यहां छवि विवरण दर्ज करें वाह वाह वाह एक मिनट !

यह डेटाबेस एक अन्य सर्वर (एक ही सर्वर, विभिन्न उदाहरणों) से पुनर्स्थापित था। हुमूं ... मुझे लगता है कि समस्या यहाँ है।

क्या आप लोग दूसरी तस्वीर में "सर्वर" पर देख सकते हैं? इसमें 2 सर्वर हैं। मैं GDLIC2014 उदाहरण नाम के साथ एक का उपयोग कर रहा हूँ।

लिपी:

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

बैकअप स्क्रिप्ट:

DECLARE @Patch varchar(1000)

SELECT @Patch = (SELECT 'PATCH\FULL\DATABASE_ ' + convert(varchar(500),GetDate(),112) + '.bkp') 

BACKUP DATABASE DATABASE TO DISK=@Patch with compression

MSSQLTIPS से समान क्वेरी के साथ, मैं इन परिणामों को पा सकता हूं, बिना किसी तिथि सीमा के इसका उपयोग कर:

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

लाल वर्ग पुराने उदाहरण से गलत बैकअप है, ब्लू स्क्वायर अंतिम बैकअप लिया गया है (GUI का उपयोग किया जाना चाहिए)

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

खैर, बैकअप हिस्ट्री को सूचीबद्ध करने की इस क्वेरी के साथ, मैं देखता हूं कि हर लॉग और फुल सही तरीके से सूचीबद्ध हैं:

SELECT TOP 100
s.database_name,
m.physical_device_name,
CAST(CAST(s.backup_size / 1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS bkSize,
CAST(DATEDIFF(second, s.backup_start_date,
s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TimeTaken,
s.backup_start_date,
CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,
CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn,
CASE s.[type]
WHEN 'D' THEN 'Full'
WHEN 'I' THEN 'Differential'
WHEN 'L' THEN 'Transaction Log'
END AS BackupType,
s.server_name,
s.recovery_model
FROM msdb.dbo.backupset s
INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
WHERE s.database_name = DB_NAME() -- Remove this line for all the database
ORDER BY backup_start_date DESC, backup_finish_date
GO

EDIT5:

क्या डेटाबेस के हेडर को पुनः आरंभ करने के लिए कुछ है

(मैं विचारों से बाहर हूं)


3
क्या आप नवीनतम SSMS GUI - 2014 का उपयोग करके देख सकते हैं ? इसमें कई सुधार शामिल हैं
परिजन शाह

1
क्या आपने ट्रेस सेट किया है और फिर GUI विकल्पों के माध्यम से चलाने के लिए कैसे SSMS को जानकारी मिल रही है? जल्दी हो सकता है ...
स्टीव मंगमेली

1
@ राफेलपिसिनसेली - मुझे लगता है कि कुछ सरल की अनदेखी की जा रही है, लेकिन यह निश्चित नहीं है कि यह क्या है। क्या आपने मूल से GDLIC2014 उदाहरण के लिए msdb डेटाबेस को पुनर्स्थापित किया था? क्या कुछ गलत कनेक्शन स्ट्रिंग या पथ का उपयोग कर सकता है? निश्चित रूप से SQL सर्वर बैकअप और रिस्टोर के लिए डेटा नहीं बना रहा है। (एक तरफ के रूप में, यह दिलचस्प है कि आप _2.mdf, _3.mdf, और _4.mdf को पुनर्स्थापित कर रहे हैं, लेकिन गैर-प्रत्यय नहीं है। mdf या _1.mdf।)
RLF

जीयूआई को बहाल करने के लिए उपयोग करना छोड़ दें। आपके पास वास्तव में क्या है, और यह निर्धारित करने के लिए बैकअप डिस्क या टेप को देखें।
एंटी-कमजोर पासवर्ड

नमस्कार @ एंटी-कमजोरपासवर्ड। नहीं नहीं। मैं GUI का उपयोग नहीं करता। मैं लॉग अनुक्रम को क्वेरी करता हूं, और मैं इसके साथ काम करता हूं। मैं GUI के बारे में उत्सुक था, लेकिन फिर मैंने इस समस्या को देखा। मैं GUI से जितना हो सके उतना दूर रहने की कोशिश करता हूँ।
रेसर एसक्यूएल

जवाबों:


1

संभावना बैकअप इतिहास तालिकाओं में कुछ है जो सिंक से बाहर हो गया है और यूआई अंतिम "सुसंगत" पूर्ण बैकअप पर जा रहा है। यदि आप वास्तव में रुचि रखते हैं कि यह ऐसा क्यों कर रहा है, तो अपने खाते में सीमित एक प्रोफाइलर ट्रेस शुरू करें, GUI में पुनर्स्थापित चरणों के माध्यम से चलें, और ट्रेस में कैप्चर किए गए कमांड की समीक्षा करें जो दिखाता है कि UI पर्दे के पीछे क्या कर रहा है। । इससे आपको वह निश्चित उत्तर मिल जाएगा जिसकी आपको तलाश है।

यदि आप इसके बजाय बस इसे आगे बढ़ाते हैं, तो आप अपना बैकअप इतिहास EXEC [msdb].[dbo].[sp_delete_backuphistory] @oldest_date=getdate()(जिस समय आपने इसे चलाया था उस पर निर्भर करते हुए, आप इसे एक महीने में एक बार साफ़ कर सकते हैं) और फिर एक नया पूरा लेना चाहते हैं, आदि। यह संदेह होगा कि आगे बढ़ने वाले उचित बैकअप का उपयोग करने के लिए GUI को रीसेट करेगा।

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


हे @ जॉन आपके उत्तर के लिए धन्यवाद .. मैंने एक किया declare @data datetime set @data=getdate() EXEC msdb.dbo.sp_delete_backuphistory @oldest_date=@dataऔर इतिहास को हटा दिया। मैं यह देखने के लिए कुछ परीक्षण करूंगा कि क्या यह काम करता है। धन्यवाद।
रेसर एसक्यूएल

हाय @ राफेलपिसिनसेली। क्या यह आपके लिए काम करता है?
केफाश

हे @ केफश। मुझे लगता है कि यह काम नहीं किया। मैं अभी याद नहीं कर सकता। लेकिन हर बार जब मुझे कोई जवाब मिला, तो मैंने तुरंत जवाब दिया और एक जवाब के रूप में चुना। मुझे लगता है कि इससे मेरी समस्या हल नहीं हुई।
रेसर SQL

@ जॉन मुझे इस सो को बुरी तरह से ठीक करने की आवश्यकता है। क्या आपका मुद्दा आखिर हल हो गया?
केफाश

@ RafaelPiccinelli मुझे इसे ठीक करने की आवश्यकता है जब मुझे यह कहने के लिए एक बिंदु को पुनर्स्थापित करने की आवश्यकता है कि HAG में एक डेटाबेस जोड़ें तो यह कष्टप्रद हो सकता है। मुझे पता है कि यह जीयूआई के बिना किया जा सकता है लेकिन लेनदेन लॉग हर 10 मिनट में लिया जाता है। आपके अन्य दृष्टिकोण क्या थे?
केफाश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.