«Не выбран набор резервных копий для восстановления» SQL Server 2012

150

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

Не выбран резервный набор данных для восстановления.

Ни единой строчки более подробного объяснения. Что здесь не так?

Любая другая база данных без файлового потока в порядке и может быть успешно восстановлена. Это связано с файловым потоком? Должен ли я установить исправление или что-то подобное.

Саид Нямати
источник
1
Еще не решил. Кажется, что конфигурация SQL Server имеет проблемы. Я думаю, что все должно быть проще, чем это.
Саид Нимати
1
Можете ли вы предоставить T-SQL, который вы используете для восстановления?
Бен Тул
3
Ну, я использую графический интерфейс SSMS.
Саид Нимати
Даже если это сделать так, в верхней части окна должна быть кнопка «скрипт». После того, как вы настроите все так, как вы думаете, будет установлено для восстановления, нажмите «вместо», и это вызовет 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'

Это должно дать вам сообщение об ошибке, что вам нужно отладить это.

user489998
источник
Какое сообщение об ошибке вы получаете, когда вы пытаетесь восстановить, используя SQL выше?
user489998
Похоже, что восстановление БД с использованием сценария T-SQL сделает эту работу. Я думаю, потому что мы не создали резервную копию данных файлового потока, пользовательский интерфейс не может справиться с этим.
Саид Нямати
1
Хорошо, мне нравится сырой SQL-подход. Я получаю сообщение типа «В наборе носителей 2 семейства носителей, но предоставляется только 1. Все участники должны быть предоставлены. - Значит ли это, что источником резервной копии была версия SQL Server, отличная от целевой? Когда я пытаюсь использовать подход пользовательского интерфейса («Восстановить»), я получаю сообщение @ topNo backupset selected to be restored.
The Red Pea
Если вы хотите полностью заменить существующую базу данных, используйте опцию WITH REPLACERESTORE DATABASE <YourDatabase> FROM DISK='<the path to your backup file>\<YourDatabase>.bak' WITH REPLACE
Iasmini Gomes
63

Моя проблема оказалась в разрешениях . Я на машине разработчика и скопировал через Homegroup. Каким-то образом, вероятно, из-за того, куда я скопировал файл, права доступа испортились, и Management Studio не смогла прочитать файл. Так как это dev, я просто дал всем права доступа к bak-файлу и смог успешно восстановить его через графический интерфейс.

Тайлер Форсайт
источник
Это тоже сработало для меня. Это так глупо, что мое имя пользователя может иметь разрешения для этой папки, но единственный способ заставить это работать - добавить группу «Все» к разрешениям в папке. Так расстраивает, но спасибо, что сэкономили мне время!
Hurleystylee
5
Полное отсутствие полезных сообщений об ошибках в этом случае. Моя проблема была также решена этим.
dodgy_coder
1
Booya! Должен любить те общие ошибки, которые ничего вам не говорят. Конечно это были разрешения. Случилось со мной при восстановлении с sql серверов на разных доменах. Изменено разрешение .bak файла для всех. Сработало нормально после этого.
предвидения
При попытке восстановить базу данных из .bakфайла, созданного веб-службой загрузки файлов, работающей под управлением IIS, ApplicationPoolIdentity
возникли те же проблемы
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, отметьте это .

Алон Или
источник
так что, если я беру резервную копию базы данных с компьютера с сервером sql server 2014 - можно ли его восстановить на сервере sql server 2014 express?
chester89
@ chester89 Я думаю, это зависит от того, какие функции у вас есть в БД. И вид резервного копирования. Экспресс-версия не распознает сжатые резервные копии. Кроме того, если корпоративная версия использует что-то уникальное для предприятия, бесплатная версия (экспресс) не распознает ее. Но, если у вас есть что-то стандартное, теоретически это следует признать.
Хуан Акоста
@JuanAcosta Да, я собрал это. В моем случае нет никакой специфической для предприятия функциональности, поэтому я восстановил резервную копию без проблем
chester89
@JuanAcosta Можете ли вы указать мне документацию, в которой говорится, что экспресс-издание не может восстановить сжатую резервную копию?
chester89
@ Честер, пожалуйста, проверьте страницу 234, пункт 3. По умолчанию доступна только одна опция в экспресс-версии. books.google.com.au/…
Хуан Акоста,
15

Запустите SQL Server Management Studio от имени администратора (щелкните правой кнопкой мыши ярлык / исполняемый файл, затем выберите «Запуск от имени администратора») и попробуйте восстановить.

Кит
источник
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 и попытался восстановить, ЭТО РАБОТАЛО! Да, спасибо :)
Али Бэйг,
1
То есть вы говорите, что не можете восстановить полную версию до экспресс-версии?
Zapnologica
7

Моя проблема заключалась в том, что мой пользователь был в группе «Встроенные администраторы» и не имел пользователя с ролью Sysadmin на SQL Server. Я только что запустил Management Studio в качестве администратора. Таким образом удалось восстановить базу данных.

Лиз
источник
Я использовал следующую статью для создания нового пользователя sysadmin (см. Раздел 2 с использованием однопользовательского режима): wikihow.com/Reset-SA-Password-in-Sql-Server
Savage
6

К вашему сведению: я обнаружил, что при восстановлении мне нужно было использовать те же учетные данные (пользователя SQL) для входа в систему SSMS. Сначала я попытался восстановить, используя учетную запись Windows Authentication.

Бен Рипли
источник
6

В моем случае это были разрешения и тот факт, что я использовал «Восстановить файлы и файловые группы ...», а не просто «Восстановить базу данных ...».

Это имело значение.

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

Брайан
источник
6

Для меня это вопрос привилегий пользователя. Я вошел в систему с пользователем sa, и он работает нормально.

Sharfi
источник
5

Для меня проблема заключалась в том, что файл .BAK находился в зашифрованной папке на сервере. Даже с полными правами администратора, я никогда не мог заставить SSMS читать файл. Перемещение .BAK в незашифрованную папку решило мою проблему. Обратите внимание, что после перемещения файла вам, возможно, придется также изменить свойства фактического файла, чтобы удалить шифрование (щелчок правой кнопкой мыши, свойства, дополнительные параметры, снимите флажок «зашифровать содержимое для защиты данных»).

GadgetNC
источник
3

У меня была такая же проблема с SQL Server 2014 (Management Studio не могла увидеть папку, в которой находился файл резервной копии, при попытке найти его для операции восстановления). В этой ветке содержался ответ, который решил мою проблему. Quote:

Учетную запись службы SQL Server можно найти в Пуск-> Панель управления-> Администрирование-> Службы. Дважды щелкните по службе SQL Server-> вкладка «Вход в систему». Вы будете использовать «Локальную системную учетную запись» или «Эта учетная запись» для определения конкретной учетной записи. Если вы используете локальную системную учетную запись, вы не сможете ссылаться на резервные копии, которые не являются локальными для сервера. Если вместо этого вы определили учетную запись для использования, это учетная запись, которая должна иметь доступ к расположению файла резервной копии. Ваша возможность доступа к резервным копиям с помощью вашего личного входа не имеет значения; это учетная запись SQL Server, которая используется, даже если вы запускаете резервное копирование. Ваши ИТ-специалисты должны иметь возможность определить, какие права предоставляются каждой учетной записи.

Надеюсь, что это помогает кому-то.

BCA
источник
Спасибо, что вы процитировали источник прямо здесь, в строке, гораздо проще использовать эту информацию, не отходя от этой страницы.
qxotk
3

В моем случае (установка нового сервера sql, новый пользователь) у моего пользователя просто не было необходимого разрешения. Я вошел в Management Studio как sa , затем перешел в Security / Logins, щелкнул правой кнопкой мыши по моему имени пользователя, Properties, затем в разделе «Роли сервера», который я проверил sysadmin.

Marc.2377
источник
2

Для меня это было потому, что файл резервной копии все еще был открыт другим процессом. Вот журнал событий:

BackupDiskFile :: OpenMedia: Не удалось открыть устройство резервного копирования 'X: \ Backups \ MyDatabase \ MyDatabase_backup_2014_08_22_132234_8270986.bak'. Ошибка операционной системы 32 (процесс не может получить доступ к файлу, потому что он используется другим процессом.).

Простое закрытие и повторное открытие Sql Server Management Studio решило его (так что, очевидно, именно ssms.exe имел дескриптор ...)

JohnZaj
источник
1

Другая потенциальная причина этого сбоя - Google Drive. Google Drive сжимает bak-файлы или что-то в этом роде, поэтому, если вы хотите перенести резервную копию базы данных через Google Drive, вы должны сначала сжать ее.

Джеймс Гулд
источник
1

Если вы хотите полностью заменить существующую базу данных, используйте опцию WITH REPLACE :

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 - восстановление базы данных):

No backupset selected to be restored

Кроме того, в списке не было наборов резервных копий для выбора.

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

Я переместил файл в папку «Документы» для пользователя службы, и это позволило ему прочитать все файлы, которые я выбрал - 4 на тот момент - и ошибка изменилась на «отсутствует набор носителей» - затем я искал другой резервный файл и когда я добавил, что смог восстановить.

Ответы на этот вопрос помогли мне найти правильные места и найти решение.

оборота condiosluzverde
источник
0

Для меня это был вопрос разрешения. Я установил SQL-сервер, используя учетную запись локального пользователя и до присоединения к домену моей компании. Позже я попытался восстановить базу данных, используя мою учетную запись домена, которая не имеет разрешений, необходимых для восстановления баз данных SQL-сервера. Вам необходимо исправить разрешение для вашей учетной записи домена и дать ей разрешение системного администратора на имеющемся у вас экземпляре SQL-сервера.

Анас Ганем
источник
0

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

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

Таким образом, исправление будет следующим: убедитесь, что в поле «место назначения» указан только 1 элемент. Удалите все остальные, если они есть.

Даниэль Литтл
источник
0

Я столкнулся с той же проблемой. Запустите SSMS от имени администратора, затем щелкните правой кнопкой мыши и выполните восстановление базы данных. Должно сработать.

Джонни Бой
источник
0

Я думаю, что получаю награду за самую глупую причину, чтобы получить эту ошибку. В диалоговом окне «Восстановление базы данных» раскрывающийся список «База данных» отображается серым цветом, и я подумал, что он отключен. Я перешел к раскрытию базы данных в пункте «Назначение», думая, что это источник, и сделал выбор. Это приведет к отображению этого сообщения об ошибке.

Гейб
источник