Помилка відновлення бази даних SQL Server: вказаний привід недійсний. (SqlManagerUI)


91

Я використовую SQL Server 2008 R2 Standard (версія 10.50.1600.1) для мого робочого веб-сайту та видання SQL Server Express з розширеними службами (v10.50.1600.1) для мого localhost як бази даних.

Кілька днів тому мій SQL Server зірвався, і мені довелося встановити нову версію 2008 R2 Express на мій localhost. Це спрацювало нормально, коли я відновив деякі старіші версії, взяті з 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
ВІДНОВЛЕННЯ БАЗИ ДАНИХ завершується аномально.

Я перевірив версії. Всі вони здаються мені відповідними, як показано на малюнку нижче

Раніше я зміг відновити базу даних із стандартної версії до експрес-версії, але зараз вона не працює. Я видалив базу даних і спробував її відтворити. Це теж не вдається.

Я не впевнений, що роблю неправильно. Буду вдячний за допомогу в цьому

Проблему вирішено, оскільки, схоже, файл .bak пошкоджений. Коли я спробував це з іншим файлом, це спрацювало.


я не професіонал у цьому, але швидке запитання, чи сумісна архітектура x86 та x64 у базі даних?
Густав Клімт

Я мав попередню базу даних відновлення на той момент, я не стикався з такою проблемою. чомусь зараз він генерує помилки, я не впевнений, що створення серверів баз даних створює якісь проблеми
Навчання

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

Я натрапив на ту саму проблему сьогодні на роботі .. Здається, перевірка розміру файлу, передача FTP передачі недостатня. Здається, файл дуже чутливий. Вирішено проблему, заархівувавши файл перед виконанням передачі.
rofans91

Сценарій Я взяв резервну копію бази даних на SQL SERVER 2008 і спробував відновити її на SQL SERVER 2008 R2. В ідеалі він повинен працювати нормально, але під час вибору файлу резервної копії SQL Management Studio 2208 R2 піднімав помилку "Вказаний привід не вказаний. (SqlManagerUI)". Причина та усунення несправностей Це сталося через пошкодження файлу .BAK під час передачі FTP (режим передачі встановлено на ASCII). Завжди пам’ятайте, що під час передачі файлу .BAK бази даних потрібно встановити для режиму передачі FTP значення BINARY.
Рохан Саркар

Відповіді:


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, рівень 16, стан 1, рядок 1 Не вдалося прочитати "C: \ Publications.bak": 38 (не вдалося отримати текст для цієї помилки. Причина: 15105) Msg 3013, рівень 16, стан 1 , Рядок 1 ВІДНОВЛЕННЯ БАЗИ ДАНИХ закінчується аномально.
Навчання

163

Можливо через відновлення файлу резервної копії версії SQL Server 2012 у SQL Server 2008 R2 або навіть менше.


4
Натомість потрібно було б використовувати "Створити сценарій".
kroiz

4
Це була моя проблема. Здається, для держави-члена не було б надто складно надати більш корисне повідомлення для деяких із цих випадків.
Джон Гілмер,

Пінал Дейв пояснює причини тут - 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, та відновлення Headeronly було зроблено в SQL 2008 R2

  2. Носій резервної копії пошкоджений.

Якщо ми запускаємо команду нижче, ми завжди можемо знайти фактичну помилку:

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

Укажіть повне розташування файлу бази даних у пропозиції

Сподіваюся, це допоможе

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.