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


91

Я использую 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 поврежден. Когда я попробовал с другим файлом, все заработало.


Я не профессионал в этом, но быстрый вопрос, совместимы ли архитектуры x86 и x64 в базе данных?
— Густав Климт

В то время у меня была предыдущая база данных восстановления, я не сталкивался с такой проблемой. по какой-то причине теперь он генерирует ошибки, я не уверен, создает ли сопоставление сервера базы данных какие-либо проблемы
— Learning

Попробуйте добавить ,REPLACEв команду T-SQL, чтобы перезаписать существующую базу данных AlHabtoorPublications.
— SchmitzIT

Сегодня я столкнулся с той же проблемой на работе. Похоже, проверки размера файла при передаче по FTP недостаточно. Похоже, файл очень чувствительный. Решил проблему, заархивировав файл перед выполнением передачи.
— rofans91

Scenerio Я сделал резервную копию базы данных на SQL SERVER 2008 и попытался восстановить ее на SQL SERVER 2008 R2. В идеале он должен работать нормально, но при выборе файла резервной копии SQL Management Studio 2208 R2 выдает ошибку «Указанное приведение не указано. (SqlManagerUI)». Причина и устранение неполадок Это произошло из-за повреждения файла .BAK во время передачи по FTP (установлен режим передачи ASCII). Всегда не забывайте устанавливать для режима передачи FTP значение BINARY при передаче файла базы данных .BAK.
— Рохан Саркар

Ответы:


40

Графический интерфейс временами может быть непостоянным. Ошибка, возникающая при использовании 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
— SchmitzIT

1
Собственно, Failed: 38указывает reached end of the file. (В командном окне запустите NET HELPMSG 38). Обычно это указывает на поврежденную резервную копию: stackoverflow.com/questions/5656363/…
— SchmitzIT

Я тестировал восстановление с немного более старым файлом .bak, который был восстановлен без каких-либо проблем. Похоже, именно этот файл .bak поврежден
— Обучение

Возможно, это результат крушения. Это могло привести к поломке части привода. Рад слышать, что вам удалось решить проблему с помощью другой резервной копии :)
— SchmitzIT

Сценарий генерирует следующую ошибку Msg 3203, Level 16, State 1, Line 1 Не удалось прочитать "C: \ Publications.bak": 38 (не удалось получить текст для этой ошибки. Причина: 15105) Msg 3013, Level 16, State 1 , Строка 1 RESTORE DATABASE аварийно завершает работу.
— Обучение

163

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


4
Вместо этого нужно использовать «Создать сценарий».
— kroiz

4
Это была моя проблема. Похоже, для MS было бы несложно дать более полезное сообщение для некоторых из этих случаев.
— Джон Гилмер,

Пинал Дэйв объясняет причины здесь - blog.sqlauthority.com/2015/06/01/…
— shrivb

15

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

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

Удачи!


4

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

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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.