Как я могу клонировать базу данных SQL Server на том же сервере в SQL Server 2008 Express?

У меня есть система MS SQL Server 2008 Express, которая содержит базу данных, которую я хотел бы «скопировать и переименовать» (в целях тестирования), но я не знаю простого способа добиться этого.

Я заметил, что в версии SQL Server R2 есть мастер копирования базы данных, но, к сожалению, я не могу выполнить обновление.

Речь идет о базе данных о концерте. Я попытался восстановить резервную копию базы данных, которую хочу скопировать в новую базу данных, но безуспешно.


person Sergio    schedule 30.09.2010    source источник
comment
Восстановление резервной копии должно работать. Не могли бы вы подробнее рассказать о том, как это не удалось?   -  person Ed Harper    schedule 30.09.2010
comment
Я понял, что ошибся при восстановлении из резервной копии. Сначала я создал новую пустую БД и попытался восстановить оттуда резервную копию. Что мне нужно было сделать, так это вызвать диалоговое окно восстановления и ввести там имя новой базы данных вместо того, чтобы создавать ее сначала. Это красиво клонировало базу данных!   -  person Sergio    schedule 01.10.2010
comment
Когда я попытался восстановить базу данных под другим именем, он просто дал мне: Восстановление базы данных «Моя база данных (новая)» не удалось. ... Не удалось получить монопольный доступ, поскольку база данных уже используется. - базы данных под новым именем не существует, так как же ее использовать ?!   -  person Matt Arnold    schedule 28.04.2021


Ответы (14)


  1. Установите Microsoft SQL Management Studio, которую вы можете бесплатно скачать с веб-сайта Microsoft:

    Версия 2008

    Microsoft SQL Management Studio 2008 является частью SQL Server 2008 Express с расширенными службами

    Версия 2012

    Нажмите кнопку загрузки и отметьте ENU\x64\SQLManagementStudio_x64_ENU.exe

    Версия 2014 г.

    Нажмите кнопку загрузки и отметьте MgmtStudio 64BIT\SQLManagementStudio_x64_ENU.exe

  2. Откройте Microsoft SQL Management Studio.

  3. Сделайте резервную копию исходной базы данных в файл .BAK (db -> Task -> Backup).
  4. Создать пустую базу данных с новым именем (клон). Обратите внимание на комментарии ниже, так как это необязательно.
  5. Щелкните, чтобы клонировать базу данных и открыть диалоговое окно восстановления (см. Изображение) диалог восстановления
  6. Выберите Устройство и добавьте файл резервной копии с шага 3. добавить файл резервной копии
  7. Изменить место назначения на тестовую базу данных изменить место назначения
  8. Измените расположение файлов базы данных, оно должно отличаться от исходного. Вы можете ввести текст прямо в текстовое поле, просто добавив постфикс. (ПРИМЕЧАНИЕ. Порядок важен. Установите флажок, затем измените имена файлов.) изменить местоположение
  9. Отметьте WITH REPLACE и WITH KEEP_REPLICATION на replace
person Tomas Kubes    schedule 08.10.2014
comment
1. Не создавайте пустую базу данных и не восстанавливайте в ней файл .bak. 2. Используйте параметр «Восстановить базу данных», доступный, щелкнув правой кнопкой мыши ветку «Базы данных» в SQL Server Management Studio, и укажите имя базы данных, указав источник для восстановления. ref: stackoverflow.com/questions/10204480/ - person taynguyen; 15.09.2015
comment
У меня то же примечание, что и для принятого ответа - вам не хватает (для меня главного) момента, какое программное обеспечение вы используете для этого? - person David Ferenczy Rogožan; 06.10.2015
comment
Microsoft SQL Management Studio - бесплатно - person Tomas Kubes; 06.10.2015
comment
ПРИМЕЧАНИЕ. Порядок на шаге 8 (я исправил нумерацию уценки!) Важен. Если вы измените имена файлов, установите флажок, чтобы имена файлов были восстановлены. Тогда все будет казаться успешным, но в Management Studio ваша новая БД будет иметь (Восстановление ...) после него - пока вы не остановите SQL, не переименуете или не удалите файлы, не перезапустите SQL как в этом ответе, а затем повторите все снова. - person Nick Westgate; 29.03.2017
comment
Не работает - не удалось получить эксклюзивный доступ, так как база данных уже используется. - person Emanuele Ciriachi; 22.05.2017
comment
Это действительно работает. @EmanueleCiriachi, вам необходимо убедиться, что вы переименовали целевые файлы в папке Data, как описано выше. Что ж, у меня это сработало. Я также поставил галочку рядом с опцией «Закрыть существующий». - person Fandango68; 17.10.2017
comment
Идеально. Вы также можете выбрать «База данных» на шаге 6, чтобы сделать копию напрямую из базы данных. - person raiserle; 19.02.2018
comment
Иногда опция «Копировать базу данных» не работает из-за неправильных настроек разрешений файловой системы Windows. Так что это «Восстановление базы данных» - хороший обходной путь. - person Terran; 03.04.2018
comment
Если вы используете метод taynguyen «Восстановить базу данных», вам не нужно проверять перезапись существующей базы данных на шаге 9. - person pianoJames; 30.07.2018
comment
Мне также пришлось снять флажок «Сделать резервную копию хвостового журнала перед восстановлением». Это было проверено по умолчанию и привело к невозможности получить эксклюзивный доступ из-за ошибки использования базы данных. - person Turnip; 28.11.2018
comment
Моя исходная база данных застряла при восстановлении - person Divi G; 26.12.2018
comment
Мне не удалось обойти ошибку использования базы данных, о которой упоминал @EmanueleCiriachi. - person Grant Birchmeier; 23.02.2021
comment
Также убедитесь, что резервная копия Tail-Log не отмечена флажком с ее подопциями, чтобы избежать разрушения исходной базы данных! - person Abdellah GRIB; 12.05.2021

Щелкните правой кнопкой мыши базу данных для клонирования, щелкните Tasks, щелкните Copy Database.... Следуйте указаниям мастера, и все готово.

person DForck42    schedule 30.09.2010
comment
К сожалению, я думаю, что это доступно только в версии SQL Server R2 :-( - person Sergio; 01.10.2010
comment
ммм ... нет? он должен быть доступен в 2005+, потому что я смотрю на 2008 год, и я почти уверен, что он был доступен в 2005 году. Однако он может быть недоступен в экспресс-режиме. - person DForck42; 01.10.2010
comment
вот как это работает в экспрессе: stackoverflow.com/questions/4269450/ - person Th 00 mÄ s; 03.05.2013
comment
Это не работает, если в вашей базе данных есть зашифрованные объекты. - person cjbarth; 18.03.2014
comment
Я бы сказал, что главное, собственно, где это делать? То, что вы описали, довольно интуитивно понятно. Я пробовал именно это в некоторых инструментах (0xDBE, Visual Studio SQL Server Object Explorer) раньше, но не нашел там такой функции. - person David Ferenczy Rogožan; 06.10.2015
comment
Не работает - не удалось получить эксклюзивный доступ, так как база данных уже используется. - person Emanuele Ciriachi; 22.05.2017
comment
У меня это сработало, я использовал метод «Использовать отсоединение и присоединение» в мастере. - person ashilon; 19.06.2017
comment
@ThomasS решение (восстановить как; изменить .mdf и .ldf) есть stackoverflow.com/a/9991507/2375207 - person nicolallias; 13.10.2017
comment
Невозможно! Задачи - ›Нет пункта меню для копирования базы данных. - person raiserle; 19.02.2018
comment
@raiserle Вам нужно создать пустую базу данных с тем же именем на целевом сервере и щелкнуть ее правой кнопкой мыши. - person Alan B; 12.11.2018
comment
У меня НЕ работал, в итоге получилась исходная база данных в однопользовательском режиме и без новой базы данных (тот же результат с или без метода отсоединения и присоединения). Вместо этого я следил за stackoverflow.com/a/26265624/5526708, и это сработало! - person flo5783; 20.11.2018

Вы можете попытаться отсоединить базу данных, скопировать файлы с новыми именами в командной строке, а затем подключить обе БД.

В SQL:

USE master;
GO 
EXEC sp_detach_db
    @dbname = N'OriginalDB';
GO

В командной строке (я упростил пути к файлам для этого примера):

copy c:\OriginalDB.mdf c:\NewDB.mdf
copy c:\OriginalDB.ldf c:\NewDB.ldf

Снова в SQL:

USE master;
GO
CREATE DATABASE OriginalDB
    ON (FILENAME = 'C:\OriginalDB.mdf'),
       (FILENAME = 'C:\OriginalDB.ldf')
    FOR ATTACH;
GO
CREATE DATABASE NewDB
    ON (FILENAME = 'C:\NewDB.mdf'),
       (FILENAME = 'C:\NewDB.ldf')
    FOR ATTACH;
GO
person Joe Stefanelli    schedule 30.09.2010
comment
идеально! это уникальное решение, которое сработало для меня! большое спасибо! - person thiagoh; 04.06.2014
comment
select * from OriginalDB.sys.sysfiles, чтобы найти расположение файлов БД. - person JohnLBevan; 23.07.2014
comment
Да, мне тоже больше всего нравится это решение, так как оно не требует никаких специальных инструментов. Но мне не удалось создать NewDB, там написано Permission denied в .mdf файле. Мне это не нужно сейчас, мне просто нужна была резервная копия исходной БД, поэтому я могу перезаписать исходную БД позже, мне просто любопытно, почему я получаю такую ​​ошибку. - person David Ferenczy Rogožan; 06.10.2015
comment
я люблю тебя, это путь - person Shocklo; 26.10.2016
comment
Я не мог обойтись с другими ответами. Это было очень мило! Спасибо - person Ahmad Behzadi; 22.01.2017
comment
Вам не нужно отсоединять исходную базу данных, если вы можете остановить службу sql, скопировать файлы mdf и ldf, переименовать их для своей новой базы данных, снова запустить службу sql и просто запустить последнюю команду создания базы данных под мастером: USE master ; ПЕРЕЙДИТЕ СОЗДАТЬ БАЗУ ДАННЫХ NewDB ON (FILENAME = 'C: \ NewDB.mdf'), (FILENAME = 'C: \ NewDB.ldf') FOR ATTACH; ИДТИ - person danpop; 06.12.2017
comment
+1 за самый быстрый способ. В дополнение к отличному комментарию @JohnLBevan вы также можете использовать exec sp_helpdb @dbname='TEMPDB'; - person jean; 22.05.2019
comment
Отлично!!! Спасибо за это! Что, черт возьми, Копировать базу данных в разделе "Задачи" не работает. Ясно, что я не должен что-то делать правильно. Признал, что агент должен работать, и дело пошло немного дальше. Но это здорово. Наблюдение: вырезал USE master GO, и запустил без него. - person Carl Hine; 16.08.2019

Оказывается, я неправильно пытался восстановить данные из резервной копии.

Сначала я создал новую базу данных, а затем попытался восстановить резервную копию здесь. Что мне следовало сделать и что в итоге сработало, так это открыть диалоговое окно восстановления и ввести имя новой базы данных в поле назначения.

Короче говоря, восстановление из резервной копии сделало свое дело.

Спасибо за все отзывы и предложения, ребята

person Sergio    schedule 01.10.2010
comment
Когда я это сделаю, в диалоговом окне появится сообщение о том, что файлы находятся в том же месте, что и база данных, из которой я изначально сделал резервную копию. Поэтому у меня не хватает смелости восстанавливать, опасаясь, что файлы будут перезаписаны. - person Niels Brinch; 08.11.2012
comment
Нилс, по умолчанию файлы те же, что и на снимке, который вы сделали. Вы можете изменить их имена, чтобы создать новые файлы для новой названной базы данных. - person Colin Dabritz; 01.05.2014
comment
PS: для этого метода требуется служба агента SQL, убедитесь, что она запущена, прежде чем запускать операцию копирования базы данных. - person dvdmn; 21.08.2014
comment
Вы уже трижды помогли мне с этим ответом. Я все время забываю набирать его вместо того, чтобы создавать. + пиво - person Piotr Kula; 29.10.2014
comment
Это и переименование файлов .mdf и .log в окне «Файлы» сработало для меня. - person Wollan; 16.03.2016

Это сценарий, который я использую. Немного сложно, но это работает. Протестировано на SQL Server 2012.

DECLARE @backupPath nvarchar(400);
DECLARE @sourceDb nvarchar(50);
DECLARE @sourceDb_log nvarchar(50);
DECLARE @destDb nvarchar(50);
DECLARE @destMdf nvarchar(100);
DECLARE @destLdf nvarchar(100);
DECLARE @sqlServerDbFolder nvarchar(100);

SET @sourceDb = 'db1'
SET @sourceDb_log = @sourceDb + '_log'
SET @backupPath = 'E:\DB SQL\MSSQL11.MSSQLSERVER\MSSQL\Backup\' + @sourceDb + '.bak'    --ATTENTION: file must already exist and SQL Server must have access to it
SET @sqlServerDbFolder = 'E:\DB SQL\MSSQL11.MSSQLSERVER\MSSQL\DATA\'
SET @destDb = 'db2'
SET @destMdf = @sqlServerDbFolder + @destDb + '.mdf'
SET @destLdf = @sqlServerDbFolder + @destDb + '_log' + '.ldf'

BACKUP DATABASE @sourceDb TO DISK = @backupPath

RESTORE DATABASE @destDb FROM DISK = @backupPath
WITH REPLACE,
   MOVE @sourceDb     TO @destMdf,
   MOVE @sourceDb_log TO @destLdf
person bluish    schedule 14.03.2014
comment
В моей среде имена файлов не совпадали с именем базы данных (из-за другого восстановления), поэтому мне понадобились SET @sourceDb_log = (SELECT files.name FROM sys.databases dbs INNER JOIN sys.master_files files ON dbs.database_id=files.database_id WHERE dbs.name=@sourceDb AND files.type=1) и отдельная переменная для @sourceDb_data с аналогичным запросом (заменяющим на files.type=0). HTH! - person Dan Caseley; 14.09.2016
comment
Получение ошибки: Msg 137, Level 15, State 2, Line 25 Must declare the scalar variable "@destDb". Оказывается, я поместил оператор GO между объявлением переменной и ее использованием, мы не можем этого сделать, см. stackoverflow .com / a / 55347161/6184866 - person Arsinclair; 19.01.2021
comment
Действительно, очень используйте (r) полный сценарий ...;) Одно небольшое исправление синтаксиса: просто поместите '@' в переменную в строке 11: SET @backupPath = 'E:\tmp\' + @sourceDb + '.bak' --ATTENTION: file must already exist and SQL Server must have access to it. Кроме того, вы можете установить папку резервного копирования на: `E: \ DB SQL \ MSSQL11.MSSQLSERVER \ MSSQL \ Backup \ `, чтобы избежать установки безопасных прав доступа. - person Andreas Venieris; 02.04.2021

Ни одно из упомянутых здесь решений не помогло мне - я использую SQL Server Management Studio 2014.

Вместо этого мне пришлось снять флажок «Сделать резервную копию журнала перед восстановлением» на экране «Параметры»: в моей версии он установлен по умолчанию и не позволяет завершить операцию восстановления. После снятия флажка операция восстановления прошла без проблем.

введите описание изображения здесь

person Emanuele Ciriachi    schedule 23.05.2017
comment
Этот ответ спас мне день. - person Dilhan Jayathilake; 05.09.2017
comment
Спас мой день тоже :) - person ashilon; 07.12.2017
comment
Если этого не сделать с SQL Server 2017, исходная база данных осталась в режиме восстановления .... Ваше решение помогло - спасибо! - person mu88; 02.12.2019

При использовании MS SQL Server 2012 необходимо выполнить 3 основных шага:

  1. Сначала сгенерируйте .sql файл, содержащий только структуру исходной БД.

    • right click on the source DB and then Tasks then Generate Scripts
    • следуйте указаниям мастера и сохраните .sql файл локально
  2. Во-вторых, замените исходную БД на целевую в .sql файле.

    • Right click on the destination file, select New Query and Ctrl-H or (Edit - Find and replace - Quick replace)
  3. Наконец, заполните данными

    • Right click on the destination DB, then select Tasks and Import Data
    • В раскрывающемся списке источника данных установлено значение «поставщик данных .NET Framework для SQL-сервера» + установите текстовое поле строки подключения в разделе ДАННЫЕ, например: Data Source=Mehdi\SQLEXPRESS;Initial Catalog=db_test;User ID=sa;Password=sqlrpwrd15
    • сделайте то же самое с местом назначения
    • отметьте таблицу, которую вы хотите передать, или отметьте поле рядом с "источник: ...", чтобы отметить их все.

Вы сделали.

person Mehdi Benkirane    schedule 09.01.2015
comment
Кстати, я предполагаю, что Import Data может создавать таблицы, если их нет в таблицах назначения .. простое решение +1 - person Khurram Ishaque; 06.05.2015

Если база данных не очень большая, вы можете посмотреть команды «База данных сценариев» в SQL Server Management Studio Express, которые находятся в контекстном меню за пределами самого элемента базы данных в проводнике.

Вы можете выбрать, что все сценарии; вам, конечно, нужны объекты и данные. Затем вы сохраните весь сценарий в один файл. Затем вы можете использовать этот файл для воссоздания базы данных; просто убедитесь, что команда USE вверху установлена ​​для правильной базы данных.

person Andrew Barber    schedule 30.09.2010
comment
Спасибо, однако база данных довольно большая (около концерта), поэтому я думаю, что могут случиться плохие вещи :-) - person Sergio; 30.09.2010
comment
Верно; Тогда это не лучший способ. Вместо этого вы можете использовать базу данных сценариев, чтобы просто создать структуру в новой базе данных, а затем импортировать / экспортировать для перемещения данных. Просто убедитесь, что вы сначала создали базу данных сценариев; Импорт / экспорт создаст таблицы, если они не существуют, и вам может не понравиться, как это происходит. - person Andrew Barber; 30.09.2010

В SQL Server 2008 R2 создайте резервную копию базы данных в виде файла в папке. Затем выберите вариант восстановления, который появляется в папке «База данных». В мастере введите новое имя, которое вы хотите в целевой базе данных. И выберите «Восстановить из файла» и используйте только что созданный файл. Я просто сделал это, и это было очень быстро (моя БД была маленькой, но все же) Пабло.

person pabloelustondo    schedule 14.11.2012

Решение, основанное на этом комментарии: https://stackoverflow.com/a/22409447/2399045. Просто установите настройки: имя БД, временная папка, папка с файлами БД. И после запуска у вас будет копия БД с именем в формате «sourceDBName_yyyy-mm-dd».

-- Settings --
-- New DB name will have name = sourceDB_yyyy-mm-dd
declare @sourceDbName nvarchar(50) = 'MyDbName';
declare @tmpFolder nvarchar(50) = 'C:\Temp\'
declare @sqlServerDbFolder nvarchar(100) = 'C:\Databases\'

--  Execution --
declare @sourceDbFile nvarchar(50);
declare @sourceDbFileLog nvarchar(50);
declare @destinationDbName nvarchar(50) = @sourceDbName + '_' + (select convert(varchar(10),getdate(), 121))
declare @backupPath nvarchar(400) = @tmpFolder + @destinationDbName + '.bak'
declare @destMdf nvarchar(100) = @sqlServerDbFolder + @destinationDbName + '.mdf'
declare @destLdf nvarchar(100) = @sqlServerDbFolder + @destinationDbName + '_log' + '.ldf'

SET @sourceDbFile = (SELECT top 1 files.name 
                    FROM sys.databases dbs 
                    INNER JOIN sys.master_files files 
                        ON dbs.database_id = files.database_id 
                    WHERE dbs.name = @sourceDbName
                        AND files.[type] = 0)

SET @sourceDbFileLog = (SELECT top 1 files.name 
                    FROM sys.databases dbs 
                    INNER JOIN sys.master_files files 
                        ON dbs.database_id = files.database_id 
                    WHERE dbs.name = @sourceDbName
                        AND files.[type] = 1)

BACKUP DATABASE @sourceDbName TO DISK = @backupPath

RESTORE DATABASE @destinationDbName FROM DISK = @backupPath
WITH REPLACE,
   MOVE @sourceDbFile     TO @destMdf,
   MOVE @sourceDbFileLog  TO @destLdf
person Pavel Samoylenko    schedule 15.02.2018
comment
Павел, спасибо за такой ответ. Если вы не возражаете, я бы добавил динамический SQL, чтобы он мог переименовать логическое имя файла: DECLARE @DynamicSQL [nvarchar](2000); SET @DynamicSQL = CONCAT('ALTER DATABASE [', @DestinationDBName, '] MODIFY FILE (NAME = ''', @SourceDBName, ''', NEWNAME = ''', @DestinationDBName, ''');'); SET @DynamicSQL = CONCAT(@DynamicSQL, 'ALTER DATABASE [', @DestinationDBName, '] MODIFY FILE (NAME = ''', CONCAT(@SourceDBName, '_log'), ''', NEWNAME = ''', CONCAT(@DestinationDBName, '_log'), ''');'); EXECUTE (@DynamicSQL); - person MaGnumX; 15.12.2020

Скрипт на основе ответа Джо (отсоединить, скопировать файлы, прикрепить оба).

  1. Запустите Managment Studio от имени учетной записи администратора.

Это не обязательно, но, возможно, при выполнении произошла ошибка отказа в доступе.

  1. Настроить sql-сервер для выполнения xp_cmdshel
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
  1. Запустите сценарий, но перед этим введите свои имена баз данных в переменные @dbName и @copyDBName.
USE master;
GO 

DECLARE @dbName NVARCHAR(255) = 'Products'
DECLARE @copyDBName NVARCHAR(255) = 'Products_branch'

-- get DB files
CREATE TABLE ##DBFileNames([FileName] NVARCHAR(255))
EXEC('
    INSERT INTO ##DBFileNames([FileName])
    SELECT [filename] FROM ' + @dbName + '.sys.sysfiles')

-- drop connections
EXEC('ALTER DATABASE ' + @dbName + ' SET OFFLINE WITH ROLLBACK IMMEDIATE')

EXEC('ALTER DATABASE ' + @dbName + ' SET SINGLE_USER')

-- detach
EXEC('EXEC sp_detach_db @dbname = ''' + @dbName + '''')

-- copy files
DECLARE @filename NVARCHAR(255), @path NVARCHAR(255), @ext NVARCHAR(255), @copyFileName NVARCHAR(255), @command NVARCHAR(MAX) = ''
DECLARE 
    @oldAttachCommand NVARCHAR(MAX) = 
        'CREATE DATABASE ' + @dbName + ' ON ', 
    @newAttachCommand NVARCHAR(MAX) = 
        'CREATE DATABASE ' + @copyDBName + ' ON '

DECLARE curs CURSOR FOR 
SELECT [filename] FROM ##DBFileNames
OPEN curs  
FETCH NEXT FROM curs INTO @filename
WHILE @@FETCH_STATUS = 0  
BEGIN
    SET @path = REVERSE(RIGHT(REVERSE(@filename),(LEN(@filename)-CHARINDEX('\', REVERSE(@filename),1))+1))
    SET @ext = RIGHT(@filename,4)
    SET @copyFileName = @path + @copyDBName + @ext

    SET @command = 'EXEC master..xp_cmdshell ''COPY "' + @filename + '" "' + @copyFileName + '"'''
    PRINT @command
    EXEC(@command);

    SET @oldAttachCommand = @oldAttachCommand + '(FILENAME = "' + @filename + '"),'
    SET @newAttachCommand = @newAttachCommand + '(FILENAME = "' + @copyFileName + '"),'

    FETCH NEXT FROM curs INTO @filename
END
CLOSE curs 
DEALLOCATE curs

-- attach
SET @oldAttachCommand = LEFT(@oldAttachCommand, LEN(@oldAttachCommand) - 1) + ' FOR ATTACH'
SET @newAttachCommand = LEFT(@newAttachCommand, LEN(@newAttachCommand) - 1) + ' FOR ATTACH'

-- attach old db
PRINT @oldAttachCommand
EXEC(@oldAttachCommand)

-- attach copy db
PRINT @newAttachCommand
EXEC(@newAttachCommand)

DROP TABLE ##DBFileNames
person Evgeny Ivanov    schedule 15.02.2018

Вы можете просто создать новую базу данных, а затем перейти к задачам, импортировать данные и импортировать все данные из базы данных, которую вы хотите скопировать, в только что созданную базу данных.

person Techie Philosopher    schedule 04.07.2018

Другой способ сделать это с помощью мастера импорта / экспорта: сначала создайте пустую базу данных, затем выберите источник, который является вашим сервером с исходной базой данных, а затем в месте назначения выберите тот же сервер с целевая база данных (используя пустую базу данных, которую вы создали вначале), затем нажмите «Готово»

Он создаст все таблицы и перенесет все данные в новую базу данных,

person Mohanad Kaleia    schedule 10.10.2016

Из SSMS:

1 - Резервное копирование исходной базы данных в файл .BAK (your_source_db - ›Задача -› Резервное копирование).

2 - Щелкните правой кнопкой мыши базы данных и «Восстановить базу данных».

3 - Устройство ›... (кнопка)› Добавить ›выберите your_source_db.bak

4 - На вкладке «Общие» в разделе «Назначение» переименуйте в «База данных» your_source_db в new_name_db.

5 - На вкладке «Файлы» отметьте «Переместить все файлы в папку»,

  • Переименуйте в столбце «Восстановить как» две строки, чтобы сохранить согласованность с new_name_db (.mdf, _log.ldf)

6 - На вкладке «Параметры» в разделе «Параметры восстановления» отметьте два первых параметра («Перезаписать ...», «Сохранить ...») и для «Состояние восстановления»: «ВОССТАНОВИТЬ С ВОССТАНОВЛЕНИЕМ».

  • Также убедитесь, что в разделе «Резервное копирование хвостового журнала» не отмечены флажки, чтобы избежать сохранения исходной базы данных в «состоянии восстановления»!
person Abdellah GRIB    schedule 12.05.2021