Я использую SQL Server 2008 R2 Standard (версия 10.50.1600.1) для своего производственного веб-сайта и SQL Server Express edition с расширенными службами (v10.50.1600.1) для моего локального хоста в качестве базы данных.
Несколько дней назад у меня произошел сбой SQL Server, и мне пришлось установить новую версию 2008 R2 Express на моем локальном хосте. Он работал нормально, когда я восстановил некоторые старые версии, взятые из Express edition, но когда я пытаюсь восстановить базу данных из .bak
файла, взятого с производственного сервера, это вызывает следующую ошибку:
Ошибка: указанное приведение неверно. (SqlManagerUI)
и когда я пытаюсь восстановить базу данных с помощью команды
Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications.bak'
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
Выдает другую ошибку
Msg 3154, уровень 16, состояние 4, строка 1
Резервный набор содержит резервную копию базы данных, отличной от существующей базы данных «Публикации».
Msg 3013, уровень 16, состояние 1, строка 1
RESTORE DATABASE завершается ненормально.
Я перепроверил версии. Все они кажутся мне одинаковыми, как показано на изображении ниже.
Раньше мне удавалось восстановить базу данных из стандартной версии в экспресс-версию, но теперь это не удается. Я удалил базу данных и попытался воссоздать ее. Это тоже не удается.
Я не уверен, что делаю не так. Буду признателен за помощь в этом отношении
Проблема была решена, поскольку казалось, что файл .bak поврежден. Когда я попробовал с другим файлом, все заработало.
,REPLACE
в команду T-SQL, чтобы перезаписать существующую базу данных AlHabtoorPublications.Ответы:
Графический интерфейс временами может быть непостоянным. Ошибка, возникающая при использовании T-SQL, связана с тем, что вы пытаетесь перезаписать существующую базу данных, но не указали перезапись / замену существующей базы данных. Следующее может сработать:
Use Master Go RESTORE DATABASE Publications FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak' WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf' , REPLACE -- Add REPLACE to specify the existing database which should be overwritten.
источник
, REPLACE
Failed: 38
указываетreached end of the file
. (В командном окне запуститеNET HELPMSG 38
). Обычно это указывает на поврежденную резервную копию: stackoverflow.com/questions/5656363/…Возможно, из-за восстановления файла резервной копии версии SQL Server 2012 в SQL Server 2008 R2 или даже меньше.
источник
Наконец, получил эту ошибку, чтобы уйти при восстановлении. Я перешел на SQL2012 из-за разочарования, но думаю, что это, вероятно, все еще будет работать на 2008R2. Пришлось использовать логические имена:
RESTORE FILELISTONLY FROM DISK = ‘location of your.bak file’
И оттуда я запустил оператор восстановления с
MOVE
использованием логических имен.RESTORE DATABASE database1 FROM DISK = '\\database path\database.bak' WITH MOVE 'File_Data' TO 'E:\location\database.mdf', MOVE 'File_DOCS' TO 'E:\location\database_1.ndf', MOVE 'file' TO 'E:\location\database_2.ndf', MOVE 'file' TO 'E:\location\database_3.ndf', MOVE 'file_Log' TO 'E:\location\database.ldf'
Когда его закончили восстанавливать, я чуть не заплакал от радости.
Удачи!
источник
Ниже могут быть 2 причины этой проблемы:
Резервное копирование выполнено в SQL 2012, а восстановление только заголовков выполнено в SQL 2008 R2.
Резервный носитель поврежден.
Если мы запустим команду ниже, мы всегда сможем найти фактическую ошибку:
restore headeronly from disk = 'C:\Users\Public\Database.bak'
Укажите полное расположение файла вашей базы данных в разделе "quot
Надеюсь, это поможет
источник