Ошибка восстановления базы данных SQL Server: указанное приведение недопустимо. (SqlManagerUI)

Я использую 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'

Выдает другую ошибку

Сообщение 3154, уровень 16, состояние 4, строка 1
Набор резервных копий содержит резервную копию базы данных, отличной от существующей базы данных "Публикации".
Сообщение 3013, уровень 16, состояние 1, строка 1 < br> RESTORE DATABASE аварийно завершает работу.

Я перепроверил версии. Все они кажутся мне одинаковыми, как показано на изображении ниже.

Раньше мне удавалось восстановить базу данных из стандартной версии в экспресс-версию, но теперь это не удается. Я удалил базу данных и попытался воссоздать ее. Это тоже не удается.

Я не уверен, что делаю не так. Буду признателен за помощь в этом отношении

Проблема решена, поскольку кажется, что файл .bak поврежден. Когда я попробовал это с другим файлом, это сработало.


person Learning    schedule 28.11.2012    source источник
comment
Я не профессионал в этом, но быстрый вопрос, совместимы ли архитектуры x86 и x64 в базе данных?   -  person Gustav Klimt    schedule 28.11.2012
comment
В то время у меня была предыдущая база данных восстановления, я не сталкивался с такой проблемой. по какой-то причине теперь он генерирует ошибки, я не уверен, создает ли сопоставление сервера базы данных какие-либо проблемы   -  person Learning    schedule 28.11.2012
comment
Попробуйте добавить ,REPLACE в команду T-SQL, чтобы перезаписать существующую базу данных AlHabtoorPublications.   -  person SchmitzIT    schedule 28.11.2012
comment
Сегодня я столкнулся с той же проблемой на работе. Похоже, проверки размера файла при передаче по FTP недостаточно. Похоже, файл очень чувствительный. Решил проблему, заархивировав файл перед выполнением передачи.   -  person rofans91    schedule 20.07.2015
comment
Scenerio Я сделал резервную копию базы данных на SQL SERVER 2008 и попытался восстановить ее на SQL SERVER 2008 R2. В идеале он должен работать нормально, но при выборе файла резервной копии SQL Management Studio 2208 R2 выдает ошибку. Указанное приведение не указано. (SqlManagerUI). Причина и устранение неполадок Это произошло из-за повреждения файла .BAK во время передачи по FTP (установлен режим передачи ASCII). Всегда не забывайте устанавливать режим передачи FTP на ДВОИЧНЫЙ при передаче файла базы данных .BAK.   -  person Rohan Sarkar    schedule 17.03.2017


Ответы (4)


Графический интерфейс иногда может быть непостоянным. Ошибка, возникающая при использовании 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.
person SchmitzIT    schedule 28.11.2012
comment
Странно, я повторно использовал ваше исходное заявление. В любом случае, я добавил только последнюю строчку: , REPLACE - person SchmitzIT; 28.11.2012
comment
На самом деле Failed: 38 означает reached end of the file. (В командном окне запустите NET HELPMSG 38). Обычно это указывает на поврежденную резервную копию: stackoverflow.com/questions/5656363/ - person SchmitzIT; 28.11.2012
comment
Я тестировал восстановление с немного более старым файлом .bak, который был восстановлен без каких-либо проблем. Похоже, именно этот файл .bak поврежден - person Learning; 28.11.2012
comment
Возможно, это произошло в результате крушения. Это могло привести к выходу из строя части привода. Рад слышать, что вам удалось решить проблему с помощью другой резервной копии :) - person SchmitzIT; 28.11.2012
comment
Сценарий генерирует следующую ошибку Msg 3203, Level 16, State 1, Line 1 Read on C: \ Publications.bak failed: 38 (не удалось получить текст для этой ошибки. Причина: 15105) Msg 3013, Level 16, State 1, Line 1 RESTORE DATABASE аварийно завершает работу. - person Learning; 28.11.2012

Возможно, из-за восстановления файла резервной копии версии SQL Server 2012 в SQL Server 2008 R2 или даже меньше.

person Subhash Makkena    schedule 14.10.2013
comment
Вместо этого нужно использовать Generate Script. - person kroiz; 24.06.2014
comment
Это была моя проблема. Похоже, для MS было бы несложно дать более полезное сообщение для некоторых из этих случаев. - person John Gilmer; 13.08.2015
comment
Пинал Дэйв объясняет причины здесь: blog.sqlauthority.com/2015/06/01/ - person shrivb; 23.05.2016

Наконец-то эта ошибка исчезла при восстановлении. Я перешел на 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'

Когда его закончили восстанавливать, я чуть не заплакал от радости.

Удачи!

person Sara Anderson Noonan    schedule 10.07.2013

Ниже могут быть 2 причины этой проблемы:

  1. Резервное копирование выполнено в SQL 2012, а восстановление только заголовков выполнено в SQL 2008 R2.

  2. Резервный носитель поврежден.

Если мы запустим команду ниже, мы всегда сможем найти фактическую ошибку:

restore headeronly
from disk = 'C:\Users\Public\Database.bak'

Укажите полное местонахождение файла вашей базы данных в поле "quot

Надеюсь, это поможет

person Keren Caelen    schedule 20.06.2018