Проблемы с резервным копированием SQL Server? - PullRequest
8 голосов
/ 18 октября 2011

Хорошо, у меня возникла небольшая проблема - я выполнил некоторый код на своем SQL Server и не понял, что у меня не выбран бит WHERE.Конечно, когда я увидел "608 rows affected", а не "1 row affected", я немного испугался.

К счастью, у меня есть резервная копия, но по какой-то причине у меня возникает пара проблем.Теперь я отключил сервер, так что я знаю, что он никем не используется, но он дает мне следующую ошибку

"Восстановление не удалось для сервера 'myserver'.

System.Data.sqlclient.sqlerror: Не удалось получить эксклюзивный доступ, так как база данных используется. (Microsoft.SqlServer.Smo) "

Я увидел что-то, что я должен использовать

Alter Database Databases
SET SINGLE_USER WITH ROLLBACK IMMEDIATE

RESTORE DATABASE PRODUCT
FROM DISK = ''

но у меня есть три оговорки по поводу этого кода.Во-первых, я совершенно не уверен, как снова включить multi_user.Во-вторых, я не знаю, где программа хранит свои резервные копии.В-третьих, этот SQL немного выше моей головы - честно говоря, я относительно новичок в языке, поэтому не уверен, как это повлияет на ситуацию.

У кого-нибудь есть ответы на мои проблемы?

Ответы [ 5 ]

8 голосов
/ 18 октября 2011

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

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

РЕДАКТИРОВАТЬ: детали будут зависеть от вашей среды, новосстановление будет выглядеть примерно так:

restore database PRODUCT_OLD
from disk='C:\PRODUCT.bak'
with
    move 'PRODUCT_Data' to 'C:\PRODUCT_OLD_Data.MDF',
    move 'PRODUCT_Log' to 'C:\PRODUCT_OLD_Log.LDF'

И тогда оператор обновления также будет основан на вашей конкретной таблице ...

6 голосов
/ 07 марта 2013

прямо в клике по задачам базы данных -> takeoffline , когда он успешен, делает то же самое, но ставит его Выключить затем попытайтесь восстановить вашу базу данных

4 голосов
/ 18 октября 2011

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

alter database YourDb
set multi_user

Что касается того, где находится ваш файл .bak, вам нужно будет найти его до восстановления.

3 голосов
/ 18 октября 2011

Страшно.

Хорошо, кое-что проверить:

  1. Убедитесь, что вы единственный человек, подключенный к серверу.
  2. Убедитесь, что никакие другие приложения, веб-серверы, серверы приложений и т. Д. Не удерживают подключения к вашей БД.
  3. Убедитесь, что у вашего менеджера SQL нет открытых окон для таблиц или других объектов в вашей базе данных.

ТОГДА вы сможете выполнять восстановление без однопользовательских файлов.

1 голос
/ 13 февраля 2013

Перейдите к монитору активности и посмотрите, все ли пользователи вошли в систему, а затем завершите процесс для этого пользователя, используя соответствующую базу данных. Затем восстановите резервную копию

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