2014-01-07 3 views
1

Я пытаюсь восстановить файл * .bak из базы данных SQL 2012 и у меня много проблем. Похоже, что у нас остались аналогичные вопросы, которые остались без ответа, поэтому я надеюсь, что ниже будет рассмотрен вопрос.Восстановление SQL2012 в LocalDb

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

RESTORE FILELISTONLY 
FROM disk = 'C:\Users\jonathan\Desktop\mydb_Full.bak' 

Запуск ниже, чтобы восстановить

RESTORE DATABASE mydb 
    FROM disk = 'C:\Users\jonathan\Desktop\mydb_Full.bak' 
    WITH RECOVERY, 
     MOVE 'mydb' TO 
'C:\Users\jonathan\mydb.mdf', 
     MOVE 'mydb_log' 
TO 'C:\Users\jonathan\mydb_log.ldf' 

Получить ошибку:

Processed 448 pages for database 'mydb', file 'mydb' on file 1. 
Processed 2 pages for database 'mydb', file 'mydb_log' on file 1. 
Msg 1853, Level 16, State 1, Line 5 
The logical database file 'mydb_log' cannot be found. Specify the full path for the file. 
Msg 3167, Level 16, State 1, Line 5 
RESTORE could not start database 'mydb'. 
Msg 3013, Level 16, State 1, Line 5 
RESTORE DATABASE is terminating abnormally. 

Предложение от SO/Google - попытаться отсоединиться, а затем присоединить, приложение может инициировать процесс обновления.

exec sp_detach_db mydb, 'true' 

Ошибка:

Msg 3707, Level 16, State 2, Line 17 
Cannot detach a suspect or recovery pending database. It must be repaired or dropped. 

Блоги предлагают установить его в аварийный режим:

ALTER DATABASE smsr4000 SET EMERGENCY; 

Это Так что теперь я потерял результаты в

Msg 823, Level 24, State 1, Line 20 
The operating system returned error 5(Access is denied.) to SQL Server during a read at offset 0x00000000012000 in file 'C:\Users\jonathanchannon\mydb.mdf'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online. 

. Как я могу получить эту резервную копию sql в LocalDB?

Благодаря

UPDATE: Существует открытый вопрос MS here on connect и this blog post также выглядят многообещающими, но при использовании SQLCMD для подключения к экземпляру я получаю и ошибка:

Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Named Pipes Provider: Could not open a connection to SQL Server [2]. 

UPDATE 2: Наконец-то сдался и установил SQL Express и Management Studio, работал в первый раз.

+0

Jonathan вы можете опубликовать вывод списка файлов? – Richard

ответ

1

Я столкнулся с той же проблемой при попытке сценария нашего использования LocalDB. Однако есть одна маленькая деталь, которая вытащила меня из этой колеи.

Во-первых, вы должны попытаться восстановить базу данных и предоставить новые имена файлов (используя команду RESTORE DATABASE mydb ...). После этого правильные MDF и LDF таинственно доступны в нужном месте, несмотря на ошибку.

После этого у вас есть несколько вариантов. Первая проблема заключается в том, что SQL покажет базу данных, застрявшую в состоянии «Восстановить ...». Вероятно, это можно решить несколькими способами. В моем решении я удаляю и воссоздаю экземпляр LocalDB с помощью утилиты SqlLocalDb. Если это слишком тяжело, вы можете скопировать файлы MDF и LDF, а затем отбросить базу данных. Эта команда останавливается, падает, и воссоздает экземпляр LocalDB под названием «v11.0»:

sqllocaldb p v11.0 && sqllocaldb d v11.0 && sqllocaldb c v11.0 -s 

В тот момент у меня была MDF и LDF, что я мог бы использовать.Итак, я использовал это, чтобы заставить его пересечь финишную черту:

CREATE DATABASE X ON (Name=X, Filename=X) LOG ON (Name=X, Filename=X) FOR ATTACH; 
Смежные вопросы