Ошибка восстановления базы данных 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.