"Не вибрано резервну копію для відновлення" SQL Server 2012


150

У мене база даних SQL Server 2012 із включеним потоком файлів. Однак, коли я створюю резервну копію та намагаюся відновити її на іншому екземплярі SQL Server 2012 (на іншій машині), я просто отримую це повідомлення, що:

Не вибрано резервну копію для відновлення.

Навіть не один рядок більшого пояснення. Що тут не так?

Будь-яка інша база даних без потоку файлів у порядку і може бути успішно відновлена. Це щось пов'язане з потоком файлів? Чи потрібно встановити виправлення чи щось подібне.


1
Ще не вирішив. Здається, що з конфігурацією SQL Server є проблеми. Я думаю, що все повинно бути простіше, ніж це.
Саїд Неаматі

1
Чи можете ви надати T-SQL, який ви використовуєте для спроби відновлення?
Бен Тул

3
Ну, я використовую графічний інтерфейс SSMS.
Саїд Неаматі

Навіть роблячи це так, десь біля верхньої частини вікна повинна бути кнопка «скрипт». Після того, як ви все налаштуєте так, як ви думаєте, було б встановлено для відновлення, натисніть, що замість "ok", і він відкриє T-SQL, який би запускався проти сервера для відновлення.
Бен Тул

1
Випуск дозволів був і для мене, як і для стандарту SQL 2014 (окремий) на WS 2012 R2 (робочі групи), але довелося перезавантажити двічі для отримання дозволів "." Для того, що це варто. Сподіваюся, що ви все також вирішите.
BaldEagle

Відповіді:


177

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

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

Це повинно дати вам повідомлення про помилку, що вам потрібно це налагодити.


Яке повідомлення про помилку ви отримуєте при спробі відновлення за допомогою SQL вище?
user489998

Здається, відновлення БД за допомогою сценарію T-SQL зробило б свою роботу. Я думаю, оскільки ми не створили резервну копію даних файлового потоку, інтерфейс користувача не може це обробити.
Saeed Neamati

1
Приємно, мені подобається сирий підхід SQL. Я отримую повідомлення типу "У медіа-наборі є 2 медіа-сім'ї, але лише 1 надається. Усі члени повинні бути надані. "- чи це означає, що джерелом резервного копіювання була інша версія SQL Server, ніж ціль резервного копіювання? Коли я намагаюся з підходом до інтерфейсу користувача ("Відновити"), отримую повідомлення @ topNo backupset selected to be restored.
The Red Pea


Якщо ви хочете замінити існуючу базу даних повного використання WITH REPLACE варіант RESTORE DATABASE <YourDatabase> FROM DISK='<the path to your backup file>\<YourDatabase>.bak' WITH REPLACE
Iasmini Gomes

63

Моя проблема виявилася дозволом . Я перебуваю на розробниковій машині і копіюю через Homegroup. Якось, напевно, виходячи з того, куди я скопіював файл, дозволи зіпсувалися, і Management Studio не змогла прочитати файл. Оскільки це dev, я просто дав всім дозволи на файл bak і потім міг успішно відновитись через GUI.


Це закінчилось і для мене. Так ДУМА, що моє ім'я користувача може мати дозволи в цій папці, але єдиний спосіб змусити це працювати - це додати групу "Усі" до дозволів у папці. Так неприємно, але дякую, що заощадили мені час!
hurleystylee

5
Повна відсутність корисних повідомлень про помилки в цьому випадку. Моє питання також було вирішено цим.
dodgy_coder

1
Буя! Треба любити ті загальні помилки, які нічого не говорять вам. Звичайно, це були дозволи. Сталося зі мною при відновленні з sql-серверів у різних доменах. Усі права змінили .bak файл. Після цього добре працював.
Стародавній

Виникли ті ж проблеми при спробі відновити базу даних з .bakфайлу, створеного веб-службою завантаження файлів, яка працює під IISApplicationPoolIdentity
apdevelop

26

Під час запуску:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

Це дало мені таку помилку:

Сім'я медіа на пристрої "C: \ NorthwindDB.bak" неправильно сформована. SQL Server не може обробити цю медіасемейство. RESTORE HEADERONLY закінчується аномально. (Microsoft SQL Server, помилка: 3241) Блок-котирування

Виявляється, ви не можете взяти БД з вищої версії SQL до нижчої, навіть якщо рівень сумісності однаковий як у вихідній, так і в цільовій БД. Щоб перевірити запуск версії SQL:

Select @@Version

Щоб побачити різницю, просто створіть БД на вихідному SQL-сервері та спробуйте виконати відновлення зі свого резервного файлу, коли ви це зробите за допомогою SSMS, коли ви виберете файл резервного копіювання, він покаже інформацію про нього, як відкладений, коли ви відкрийте його з сервера нижчої версії, який просто скаже: "не створено резервну копію для відновлення" введіть тут опис зображення

Тож якщо вам все-таки потрібно перемістити свої дані до нижчої версії SQL, перевірте це .


тому якщо я беру резервну копію db з машини з sql server 2014 Enterprise - чи можна її відновити на sql server 2014 express?
chester89

@ chester89 Я думаю, це залежить від того, який функціонал ти маєш у БД. І вид резервного копіювання. Експрес-версія не розпізнає резервні копії стиснення. Крім того, якщо корпоративна версія використовує щось унікальне для підприємства, безкоштовна версія (експрес) не розпізнає її. Але, якщо у вас є щось стандартне, теоретично це слід визнати.
Хуан Акоста

@JuanAcosta так, я поклав це разом. У моєму випадку не використовується функціональних можливостей для підприємства, тому я відновив резервну копію без проблем
chester89

@JuanAcosta Ви можете вказати мені на документацію, в якій сказано, що експрес-видання не може відновити стиснуте резервне копіювання?
chester89

@Chester, будь ласка, перегляньте сторінку 234, пункт 3. Параметр за замовчуванням є єдиним, доступним у експрес-версії. books.google.com.au/…
Хуан Акоста

15

Запустіть SQL Server Management Studio в якості адміністратора (клацніть правою кнопкою миші ярлик / exe, потім виберіть "Запустити як адміністратор"), а потім спробуйте відновити.


10

Я думав, що я не дурний, щоб змішувати версії - однак, я не усвідомлював, що на моєму новому сервері екземпляр SQL Server 2005 уже встановлений з іменем народження SQLEXPRESS. При спробі відновити мою копію бази даних SQL Server 2008 R2 в SSMS 2012 до SQLEXPRESSекземпляра, список наборів резервних копій був порожнім.

Врешті-решт я зрозумів, що SQLEXPRESSекземпляр на сервері - це не екземпляр 2012 року, а 2005 рік. Я відключився та підключився до фактичного екземпляра 2012 року (в моєму випадку названого SQLEXPRESS2012), і він (очевидно) спрацював.


2
Це вказувало на мене в правильному напрямку для моєї проблеми. Я отримав ту саму помилку, що і оригінальний плакат, але це було тому, що я намагався відновити резервну копію з SQL Express 2012 до екземпляра SQL Server 2008. Зрозуміло, що це недоцільно, на жаль, помилка виявилася недостатньо описовою для вирішення основної проблеми.
LeastOne

1
Оце Так! Я встановив занадто багато гарячих виправлень з сайту, але ця помилка не зникла. Я побачив цю відповідь і ввійшов до екземпляра Sql Server 2012 і спробував відновити її. Ах, дякую :)
Ali Baig

1
Отже, ви говорите, що не можете відновити з повної версії до експрес-версії?
Zapnologica

7

Моя проблема полягала в тому, що мій користувач входив до групи Builtin-Administrators і не користувався Sysadmin-роллю на SQL Server. Я щойно розпочав студію управління як адміністратор. Таким чином вдалося відновити базу даних.


Наступну статтю я використав для створення нового користувача sysadmin (див. Розділ 2 у режимі однокористування
Savage

6

FYI: Я виявив, що під час відновлення мені потрібно було використовувати ті самі (SQL User) облікові дані для входу в SSMS. Я вперше спробував відновити за допомогою облікового запису автентифікації Windows.


6

У моєму випадку це були дозволи та факт, що я використовував "Відновити файли та групи файлів ...", а не просто "Відновити базу даних ...".

Це змінило значення.

введіть тут опис зображення


6

Для мене це проблема привілеїв користувача. Я ввійшов у систему з користувачем sa та його нормальною роботою.


5

Для мене проблемою було те, що файл .BAK знаходився в зашифрованій папці на сервері. Навіть маючи повні права адміністратора, я ніколи не міг отримати SSMS для читання файлу. Переміщення .BAK у незашифровану папку вирішило мою проблему. Зауважте, що після переміщення файлу вам, можливо, доведеться також змінити властивості фактичного файлу для видалення шифрування (клацніть правою кнопкою миші, властивості, розширено, зніміть прапорець "зашифрувати вміст для захисту даних".


3

У мене була така ж проблема з SQL Server 2014 (студія управління не могла побачити папку, в якій знаходився файл резервної копії, при спробі знайти її для операції відновлення). Ця нитка мала відповідь, яка вирішила мою проблему. Цитата:

Обліковий запис служби SQL Server можна знайти у меню Пуск-> Панель управління-> Адміністративні інструменти-> Послуги. Двічі клацніть на службі SQL Server-> вкладка Увійти. Ви будете використовувати "Обліковий запис локальної системи" або "Цей обліковий запис", щоб визначити конкретний обліковий запис. Якщо ви користуєтесь обліковим записом локальної системи, ви не зможете направити резервні копії, які не є локальними, на сервер. Якщо замість цього ви визначили обліковий запис для використання, це той рахунок, який повинен мати доступ до місця резервного копіювання файлу. Ваша можливість доступу до резервних копій за допомогою особистого входу не має значення; це обліковий запис SQL Server, який використовується, навіть якщо ви ініціюєте створення резервної копії. Ваші ІТ-люди повинні мати можливість визначати, які права надаються кожному обліковому запису.

Сподіваюся, що хтось допомагає.


Дякуємо, що ви цитували джерело прямо тут, набагато простіше використовувати цю інформацію, не переходячи від цієї сторінки.
qxotk

3

У моєму випадку (встановлення нового сервера sql, новоствореного користувача) мій користувач просто не мав необхідного дозволу. Я ввійшов у студію управління як са , потім перейшов до Безпеки / Логінів, клацніть правою кнопкою миші своє ім’я користувача, Властивості, а потім у розділі Рольові сервери, який я перевірив sysadmin.


2

Для мене це було тому, що файл резервного копіювання все ще був відкритий іншим процесом. Ось журнал подій:

BackupDiskFile :: OpenMedia: Пристрій резервного копіювання 'X: \ Резервні копії \ MyDatabase \ MyDatabase_backup_2014_08_22_132234_8270986.bak' не вдалося відкрити. Помилка операційної системи 32 (Процес не може отримати доступ до файлу, оскільки він використовується іншим процесом.)

Просто закриття та повторне відкриття Sql Server Management Studio вирішило це (так очевидно, що ручка ssms.exe мала цю ручку ..)


1

Ще однією можливою причиною цієї проблеми є Google Drive. Google Диск стискає файли Bak чи щось подібне, тому, якщо ви хочете перенести резервну копію бази даних через Google Drive, то, здається, спочатку потрібно скопіювати її.


1

Якщо ви хочете замінити існуючу базу даних, повністю скористайтеся опцією " ЗАМЕНА ":

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'
WITH REPLACE

1

У моєму випадку це була проблема дозволів.

введіть тут опис зображення

Для користувача Windows, яку я використовував, dbcreatorроль не мала .

Тому я дотримувався наступних кроків

  1. Підключіться як saдо SQL-сервера
  2. Розгорніть Securityу Провіднику об’єктів
  3. Розгорнути Logins
  4. Клацніть правою кнопкою миші на відповідного користувача Windows
  5. Клацніть на Властивості
  6. Виберіть Server Rolesіз Select a pageопцій
  7. Перевірте dbcreatorроль користувача
  8. Натисніть кнопку ОК

введіть тут опис зображення


0

Використання SQL Server 2012 Express.

Моя помилка (від SQL Manager - діалогове вікно відновлення бази даних):

No backupset selected to be restored

Крім того, у списку не було показано резервних наборів.

Проблема полягала в тому, що я перемістив 1 з 5-ти резервних файлів у папку, у якій користувач служби входу в систему SQL Server не мав дозволів - я намагався додати цього користувача, але не зміг отримати користувача NT Service \ MSSQL $ SQLEXPRESS у безпеку список.

Я перемістив файл у папку "Документи" для користувача сервісу, і це дозволило йому прочитати всі вибрані вами файли - 4 на той момент - і помилка змінилася на "медіа-набір відсутній" - тоді я оглянув ще один резервний файл , і коли я додав, що мені вдалося відновити.

Відповіді на це запитання допомогли мені розібратися в потрібних місцях і пропрацювати свій шлях до вирішення.


0

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


0

Я отримав те саме повідомлення про помилку, хоча я створюю резервну копію та відновлення на одній машині.

Питання було звідси: під час резервного копіювання у мене було 2 пункту у полі призначення.

Тому виправленням було б: переконайтеся, що у полі "призначення" лише 1 елемент. Видаліть усі інші, якщо вони є.


0

Я зіткнувся з тим же питанням. Запустіть SSMS як адміністратор, потім клацніть правою кнопкою миші та зробіть відновлення бази даних. Треба працювати.


0

Я думаю, що я отримую нагороду за найпопулярнішу причину, щоб отримати цю помилку. У діалоговому вікні «Відновити базу даних» спадне місце базу даних у розділі Джерело є сірим кольором, і я вважав, що його відключено. Я перейшов до спадної бази даних у пункті Destination, думаючи, що це джерело, і зробив вибір. Це призведе до відображення цього повідомлення про помилку.

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