Восстановление базы данных .bak с локального компьютера на сервер - PullRequest
2 голосов
/ 13 мая 2011

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

drop database  DuxburyCaravans    
go
RESTORE DATABASE stonestore
  FROM DISK = 'C:\Program Files\Microsoft SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\DuxburyCaravans.BAK'
  WITH MOVE 'DuxburyCaravans' TO 'D:\Microsoft SQL Server\MSSQL.1\MSSQL\Data\DuxburyCaravans.mdf',
  MOVE 'DuxburyCaravans_log' TO 'D:\Microsoft SQL Server\MSSQL.1\MSSQL\Data\DuxburyCaravans.LDF'

но с ошибками:

Сообщение 3702, Уровень 16, Состояние 3, Строка 3
Невозможно удалить базу данных "DuxburyCaravans" потому что он в настоящее время используется.
Сообщение 3201, уровень 16, состояние 2, строка 1
Не удается открыть устройство резервного копирования 'C: \ Program Файлы \ Microsoft SQL Сервер \ MSSQL10_50.MSSQLSERVER \ MSSQL \ Backup \ DuxburyCaravans.BAK. Ошибка операционной системы 3 (не удалось получить текст для этой ошибки. Причина: 15105).
Сообщение 3013, уровень 16, состояние 1, строка 1
Восстановление базы данных заканчивается ненормально.

Ответы [ 3 ]

6 голосов
/ 13 мая 2011

RESTORE работает только на реальном сервере - это ваш собственный компьютер или отдельная машина ??

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

2 голосов
/ 13 мая 2011

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

ALTER DATABASE [DuxburyCaravans] SET SINGLE_USER With ROLLBACK IMMEDIATE
RESTORE DATABASE [DuxburyCaravans] FROM DISK = N'C:\Path\To\Backup.bak'
ALTER DATABASE [DuxburyCaravans] SET MULTI_USER
1 голос
/ 13 мая 2011

Сначала необходимо:

  • Закрыть все подключения к базе данных, которую вы пытаетесь восстановить, или
  • С помощью MS SQL Management Studio подключиться к удаленному серверу.Щелкните правой кнопкой мыши узел корневого сервера и выберите Монитор активности .Разверните Процессы , щелкните правой кнопкой мыши по каждому процессу, использующему вашу базу данных, и выберите Kill .Конечно, делайте это осторожно.

Теперь, когда все соединения закрыты, вы можете восстановить базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...