मैं अपने पीसी के स्थानीय SQL सर्वर डेवलपर संस्करण 12.0.2000.8 पर विकास के उद्देश्यों के लिए एक डेटाबेस स्थापित करने का प्रयास कर रहा हूं। मुझे एक पूर्ण डेटाबेस बैकअप और अलग-अलग लेनदेन-लॉग-केवल बैकअप फाइलें उपलब्ध हैं जो मुझे नेटवर्क पर भेजी गई थीं।
पूर्ण बैकअप से पुनर्स्थापित करने का प्रयास करते समय, कुछ समय बाद (~ 1 घंटा शायद, डेटाबेस ~ 270 जीबी आकार में है), मुझे एक त्रुटि मिल रही है:
System.Data.SqlClient.SqlError: डेटाबेस 'डेटाबेस नाम' के लिए लॉग को संसाधित करते समय एक त्रुटि हुई। यदि संभव हो, तो बैकअप से पुनर्स्थापित करें। यदि बैकअप उपलब्ध नहीं है, तो लॉग का पुनर्निर्माण करना आवश्यक हो सकता है। (Microsoft.SqlServer.SmoExtended)
इसके बाद, डीबी 'रिस्टोरिंग ..' स्टेट में है।
मैं कुछ चलाना चाहता था (इसे इस प्रश्न से मिला )
ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;
DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;
इसके खिलाफ, लेकिन स्वाभाविक रूप से मैं डेटाबेस के रूप में 'रिस्टोरिंग ..' स्थिति में नहीं हो सकता। इस पर पुनर्स्थापना प्रक्रिया को फिर से शुरू करना एक ही त्रुटि संदेश की ओर जाता है, गिराना और फिर से बहाल करना भी मदद नहीं करता है।
मैं डीबी कैसे प्राप्त करूं और काम करूं? लेन-देन की संगतता मेरे लिए कोई मायने नहीं रखती है।
SSMS स्वतः-निर्मित पुनर्स्थापना स्क्रिप्ट:
USE [master]
RESTORE DATABASE [database_name] FROM DISK = N'D:\database_name.bak' WITH FILE = 1,
MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
NOUNLOAD,
STATS = 5
GO
@Craig Efrein द्वारा सुझाई गई क्वेरी का परिणाम
लॉग को फिर से बनाया नहीं जा सकता क्योंकि डेटाबेस के बंद होने पर खुले लेनदेन / उपयोगकर्ता थे, डेटाबेस पर कोई चेकपॉइंट नहीं हुआ, या डेटाबेस केवल-पढ़ने के लिए था। यह त्रुटि तब हो सकती है यदि लेनदेन लॉग फ़ाइल को हार्डवेयर या पर्यावरण विफलता के कारण मैन्युअल रूप से हटा दिया गया या खो गया।