Mssql restore database: RESTORE (Transact-SQL) — SQL Server
Резервное копирование
— SQL Server: база данных застряла в состоянии «Восстановление»
По умолчанию каждая ВОССТАНОВЛЕНИЕ БАЗЫ ДАННЫХ
поставляется с настройкой ВОССТАНОВЛЕНИЕ
.
Параметры «NORECOVERY» в основном сообщают SQL Server, что база данных ожидает дополнительных файлов восстановления (это может быть файл DIFF и файл LOG и, если возможно, может включать файл резервной копии хвостового журнала).
Параметры «ВОССТАНОВЛЕНИЕ» завершают все транзакции и позволяют базе данных быть готовыми к выполнению транзакций.
Итак:
- , если ваша база данных настроена с моделью восстановления SIMPLE , вы можете выполнить восстановление FULL только с параметром
NORECOVERY
, когда у вас есть резервная копия DIFF . Резервное копирование LOG не допускается в базе данных модели восстановления SIMPLE . - В противном случае, если для вашей базы данных настроена модель восстановления FULL или BULK-LOGGED , вы можете выполнить восстановление FULL , а затем
NORECOVERY
, затем выполните DIFF , затемNORECOVERY
и, наконец, выполните восстановление LOG с опциейRECOVERY
.
Помните, ПОСЛЕДНИЙ ЗАПРОС ВОССТАНОВЛЕНИЯ ДОЛЖЕН ИМЕТЬ ВОССТАНОВЛЕНИЕ
ОПЦИЯ . Это может быть явный способ или нет. В термах T-SQL ситуация:
1.
USE [мастер] ИДТИ ВОССТАНОВИТЬ БАЗУ ДАННЫХ Имя_базы_данных FROM DISK = N'\\path_of_backup_file.bak WITH FILE = 1, [REPLACE],NOUNLOAD, ВОССТАНОВЛЕНИЕ -- Эту опцию можно опустить. ИДТИ
Параметр WITH REPLACE следует использовать с осторожностью, поскольку это может привести к потере данных.
ИДТИ
ВОССТАНОВИТЬ БАЗУ ДАННЫХ Имя_базы_данных
FROM DISK = N’\\path_of_backup_file. bak’ WITH FILE = 1,
БЕЗ ЗАГРУЗКИ, БЕЗ ВОССТАНОВЛЕНИЯ
ИДТИ
ВОССТАНОВИТЬ БАЗУ ДАННЫХ Имя_базы_данных
FROM DISK =N’\\path_of_**diff**backup_file.bak’ WITH FILE = 1,
НЕЗАГРУЗКА, ВОССТАНОВЛЕНИЕ
ИДТИ
2. ИСПОЛЬЗОВАТЬ [мастер]
ИДТИ
— Выполните резервное копирование Tail-Log, если это возможно.
ЖУРНАЛ РЕЗЕРВНОГО КОПИРОВАНИЯ Имя_базы_данных
ИДТИ
— Восстановление ПОЛНОЙ резервной копии
ВОССТАНОВИТЬ БАЗУ ДАННЫХ Имя_базы_данных
FROM DISK = N’\\path_of_backup_file.bak’ WITH FILE = 1,
БЕЗ ЗАГРУЗКИ, БЕЗ ВОССТАНОВЛЕНИЯ
ИДТИ
— Восстановить последнюю резервную копию DIFF
ВОССТАНОВИТЬ БАЗУ ДАННЫХ Имя_базы_данных
FROM DISK = N’\\path_of_DIFF_backup_file.bak’ WITH FILE = 1,
НЕВОССТАНОВЛЕНИЕ, НЕРАЗГРУЗКА
ИДТИ
— Восстановить резервную копию журнала
ЖУРНАЛ ВОССТАНОВЛЕНИЯ имя_базы_данных
FROM DISK = N’path_of_LOG_backup_file.trn’ WITH FILE = 2,
ВОССТАНОВЛЕНИЕ, НЕЗАГРУЗКА
ИДТИ
Конечно, вы можете выполнить восстановление с параметром STATS = 10 , который указывает SQL Server сообщать о каждом завершении на 10%.
При желании вы можете наблюдать за процессом или восстановить его в режиме реального времени.
Как следует:
ИСПОЛЬЗОВАНИЕ [мастер] ИДТИ ВЫБЕРИТЕ session_id КАК SPID, команда, a.text КАК запрос, время начала, процент_завершения, датадобавка (секунда, расчетное_время_завершения/1000, getdate()) как предполагаемое_время_завершения ОТ sys.dm_exec_requests r ПЕРЕКРЕСТНОЕ ПРИМЕНЕНИЕ sys.dm_exec_sql_text(r.sql_handle) a ГДЕ r.command в ('РЕЗЕРВНАЯ БАЗА ДАННЫХ', 'ВОССТАНОВЛЕНИЕ БАЗЫ ДАННЫХ') ИДТИ
Надеюсь на помощь.
сервер sql — ошибка mssql ‘5 (Доступ запрещен.)’ при восстановлении базы данных
спросил
Изменено
9 месяцев назад
Просмотрено
143 тыс. раз
Я хочу восстановить базу данных из файла (Задачи → Восстановить → База данных; после выбора с устройства и выбора файла) через SQL Server Management Studio.
После этого я получаю эту ошибку:
Операционная система вернула ошибку «5 (Доступ запрещен.)» при попытке
‘RestoreContainer::ValidateTargetForCreation’ в ‘E:\Program Files\Microsoft SQL
Сервер\MSSQL10.MSSQLSERVER\MSSQL\DATA\XXXXXX.mdf».
Сообщение 3156, уровень 16, состояние 8, сервер XXXX, строка 2
Как решить эту проблему? Это ошибка безопасности?
- sql-сервер
- ссмс
1
У меня недавно была эта проблема. Исправление для меня заключалось в том, чтобы перейти на страницу «Файлы» диалогового окна «Восстановить базу данных» и установить флажок «Переместить все файлы в папку».
3
Учетная запись, под которой работает сервер sql, не имеет доступа к местоположению, в котором у вас есть файл резервной копии или в котором вы пытаетесь восстановить базу данных. Вы можете использовать Диспетчер конфигурации SQL Server , чтобы определить, какая учетная запись используется для запуска экземпляра SQL Server, а затем убедиться, что эта учетная запись имеет полный контроль над файлом . BAK и папкой, в которую будет восстановлен MDF.
2
Что ж, в моем случае решение было довольно простым и понятным.
Мне пришлось изменить только значение log On As
value.
Действия по устранению —
- Открыть
Диспетчер конфигурации сервера Sql
- Право
нажмите на SQL Server (MSSQLSERVER
) - Перейти к
Свойства
- изменить
войти в систему как
значение наLocalSystem
Надеюсь, это поможет и вам 🙂
1
Я только что столкнулся с той же проблемой, но у меня было другое решение. По сути, на моем компьютере были установлены и SQL Server, и SQL Server Express. Это не сработало, когда я попытался восстановить SQL Express, но сработало правильно, когда я восстановил его на SQL Server.
1
Хорошим решением, которое может работать, является переход к файлам > и проверка перераспределения всех файлов. все файлы в папку в параметрах «Файлы» следующим образом:
Я столкнулся с той же проблемой, но мои настройки немного отличаются.
- Я запускаю свою базу данных в док-контейнере Linux
- Инструмент управления sqlserver в Windows.
Я сделал следующее:
sudo docker exec -u root -it sqlserver /bin/bash
Это входит в контейнер Docker как пользователь root.
Затем:
chmod 777 /path/to/file.bak
777 дает права на чтение, запись и выполнение файла для любой группы, пользователь
. Я попробовал описанный выше сценарий и получил ту же ошибку 5 (отказано в доступе). Я глубоко погрузился и обнаружил, что файл .bak должен иметь доступ к учетной записи службы SQL. Если вы не уверены, введите services.msc в меню «Пуск» -> «Выполнить», затем проверьте учетную запись для входа в службу SQL.
Затем перейдите к файлу, щелкните правой кнопкой мыши и выберите вкладку «Безопасность» в «Свойствах», затем отредактируйте, чтобы добавить нового пользователя.
Наконец, дайте ему полное разрешение, чтобы дать полный доступ.
Затем из SSMS попробуйте восстановить резервную копию.
2
Я получал ту же ошибку при попытке восстановить резервную копию базы данных SQL 2008 R2 в базе данных SQL 2012. Я предполагаю, что ошибка связана с недостаточными правами для размещения файлов .mdf и .ldf на диске C. Я попробовал одну простую вещь, после чего мне удалось успешно восстановить ее.
Попробуйте следующее:
В окнах мастера восстановления БД перейдите на вкладку «Файлы» и измените место назначения восстановления с C: на другой диск. Затем продолжите обычный процесс восстановления. Он обязательно будет успешно восстановлен!
Надеюсь, это поможет и вам. Ура 🙂
Есть несколько причин этой ошибки, я получил эту ошибку, потому что я установил флажок «Перераспределить все файлы в папку» на вкладке «Файлы» в окне «Восстановить базу данных», но путь по умолчанию не существует на моем локальном компьютере. У меня были файлы ldf/mdf в другой папке, как только я изменил их, я смог их восстановить.
1
Я нашел это, и у меня это сработало:
СОЗДАТЬ ВХОД BackupRestoreAdmin С ПАРОЛЕМ='$tr0ngP@$$w0rd' ИДТИ СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ BackupRestoreAdmin ДЛЯ ВХОДА BackupRestoreAdmin ИДТИ EXEC sp_addsrvrolemember «BackupRestoreAdmin», «dbcreator» ИДТИ EXEC sp_addrolemember 'db_owner', 'BackupRestoreAdmin' ИДТИ
2
В моем случае мне пришлось поставить галочку в Перезаписать существующую базу данных (С ЗАМЕНОЙ)
на вкладке Options
на странице Restore Database
.
Причина, по которой я получал эту ошибку: потому что в базе данных уже присутствовал файл MDF, и он не перезаписывался.
Надеюсь, кому-нибудь это поможет.
Если вы присоединяете базу данных, взгляните на сетку «Базы данных для подключения» и, в частности, в столбец «Владелец» после того, как вы указали файл .mdf. Запишите учетную запись и дайте ей полные разрешения для файлов mdf и ldf.
У меня была точно такая же проблема, но решение было другим: моя компания шифрует все файлы на моих машинах. После расшифровки файла у MSSQL не было проблем с доступом и созданием БД. Просто щелкните правой кнопкой мыши файл .bak -> Свойства -> Дополнительно… -> Зашифровать содержимое для защиты данных.
1
это случилось со мной сегодня утром, я был членом группы администраторов локального сервера и имел беспрепятственный доступ, или я так думал. Я также отметил вариант «заменить», хотя в экземпляре такой БД нет.
Выяснил, что раньше там была одноименная БД, и файлы MDF и LDF до сих пор физически находятся в папках данных и журналов сервера, но собственно метаданные отсутствуют в sys. databases. учетная запись службы SQL-сервера также не может перезаписывать существующие файлы. Выяснил также, что владелец файлов «неизвестен», мне пришлось сменить владельца на 2 файла выше, чтобы он теперь принадлежал группе администраторов локального сервера, а затем переименовал его.
Наконец-то это сработало.
У учетной записи нет доступа к местоположению файла резервной копии.
Выполните следующие шаги, чтобы легко получить доступ к диспетчеру конфигурации SQL Server через диспетчер компьютеров.
- Нажмите клавишу Windows + R , чтобы открыть окно «Выполнить».
- Введите compmgmt.msc в поле Открыть:.
- Нажмите OK .
- Развернуть Службы и приложения .
- Развернуть Диспетчер конфигурации SQL Server .
- Изменить учетную запись пользователя на вкладке Войти как .
Теперь вы можете легко восстановить базу данных
Исправление для меня заключалось в том, чтобы зайти в «Параметры» при попытке восстановить базу данных и изменить путь на новый путь.