Импортировать файл .bak в базу данных на сервере SQL

У меня есть файл с расширением .bak.

Как я могу импортировать эту дату в базу данных на SQL Server?


person Community    schedule 08.10.2009    source источник
comment
Я предполагаю, что вы используете MSSQL, вот ветка, объясняющая несколько способов восстановления.   -  person Andrew Keith    schedule 08.10.2009
comment
Вы можете создать пустую базу данных и восстановить данные в пустую базу данных, используя свой .bak   -  person Michel Ayres    schedule 24.07.2012
comment
Самый простой способ - это третий ответ, щелчок правой кнопкой мыши по базам данных, импорт, устройство, выбор файла .bak, завершение.   -  person Mafii    schedule 18.08.2016
comment
Может ли кто-нибудь расширить ответ на удобное для автоматизации решение? Просматривать пользовательский интерфейс и делать несколько кликов не очень эффективно.   -  person L. Holanda    schedule 12.09.2017


Ответы (11)


В SQL Server Management Studio

  1. Щелкните правой кнопкой мыши Базы данных на левой панели (обозреватель объектов).
  2. Нажмите Восстановить базу данных ...
  3. Выберите Устройство, нажмите ... и добавьте файл .bak.
  4. Нажмите ОК, затем снова ОК.

Выполнено.

person Marcelo Mason    schedule 20.05.2015
comment
Это работает как шарм. Это отличные упрощенные инструкции, и по сути они те же инструкции из официальной ссылки Microsoft, отмеченной в наиболее проголосовавшем ответе здесь. - person Leonardo Lopez; 04.06.2015
comment
Если это не удается, вам, вероятно, нужно стереть существующую базу данных. - person DigitalDesignDj; 17.11.2015
comment
У меня это не работает. Я указываю на правильную папку, а она даже не видит файлы. Я вставляю точное имя файла в диалоговое окно, и в нем говорится, что файл не существует. Кроме того, в диалоговом окне отображается диск, которого нет на моем сервере. Запоминает ли база данных местоположение последней резервной копии и будет ли принимать восстановление только с этого момента? Мне очень странно, что я не могу выбрать файл резервной копии для восстановления. - person James; 21.11.2016
comment
Мой файл .BAK находился в каталоге загрузок, который существовал под моей учетной записью. Мне пришлось переместить файл .BAK в корень диска C :, чтобы этот инструмент его увидел и позволил мне восстановить из него. Файлы под моим пользователем просто по какой-то причине не просматривались. - person jeremysawesome; 07.02.2017
comment
Это не работает. Я щелкаю правой кнопкой мыши по Базам данных, но нет Восстановить базу данных .... - person user34660; 29.04.2017
comment
У меня это не работает: я получаю сообщение об ошибке. Резервный набор содержит резервную копию базы данных, отличной от существующей базы данных «XYZ». Что ж, очевидно. Я только что создал (все еще полностью пустую) базу данных XYZ (замещающее имя) для получения резервных данных. - person O. R. Mapper; 24.10.2018
comment
ОЧЕНЬ ВАЖНО !! убедитесь, что у вас есть монопольный доступ к базе данных, прежде чем пытаться восстановить, иначе это, скорее всего, не удастся. В зависимости от вашей ситуации вам, возможно, придется делать разные вещи, если это просто ваша локальная база данных, вы можете отметить «закрыть существующие подключения к целевой базе данных» на вкладке параметров в диалоговом окне восстановления. - person matao; 26.10.2018
comment
Прекрасно работает на SQL Server CTP 2019 - person Mohammad Heydari; 17.04.2019
comment
Должно ли восстановление из бака длиться часами? Размер db составляет около 300 гигабайт. - person DeadlyChambers; 28.01.2020

Файлы .bak - это резервные копии базы данных. Вы можете восстановить резервную копию следующим способом:

Как: восстановить резервную копию базы данных (SQL Server Management Studio) < / а>

person Jon Schoning    schedule 08.10.2009

Это покажет вам список файлов базы данных, содержащихся в DB.bak:

RESTORE FILELISTONLY 
FROM DISK = 'D:\3.0 Databases\DB.bak' 

Вам потребуются логические имена из этого списка для операции MOVE на втором шаге:

RESTORE DATABASE YourDB
FROM DISK = 'D:\3.0 Databases\DB.bak' 

и вам нужно переместить соответствующие файлы mdf, ndf и ldf, используя

With Move 'primarydatafilename' To 'D:\DB\data.mdf', 
Move 'secondarydatafile' To 'D:\DB\data1.ndf', 
Move 'logfilename' To 'D:\DB\log.ldf'
person RameshVel    schedule 08.10.2009
comment
Это было очень полезно для меня, так как я хотел восстановить файл .bak в контейнере sql Docker с помощью узла macOS с помощью Azure Data Studio. Все, что мне нужно было сделать, это скопировать .bak в контейнер, скорректировать путь и изменить на /, и я смог успешно восстановить. - person andrewb; 05.06.2019
comment
Рад, что помог @andrewb :) - person RameshVel; 06.06.2019

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

Отказ от ответственности: я работаю инженером по поддержке продуктов в ApexSQL

person Ivan Stankovic    schedule 25.07.2014

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

Затем введите имя базы данных, выберите путь к файлу .bak в качестве источника, установите флажок восстановления и нажмите ОК. Если файл .bak действителен, он будет работать.

(Названия параметров восстановления SQL Server не интуитивно понятны для решения очень простой задачи.)

person James Lawruk    schedule 19.02.2014
comment
Это хороший совет, я сделал это, и он сообщил, что восстановление прошло успешно. Но небольшая проблема все еще остается ... база данных не указана в обозревателе объектов. Я пытаюсь прикрепить, и у него даже есть правильный файл .mdf (я предполагаю, что это продукт восстановления). Если я попытаюсь подключиться, появится сообщение об ошибке, что оно уже используется. Есть ли у вас какие-нибудь советы для этого этапа? - person AlanSE; 26.02.2015
comment
Обязательно выполните обновление в конце, чтобы увидеть новую базу данных. Это может быть самым быстрым решением для начала работы. - person demongolem; 08.01.2016
comment
Это вариант, который сработал для меня, когда я хотел импортировать ту же базу данных .bak в качестве новой базы данных локально. - person Gurnzbot; 14.06.2019

  1. Подключитесь к серверу, на котором вы хотите хранить свою БД
  2. Щелкните правой кнопкой мыши базу данных
  3. Нажмите Восстановить
  4. Установите переключатель Устройство под разделом источников.
  5. Щелкните Добавить.
  6. Перейдите к пути, по которому хранится ваш файл .bak, выберите его и нажмите ОК.
  7. Введите место назначения вашей БД
  8. Введите имя, под которым вы хотите сохранить свою БД
  9. Нажмите ОК.

Выполнено

person Yash Saraiya    schedule 30.12.2015

В Microsoft SQL Server Management Studio 2019:

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

В окне восстановления базы данных:

  1. Выберите устройство

  2. Выберите Добавить и выберите целевой файл

  3. ОК для подтверждения

  4. ОК для подтверждения восстановления

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

person Weky    schedule 18.03.2020

  1. Скопируйте файл резервной копии .bak в следующую папку вашего компьютера: C: \ Program Files \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS \ MSSQL \ DATA
  2. Подключитесь к серверу, на котором вы хотите хранить свою БД
  3. Щелкните правой кнопкой мыши базу данных
  4. Нажмите Восстановить
  5. Установите переключатель "Устройство" в разделе "Источник".
  6. Щелкните Добавить.
  7. Перейдите к пути, по которому хранится ваш файл .bak, выберите его и нажмите ОК.
  8. Введите место назначения вашей БД
  9. Введите имя, под которым вы хотите сохранить свою БД
  10. Нажмите ОК.

В приведенных выше решениях не указано, где хранить файл резервной копии (.bak). Это должно помочь. У меня это сработало.

person Madhumita    schedule 27.01.2017

Просто используйте

sp_restoredb "Имя вашей базы данных", "Местоположение, в котором вы хотите восстановить"

Пример: sp_restoredb 'omDB', 'D: \ abc.bak'

person Omprakash tomar    schedule 17.03.2017
comment
в чем разница между этим и RESTORE DATABASE, как в msdn. microsoft.com/en-us/library/ms178099(v=sql.105).aspx? - person unhammer; 21.06.2017
comment
Восстановление базы данных выполнять операцию восстановления только в том случае, если структура вашей БД такая же, как у файла резервной копии, но sp_restoredb выполнять восстановление даже вашей базы данных, имеющей другую структуру или полностью пустой (новой). - person Omprakash tomar; 10.11.2017

Хотя гораздо проще восстановить базу данных с помощью SSMS, как указано во многих ответах. Вы также можете восстановить базу данных, используя .bak с запросом SQL-сервера, например

RESTORE DATABASE AdventureWorks2012 FROM DISK = 'D:\AdventureWorks2012.BAK'
GO

В приведенном выше запросе вам нужно помнить о расположении файла .mdf / .ldf. Вы можете получить ошибку

System.Data.SqlClient.SqlError: поиск в каталоге файла C: \ PROGRAM FILES \ MICROSOFT SQL SERVER \ MSSQL.1 \ MSSQL \ DATA \ AdventureWorks.MDF завершился ошибкой операционной системы 3 (система не может найти указанный путь. ). (Microsoft.SqlServer.SmoExtended)

Итак, вам нужно запустить Query, как показано ниже

RESTORE FILELISTONLY 
FROM DISK = 'D:\AdventureWorks2012.BAK'

Как только вы запустите выше Query, вы получите местоположение mdf / ldf, используйте его. Восстановите базу данных с помощью запроса.

USE MASTER
GO
RESTORE DATABASE DBASE 
FROM DISK = 'D:\AdventureWorks2012.BAK'
WITH 
MOVE 'DBASE' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE.MDF',
MOVE 'DBASE_LOG' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE_1.LDF', 
NOUNLOAD,  REPLACE,  NOUNLOAD,  STATS = 5
GO

Источник: Восстановить базу данных из файла .bak на SQL сервере (со скриптами и без них)

person Vikas Lalwani    schedule 22.10.2020

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

Установить:

npm install -g sql-bak-restore

Использование:

sql-bak-restore <bakPath> <dbName> <oldDbName> <owner>

Аргументы:

  • bakpath, относительный или абсолютный путь к файлу
  • dbName, в какую базу данных восстанавливать (!! база данных с таким именем будет удалена, если существует !!)
  • oldDbName, имя базы данных (если вы не знаете, укажите что-то и запустите, после запуска вы увидите доступные базы данных).
  • владелец, имя пользователя и предоставить ему права db_owner (пароль "1")

!! Утилита командной строки sqlcmd должна быть в переменной PATH.

https://github.com/vladimirbuskin/sql-bak-restore/

person Vladimir Buskin    schedule 07.06.2016