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


231

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

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


Я предполагаю, что вы используете MSSQL, вот ветка, объясняющая несколько способов восстановления.
Эндрю Кит

Вы можете создать пустую базу данных и восстановить данные в пустой базе данных, используя ваш .bak
Мишель Айрес

Самый простой способ - третий ответ, щелчок правой кнопкой мыши по базам данных, импорт, устройство, выбор файла .bak, готово.
Мафия

Может ли кто-нибудь расширить ответ для решения, дружественного к автоматизации? Проходить через пользовательский интерфейс и делать несколько кликов не очень эффективно.
Л. Холанда

Ответы:


251

В SQL Server Management Studio

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

Готово.


4
Это работает как шарм. Это отличные упрощенные инструкции, и в сущности они являются теми же инструкциями из официальной ссылки Microsoft, которая указана в наиболее часто задаваемом ответе.
Леонардо Лопес

3
Если это не удается, вам, вероятно, нужно стереть существующую базу данных.
DigitalDesignDj

3
Это не работает для меня. Я указываю на правильную папку, и она даже не видит файлы. Я вставляю точное имя файла в диалоге, и он говорит, что файл не существует. Кроме того, диалог видит диск, который не существует на моем сервере. Запоминает ли база данных местоположение последней резервной копии и будет ли она восстанавливаться только с этой точки? Мне очень странно, что я не могу выбрать файл резервной копии для восстановления.
Джеймс

13
Мой файл .BAK находился в каталоге «Downloads», который существовал под моей учетной записью. Мне пришлось переместить файл .BAK в корень C: для того, чтобы этот инструмент мог его увидеть и позволить мне восстановить его. Файлы под моим пользователем просто не были видны по какой-то причине.
jeremysawesome

6
Это не работает. Я щелкаю правой кнопкой мыши «Базы данных», но «Восстановить базу данных…» нет.
user34660

53

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

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


8
Это не работает. В статье говорится: «... 2) Разверните базы данных. В зависимости от базы данных выберите базу данных пользователей или разверните« Системные базы данных », а затем выберите базу данных системы. 3) Щелкните правой кнопкой мыши базу данных , выберите« Задачи », а затем нажмите Восстановить." НЕ! Вы не можете щелкнуть правой кнопкой мыши по базе данных, которая не существует! В конце концов, вы пытаетесь восстановить или импортировать данную базу данных. Как вы можете щелкнуть правой кнопкой мыши базу данных, которая не загружена? Причудливый MSDN и ухудшение функциональности восстановления в SSMS заявлено, но не работает. Зачем? К счастью, команды SQL, которые здесь дают другие, работают.
Николас Петерсен

14
Здесь есть другая статья для восстановления новой базы данных: msdn.microsoft.com/en-us/library/ms186390(v=sql.90).aspx
Джон Шонинг,

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

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'

1
Это было очень полезно для меня, так как я хотел восстановить файл .bak в контейнер sql Docker с хостом macOS с помощью Azure Data Studio. Все, что мне нужно было сделать, это скопировать .bak в контейнер, настроить путь и изменить на /, и я смог успешно восстановиться.
Andrewb

Рад, что это помогло @andrewb :)
RameshVel

30

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

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


18

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

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

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


Это хороший совет, я сделал это и сообщил, что восстановление прошло успешно. Но небольшая проблема все еще остается ... база данных не указана в обозревателе объектов. Я пытаюсь "прикрепить", и он даже имеет правильный файл .mdf (я полагаю, продукт восстановления). Если я попытаюсь присоединиться, он выдаст ошибку, которая уже используется. Есть ли у вас какие-либо советы для этого этапа?
AlanSE

Не забудьте обновить в конце, чтобы увидеть новую базу данных. Это может быть самым быстрым решением для начала работы.
демонголем

Это вариант, который сработал для меня, когда я хотел импортировать ту же базу данных .bak как новую базу данных локально
Gurnzbot

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

Готово


4

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

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

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


В чем разница между этим и RESTORE DATABASEкак в msdn.microsoft.com/en-us/library/ms178099(v=sql.105).aspx ?
unhammer

1
Восстановление базы данных выполняет операцию восстановления, только если структура вашей БД совпадает с файлом резервной копии, но sp_restoredbвыполняет восстановление даже вашей базы данных, имеющей другую структуру или полностью пустой (новой).
Омракаш Томар

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

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


2

В Microsoft SQL Server Management Studio 2019:

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

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

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

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

  3. ОК, чтобы подтвердить

  4. ОК, чтобы подтвердить восстановление

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


1

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

Установка:

npm install -g sql-bak-restore

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

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

Аргументы:

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.