Sql सर्वर में किसी भिन्न डेटाबेस को कैसे पुनर्स्थापित करें?


224

मेरे पास एक हफ्ते पहले से डेटाबेस 1 का बैकअप है । शेड्यूलर में बैकअप साप्ताहिक रूप से किया जाता है और मुझे एक .bakफ़ाइल मिलती है । - अब मैं कुछ डेटा के साथ बेला को तो मैं एक अलग डेटाबेस के लिए उसे पुनर्स्थापित करना चाहते हैं Database2

मैंने इस प्रश्न को देखा है: SQL सर्वर डेटाबेस को अलग-अलग नाम से एक ही पीसी में पुनर्स्थापित करें और अनुशंसित चरण मूल db का नाम बदलना है, लेकिन मैं उस विकल्प से बाहर हूं क्योंकि मैं उत्पादन सर्वर में हूं और मैं वास्तव में ऐसा नहीं करता।

क्या इसे पुनर्स्थापित करने का कोई अन्य तरीका है Database2, या कम से कम, मैं उस .bak फ़ाइल के डेटा के माध्यम से कैसे ब्राउज़ करूं?

धन्यवाद।

ps: उपरोक्त लिंक से दूसरा उत्तर आशाजनक लग रहा था, लेकिन यह त्रुटि के साथ समाप्त हो रहा है:

पुनर्स्थापना फिलालिस्ट असामान्य रूप से समाप्त कर रहा है

जवाबों:


304

आप एक नया db बना सकते हैं, फिर ओवरराइट विकल्प को सक्षम करने के लिए "रिस्टोर विजार्ड" का उपयोग करें या;

सामग्री देखें;

RESTORE FILELISTONLY FROM DISK='c:\your.bak'

परिणामों से .mdf और .ldf के तार्किक नामों पर ध्यान दें;

RESTORE DATABASE MyTempCopy FROM DISK='c:\your.bak'
WITH 
   MOVE 'LogicalNameForTheMDF' TO 'c:\MyTempCopy.mdf',
   MOVE 'LogicalNameForTheLDF' TO 'c:\MyTempCopy_log.ldf'

MyTempCopyकी सामग्री के साथ डेटाबेस बनाने के लिए your.bak

उदाहरण ('MyTempCopy' के लिए 'क्रेडिटलाइन' नामक db के बैकअप को पुनर्स्थापित करता है);

RESTORE FILELISTONLY FROM DISK='e:\mssql\backup\creditline.bak'

>LogicalName
>--------------
>CreditLine
>CreditLine_log

RESTORE DATABASE MyTempCopy FROM DISK='e:\mssql\backup\creditline.bak'
WITH 
   MOVE 'CreditLine' TO 'e:\mssql\MyTempCopy.mdf',
   MOVE 'CreditLine_log' TO 'e:\mssql\MyTempCopy_log.ldf'

>RESTORE DATABASE successfully processed 186 pages in 0.010 seconds (144.970 MB/sec).

5
नमस्ते, मुझे कुछ याद आ रहा है, यह त्रुटि फेंकती रहती है backkup set holds a backup of a database other than existing "tmp" database, जिसे मैं समझता हूं। क्या toवाक्यांश का वास्तविक भौतिक मार्ग होना चाहिए MyTempCopy?
LocustHorde

Odd, toनए डेटाबेस के लिए db और लॉग लोकेशन है, ऊपर उदाहरण अपडेट करें
एलेक्स

52
किसी और की कोशिश के लिए, MyTempCopy का निर्माण न करें, यह पुनर्स्थापना के दौरान बनाया गया है।
ब्लेज़ेस

3
केवल REPLACE, RECOVERY के साथ काम किया, मेरे मामले में विकल्प (SQL2012) cr। dba.stackexchange.com/questions/51489/…
dc2009

7
इस काम के लिए REPLACE, RECOVERY का उपयोग करना चाहिए। तो यह होगा:RESTORE DATABASE MyTempCopy FROM DISK='e:\mssql\backup\creditline.bak' WITH REPLACE, RECOVERY, MOVE 'CreditLine' TO 'e:\mssql\MyTempCopy.mdf', MOVE 'CreditLine_log' TO 'e:\mssql\MyTempCopy_log.ldf'
रहान

67

SQL सर्वर 2008 R2:

एक मौजूदा डेटाबेस के लिए जिसे आप "पुनर्स्थापित करना चाहते हैं: एक अलग डेटाबेस के बैकअप से इन चरणों का पालन करें:

  1. टूलबार से, गतिविधि मॉनिटर बटन पर क्लिक करें।
  2. प्रक्रियाओं पर क्लिक करें। उस डेटाबेस से फ़िल्टर करें जिसे आप पुनर्स्थापित करना चाहते हैं। प्रत्येक प्रक्रिया पर राइट क्लिक करके और "किल प्रक्रिया" का चयन करके सभी चल रही प्रक्रियाओं को मार दें।
  3. उस डेटाबेस पर राइट क्लिक करें जिसे आप पुनर्स्थापित करना चाहते हैं, और कार्य -> ​​पुनर्स्थापना -> डेटाबेस से चुनें।
  4. "डिवाइस से:" रेडियो बटन चुनें।
  5. का चयन करें ... और उस अन्य डेटाबेस की बैकअप फ़ाइल चुनें जिसे आप पुनर्स्थापित करना चाहते हैं।
  6. बैकअप सेट का चयन करें जिसे आप बैकअप सेट के बाईं ओर चेक बॉक्स का चयन करके पुनर्स्थापित करना चाहते हैं।
  7. विकल्प चुनो"।
  8. मौजूदा डेटाबेस को अधिलेखित करें (समीक्षा के साथ)
  9. महत्वपूर्ण: "पुनर्स्थापना के रूप में" पंक्तियाँ डेटा फ़ाइल नाम को उस मौजूदा डेटाबेस के फ़ाइल नाम में बदलें जिसे आप अधिलेखित करना चाहते हैं या इसे नया नाम दें।
  10. लॉग फ़ाइल नाम के साथ ऐसा ही करें।
  11. गतिविधि मॉनिटर स्क्रीन से सत्यापित करें कि कोई नई प्रक्रिया नहीं पैदा की गई। यदि वे थे, तो उन्हें मार डालो।
  12. ओके पर क्लिक करें।

12
एमएस SQL ​​सर्वर 2010?
मार्क

3
यहाँ कुछ स्क्रीनशॉट हैं stackoverflow.com/questions/3829271/…
टॉमस क्यूब्स

प्रोग्रामर होने के बावजूद मैं इस विज़ार्ड का उपयोग करूँगा। आसान और क्लीनर।
v1n1akabozo

1
मेरे लिए महत्वपूर्ण कदम # 8 था। शुक्रिया डेनियल।
जुकर

Sql 2014 .. चरण 6a: गंतव्य डेटाबेस को उस डेटाबेस में बदलें जिसे आप पुनर्स्थापित करना चाहते हैं। स्टेप 9 और 10: डेस्टिनेशन डेटाबेस में बदलाव करके इस बात का ध्यान रखना चाहिए। लेकिन फाइल पर जाकर डबल चेक करें और मूल चरण 9 और 10. में बताए गए फ़ाइल नाम की जांच करें
JzInqXc9Dg

49

SQL सर्वर 2012 के लिए, Sql सर्वर प्रबंधन स्टूडियो का उपयोग करते हुए, मैंने Microsoft डेटाबेस से इन चरणों को एक अलग डेटाबेस फ़ाइल और नाम को पुनर्स्थापित करने के लिए उपयोगी पाया: (Ref: http://technet.microsoft.com/en-us/library/ms175510 .aspx )

नोट चरण 4 और 7 मौजूदा डेटाबेस को अधिलेखित नहीं करने के लिए सेट करने के लिए महत्वपूर्ण हैं।


डेटाबेस को किसी नए स्थान पर पुनर्स्थापित करने के लिए, और वैकल्पिक रूप से डेटाबेस का नाम बदलें

  1. SQL सर्वर डेटाबेस इंजिन के उपयुक्त उदाहरण से कनेक्ट करें, और उसके बाद ऑब्जेक्ट Explorer में, सर्वर नाम सर्वर ट्री का विस्तार करने के लिए क्लिक करें।
  2. डेटाबेस पर राइट-क्लिक करें , और उसके बाद डेटाबेस पुनर्स्थापित करें पर क्लिक करेंडेटाबेस पुनर्स्थापित संवाद बॉक्स खुलता है।
  3. पर जनरल पेज, का उपयोग स्रोत बहाल करने के लिए स्रोत और बैकअप सेट का स्थान निर्दिष्ट करने के अनुभाग। निम्न विकल्पों में से एक का चयन करें:

    • डेटाबेस

      • ड्रॉप-डाउन सूची से पुनर्स्थापित करने के लिए डेटाबेस का चयन करें। सूची में केवल वे डेटाबेस हैं जो msdb बैकअप इतिहास के अनुसार बैकअप लिए गए हैं।

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

    • युक्ति

      • बैकअप डिवाइस डायलॉग बॉक्स को खोलने के लिए ब्राउज़ (...) बटन पर क्लिक करें । में बैकअप मीडिया प्रकार बॉक्स में, सूचीबद्ध डिवाइस प्रकारों में से एक का चयन करें। बैकअप मीडिया बॉक्स के लिए एक या अधिक उपकरणों का चयन करने के लिए , जोड़ें पर क्लिक करें । बैकअप मीडिया सूची बॉक्स में इच्छित उपकरण जोड़ने के बाद , सामान्य पृष्ठ पर लौटने के लिए ठीक पर क्लिक करें । में डिवाइस:: स्रोत डाटाबेस सूची बॉक्स, डेटाबेस जो बहाल किया जाना चाहिए के नाम का चयन करें।

        नोट यह सूची केवल तब उपलब्ध होती है जब डिवाइस का चयन किया जाता है। केवल चयनित डिवाइस पर बैकअप वाले डेटाबेस उपलब्ध होंगे।

  4. में गंतव्य अनुभाग, डाटाबेस बॉक्स स्वचालित रूप से साथ डेटाबेस के नाम से बहाल किया जा करने के लिए भर जाता है। डेटाबेस का नाम बदलने के लिए, डेटाबेस बॉक्स में नया नाम दर्ज करें ।
  5. में करने के लिए पुनर्स्थापित बॉक्स, के रूप में डिफ़ॉल्ट छोड़ लिया पिछले बैकअप करने के लिए या पर क्लिक करें समय का उपयोग करने के लिए बैकअप समय संवाद बॉक्स मैन्युअल समय में एक बिंदु का चयन करने के लिए वसूली कार्रवाई को रोकने के लिए।
  6. ग्रिड को पुनर्स्थापित करने के लिए बैकअप सेट में, पुनर्स्थापित करने के लिए बैकअप का चयन करें। यह ग्रिड निर्दिष्ट स्थान के लिए उपलब्ध बैकअप को प्रदर्शित करता है। डिफ़ॉल्ट रूप से, एक पुनर्प्राप्ति योजना का सुझाव दिया जाता है। सुझाए गए पुनर्प्राप्ति योजना को ओवरराइड करने के लिए, आप ग्रिड में चयन बदल सकते हैं। पिछले बैकअप की बहाली पर निर्भर करने वाले बैकअप को स्वचालित रूप से हटा दिया जाता है जब पहले वाला बैकअप अचयनित हो जाता है।
  7. डेटाबेस फ़ाइलों के नए स्थान को निर्दिष्ट करने के लिए, फ़ाइलें पृष्ठ का चयन करें , और उसके बाद सभी फ़ाइलों को फ़ोल्डर में स्थानांतरित करें पर क्लिक करें । डेटा फ़ाइल फ़ोल्डर और लॉग फ़ाइल फ़ोल्डर के लिए एक नया स्थान प्रदान करें । वैकल्पिक रूप से आप एक ही फ़ोल्डर रख सकते हैं और बस डेटाबेस का नाम बदलें और फ़ाइल नाम लॉग करें।

3
यह एक आकर्षण की तरह काम करता है; 4 & 7 के लिए विशेष धन्यवाद
अनातोली यकीमचुक

इसके अतिरिक्त, मुझे 'विकल्प' टैब पर जाना था और 'मौजूदा डेटाबेस को फिर से लिखना' ('REPLACE)' की जांच करनी थी ... फिर काम किया।
जॉन कुर्तज

1
@JohnKurtz आपको ऐसा करने की आवश्यकता नहीं है यदि आप एक नए डेटाबेस में पुनर्स्थापित कर रहे हैं।
रोट्स

में पुनर्स्थापित करने के लिए मैंने पहले ही एक खाली डेटाबेस बनाया था। यही अंतर होना चाहिए।
जॉन कुर्तज

1
पुष्टि की जाती है कि यह वर्णित है कि यदि आप चरण 4 में एक गैर-मौजूदा डेटाबेस का नाम दर्ज करते हैं, तो यह पुष्टि की जाती है कि यदि आप एक अलग डेटाबेस चुनते हैं, जो पहले से मौजूद है, तो आपको 'मौजूदा डेटाबेस को फिर से लिखना (' पर) के साथ जाँचना होगा ' विकल्प 'टैब। आपके धैर्य के लिए धन्यवाद!
जॉन कुर्तज़

34

वास्तव में, मूल SQL सर्वर शब्दों में डेटाबेस को पुनर्स्थापित करने की कोई आवश्यकता नहीं है, क्योंकि आप "कुछ डेटा के साथ फ़िडेल करना चाहते हैं" और "उस .bak फ़ाइल के डेटा के माध्यम से ब्राउज़ करें"।

आप एपेक्सक्यूएल रिस्टोर - एक SQL सर्वर टूल का उपयोग कर सकते हैं जो मूल और मूल रूप से संकुचित SQL डेटाबेस बैकअप और लेनदेन लॉग बैकअप को लाइव डेटाबेस के रूप में संलग्न करता है , जो SQL सर्वर प्रबंधन स्टूडियो, विज़ुअल स्टूडियो या किसी अन्य तृतीय-पक्ष उपकरण के माध्यम से सुलभ है। यह एकल या एकाधिक पूर्ण, अंतर और लेनदेन लॉग बैकअप संलग्न करने की अनुमति देता है

इसके अलावा, मुझे लगता है कि आप काम कर सकते हैं जबकि उपकरण पूरी तरह कार्यात्मक परीक्षण मोड में है (14 दिन)

अस्वीकरण: मैं एपेक्सक्यूएल में उत्पाद समर्थन इंजीनियर के रूप में काम करता हूं


9

यहाँ मैंने विभिन्न पदों से एक साथ मिलकर बैकअप का उपयोग करने वाले डेटाबेस की प्रतिलिपि बनाने और तार्किक नाम को ठीक करने के लिए भौतिक स्थान और अतिरिक्त एसक्यूएल को ठीक करने के लिए कदम के साथ बहाल किया है।

/**
 * Creates (or resets) a Database to a copy of the template database using backup and restore.
 *
 * Usage: Update the @NewDatabase value to the database name to create or reset.
 */

DECLARE @NewDatabase SYSNAME = 'new_db';

-- Set up
USE tempdb;

DECLARE @TemplateBackups SYSNAME = 'TemplateBackups';
DECLARE @TemplateDatabase SYSNAME = 'template_db';
DECLARE @TemplateDatabaseLog SYSNAME = @TemplateDatabase + '_log';

-- Create a backup of the template database
BACKUP DATABASE @TemplateDatabase TO DISK = @TemplateBackups WITH CHECKSUM, COPY_ONLY, FORMAT, INIT, STATS = 100;

-- Get the backup file list as a table variable
DECLARE @BackupFiles TABLE(LogicalName nvarchar(128),PhysicalName nvarchar(260),Type char(1),FileGroupName nvarchar(128),Size numeric(20,0),MaxSize numeric(20,0),FileId tinyint,CreateLSN numeric(25,0),DropLSN numeric(25, 0),UniqueID uniqueidentifier,ReadOnlyLSN numeric(25,0),ReadWriteLSN numeric(25,0),BackupSizeInBytes bigint,SourceBlockSize int,FileGroupId int,LogGroupGUID uniqueidentifier,DifferentialBaseLSN numeric(25,0),DifferentialBaseGUID uniqueidentifier,IsReadOnly bit,IsPresent bit,TDEThumbprint varbinary(32));
INSERT @BackupFiles EXEC('RESTORE FILELISTONLY FROM DISK = ''' + @TemplateBackups + '''');

-- Create  the backup file list as a table variable
DECLARE @NewDatabaseData VARCHAR(MAX);
DECLARE @NewDatabaseLog VARCHAR(MAX);

SELECT @NewDatabaseData = PhysicalName FROM @BackupFiles WHERE Type = 'D';
SELECT @NewDatabaseLog = PhysicalName FROM @BackupFiles WHERE Type = 'L';

SET @NewDatabaseData = REPLACE(@NewDatabaseData, @TemplateDatabase, @NewDatabase);
SET @NewDatabaseLog = REPLACE(@NewDatabaseLog, @TemplateDatabase, @NewDatabase);

RESTORE DATABASE @NewDatabase FROM DISK = @TemplateBackups WITH CHECKSUM, RECOVERY, REPLACE, STATS = 100,
   MOVE @TemplateDatabase TO @NewDatabaseData,
   MOVE @TemplateDatabaseLog TO @NewDatabaseLog;

-- Change Logical File Name
DECLARE @SQL_SCRIPT VARCHAR(MAX)='
    ALTER DATABASE [{NewDatabase}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    ALTER DATABASE [{NewDatabase}] MODIFY FILE (NAME=N''{TemplateDatabase}'', NEWNAME=N''{NewDatabase}'');
    ALTER DATABASE [{NewDatabase}] MODIFY FILE (NAME=N''{TemplateDatabase}_log'', NEWNAME=N''{NewDatabase}_log'');
    ALTER DATABASE [{NewDatabase}] SET MULTI_USER WITH ROLLBACK IMMEDIATE;
    SELECT name AS logical_name, physical_name FROM SYS.MASTER_FILES WHERE database_id = DB_ID(N''{NewDatabase}'');
';
SET @SQL_SCRIPT = REPLACE(@SQL_SCRIPT, '{TemplateDatabase}', @TemplateDatabase);
SET @SQL_SCRIPT = REPLACE(@SQL_SCRIPT, '{NewDatabase}', @NewDatabase);
EXECUTE (@SQL_SCRIPT);

नमस्कार NateN, मैं अपने .bak (जो कि मेरी लोकल मशीन में मौजूद है: ड्राइव पाथ) फाइल को दूसरे DB में रीस्टोर करना चाहता हूं। मैंने यूनिट टेस्टिंग के लिए इस कोड की कोशिश की, लेकिन यह एरर देता है .. "एक्सक्लूसिव एक्सेस नहीं मिल सका क्योंकि डेटाबेस उपयोग में है। "db को पुनर्स्थापित करने में असमर्थ .. क्या आप कृपया मेरी मदद कैसे कर सकते हैं ..?
विक्टर एथोती

जिस डेटाबेस को आप पुनर्स्थापित कर रहे हैं वह किसी अन्य प्रक्रिया के उपयोग में नहीं हो सकता है। मुझे यकीन नहीं है कि एक डेटाबेस तक पहुंचने वाली सभी प्रक्रियाओं को मारने की स्क्रिप्ट कैसे है।
नाथन निसेन

हैलो नैटएन, यह अब ठीक काम कर रहा है, मैं आपके नमूने के कोड का उपयोग करता हूं और फिर मैंने उस कोड में छोटे बदलाव किए और फिर ठीक काम कर रहा हूं ... एक बार फिर से नमूना कोड प्रदान करने के लिए धन्यवाद ...
विक्टर एथोती।

1
Sql2014 और उससे आगे के लिए, DECLARE @BackupFiles...लाइन एक अतिरिक्त स्तंभ की जरूरत है:SnapshotURL nvarchar(360)
फिएट

3

यह वास्तव में एक ही सर्वर को पुनर्स्थापित करने की तुलना में थोड़ा सरल है। असल में, आप बस "पुनर्स्थापना डेटाबेस" विकल्पों के माध्यम से चलते हैं। यहाँ आपके लिए एक ट्यूटोरियल है:

http://www.techrepublic.com/blog/window-on-windows/how-do-i-restore-a-sql-server-database-to-a-new-server/454

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


HI, मुझे एक ही सर्वर, अलग डेटाबेस को पुनर्स्थापित करने की आवश्यकता है ... (पुनर्स्थापना db का एक अलग नाम है)
LocustHorde

क्षमा करें, मैंने प्रश्न को गलत बताया। समान मूल सिद्धांत लागू होते हैं, आपको बस यह सुनिश्चित करने की आवश्यकता है कि नया नाम और फ़ाइल नाम (mdf, ldf, आदि) अलग हैं।
IAmTimCorey

3

यदि कोई डेटाबेस मौजूद नहीं है, तो मैं निम्नलिखित कोड का उपयोग करता हूं:

ALTER PROCEDURE [dbo].[RestoreBackupToNewDB]    
         @pathToBackup  varchar(500),--where to take backup from
         @pathToRestoreFolder  varchar(500), -- where to put the restored db files 
         @newDBName varchar(100)
    AS
    BEGIN

            SET NOCOUNT ON
            DECLARE @fileListTable TABLE (
            [LogicalName]           NVARCHAR(128),
            [PhysicalName]          NVARCHAR(260),
            [Type]                  CHAR(1),
            [FileGroupName]         NVARCHAR(128),
            [Size]                  NUMERIC(20,0),
            [MaxSize]               NUMERIC(20,0),
            [FileID]                BIGINT,
            [CreateLSN]             NUMERIC(25,0),
            [DropLSN]               NUMERIC(25,0),
            [UniqueID]              UNIQUEIDENTIFIER,
            [ReadOnlyLSN]           NUMERIC(25,0),
            [ReadWriteLSN]          NUMERIC(25,0),
            [BackupSizeInBytes]     BIGINT,
            [SourceBlockSize]       INT,
            [FileGroupID]           INT,
            [LogGroupGUID]          UNIQUEIDENTIFIER,
            [DifferentialBaseLSN]   NUMERIC(25,0),
            [DifferentialBaseGUID]  UNIQUEIDENTIFIER,
            [IsReadOnly]            BIT,
            [IsPresent]             BIT,
            [TDEThumbprint]         VARBINARY(32) -- remove this column if using SQL 2005
            )
            INSERT INTO @fileListTable EXEC('RESTORE FILELISTONLY FROM DISK ='''+ @pathToBackup+'''')
            DECLARE @restoreDatabaseFilePath NVARCHAR(500)
            DECLARE @restoreLogFilePath NVARCHAR(500)
            DECLARE @databaseLogicName NVARCHAR(500)
            DECLARE @logLogicName NVARCHAR(500)
            DECLARE @pathSalt uniqueidentifier = NEWID()

            SET @databaseLogicName = (SELECT LogicalName FROM @fileListTable WHERE [Type]='D') 
            SET @logLogicName = (SELECT LogicalName FROM @fileListTable WHERE [Type]='L')           
            SET @restoreDatabaseFilePath= @pathToRestoreFolder + @databaseLogicName + convert(nvarchar(50), @pathSalt) + '.mdf'
            SET @restoreLogFilePath= @pathToRestoreFolder + @logLogicName + convert(nvarchar(50), @pathSalt) + '.ldf'

            RESTORE DATABASE @newDBName FROM DISK=@pathToBackup     
            WITH 
               MOVE @databaseLogicName TO @restoreDatabaseFilePath,
               MOVE @logLogicName TO @restoreLogFilePath

            SET NOCOUNT OFF
    END

3
  • मेरे पास इस विषय के समान त्रुटि है जब मैं एक पुराने डेटाबेस का उपयोग करके एक नया डेटाबेस पुनर्स्थापित करता हूं। (.bak एक ही त्रुटि देता है)

  • मैंने नए डेटाबेस के नाम से पुराने डेटाबेस का नाम बदल दिया (वही यह चित्र)। इसने काम कर दिया।

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


2
अगली बार, कृपया बैंक का नाम मिटा दें
दान

1

यहां बताया गया है कि एक अतिरिक्त DB के रूप में एक बैकअप को एक अद्वितीय db नाम के साथ कैसे पुनर्स्थापित किया जाए।

SQL 2005 के लिए यह बहुत जल्दी काम करता है। मुझे यकीन है कि नए संस्करण समान काम करेंगे।

सबसे पहले, आपको अपना मूल db ऑफ़लाइन नहीं लेना होगा। लेकिन सुरक्षा के लिए, मुझे पसंद है। मेरे उदाहरण में, मैं अपने "बिलिंग" डेटाबेस का एक क्लोन माउंट करने जा रहा हूं और इसे "बिलिंगक्लोन" नाम दिया जाएगा।

1) बिलिंग डेटाबेस का एक अच्छा बैकअप बनाएं

2) सुरक्षा के लिए, मैंने मूल ऑफ़लाइन इस प्रकार लिया:

3) एक नई क्वेरी विंडो खोलें

**जरूरी! इस क्वेरी विंडो को तब तक खुला रखें जब तक आप पूरी न हो जाएं! आपको इस विंडो से db को पुनर्स्थापित करने की आवश्यकता है!

अब निम्नलिखित कोड दर्ज करें:

-- 1) free up all USER databases
USE master;
GO
-- 2) kick all other users out:
ALTER DATABASE billing SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- 3) prevent sessions from re-establishing connection:
ALTER DATABASE billing SET OFFLINE;

3) अगला, मैनेजमेंट स्टूडियो में, ऑब्जेक्ट एक्सप्लोरर में डेटाबेस पर क्लिक करें, "पुनर्स्थापना डेटाबेस" चुनें

4) "टू डेटाबेस" क्षेत्र में नया नाम दर्ज करें। IE बिलिंगक्लोन

5) पुनर्स्थापना के लिए स्रोत में, "डिवाइस से" पर क्लिक करें और ... नेविगेट करें बटन पर क्लिक करें

6) अपने बैकअप में जोड़ें और नेविगेट करें पर क्लिक करें

7) पुनर्स्थापित करने के लिए एक चेकमार्क लगाएं (पुनर्स्थापित करने के लिए बैकअप सेट का चयन करें)

8) अगले एलएच कोने में विकल्प पृष्ठ का चयन करें

9) अब RESTORE AS में डेटाबेस फ़ाइल नाम संपादित करें। इसे db और log दोनों के लिए करें। IE बिलिंगक्लो.एन.एम.एफ. और बिलिंगक्लोन_लॉग.एलडीएफ

10) अब OK पर क्लिक करें और टास्क पूरा होने का इंतजार करें।

11) अपने ऑब्जेक्ट एक्सप्लोरर में ताज़ा करें और आप अपने नए DB देखेंगे

१२) अब आप अपना बिलिंग db वापस ऑनलाइन डाल सकते हैं। उसी क्वेरी विंडो का उपयोग करें जिसका उपयोग आपने ऑफ़लाइन बिलिंग के लिए किया था। इस कमांड का उपयोग करें:

-- 1) free up all USER databases
USE master; GO
-- 2) restore access to all users:
ALTER DATABASE billing SET MULTI_USER WITH ROLLBACK IMMEDIATE;GO
-- 3) put the db back online:
ALTER DATABASE billing SET ONLINE;

किया हुआ!


1
  1. विभिन्न नाम के साथ "प्रतिलिपि डेटाबेस" विकल्प के साथ अपने डेटाबेस से एक प्रतिलिपि बनाएं
  2. बैकअप नया प्रतिलिपि डेटाबेस
  3. इसे पुनर्स्थापित करें!
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.