Sql не видит файл bak

Обновлено: 28.06.2024

У меня есть резервная копия Database1 от недели назад. Резервное копирование выполняется в планировщике еженедельно, и я получаю .bak файл. Теперь я хочу поиграть с некоторыми данными, поэтому мне нужно восстановить их в другой базе данных - Database2 .

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

Есть ли какой-нибудь другой способ восстановить его Database2 или, по крайней мере, как просмотреть данные этого файла .bak?

ps: второй ответ по приведенной выше ссылке выглядел многообещающе, но завершается с ошибкой:

Восстановление списка файлов прекращается ненормально

Вы можете создать новую базу данных, а затем использовать «Мастер восстановления», включив опцию перезаписи или;

запишите логические имена .mdf & .ldf из результатов, затем;

Для создания базы данных MyTempCopy с содержанием your.bak .

Пример (восстанавливает резервную копию базы данных с именем creditline в MyTempCopy;

Привет, я, кажется, что-то упустил, он продолжает выдавать ошибку backkup set holds a backup of a database other than existing "tmp" database , которая, я понимаю. Должна ли to фраза быть реальным физическим путем MyTempCopy ? Странно, это to местоположение базы данных и журнала для новой базы данных, пример обновления выше Для тех, кто пытается это сделать, не создавайте MyTempCopy, он создается во время восстановления. Следует использовать REPLACE, RECOVERY, чтобы решить это. Так что это будет: RESTORE DATABASE MyTempCopy FROM DISK='e:\mssql\backup\creditline.bak' WITH REPLACE, RECOVERY, MOVE 'CreditLine' TO 'e:\mssql\MyTempCopy.mdf', MOVE 'CreditLine_log' TO 'e:\mssql\MyTempCopy_log.ldf'

SQL Server 2008 R2:

Для существующей базы данных, которую вы хотите «восстановить: из резервной копии другой базы данных, выполните следующие действия:

  1. На панели инструментов нажмите кнопку «Монитор активности».
  2. Нажмите процессы. Фильтр по базе данных, которую вы хотите восстановить. Убейте все запущенные процессы, щелкнув правой кнопкой мыши по каждому процессу и выбрав «kill process».
  3. Щелкните правой кнопкой мыши базу данных, которую вы хотите восстановить, и выберите Задачи -> Восстановить -> Из базы данных.
  4. Выберите переключатель «С устройства:».
  5. Выберите . и выберите файл резервной копии другой базы данных, из которой вы хотите восстановить.
  6. Выберите набор резервных копий, из которого вы хотите восстановить, установив флажок слева от набора резервных копий.
  7. Выберите «Опции».
  8. Выберите Перезаписать существующую базу данных (С ЗАМЕНОЙ)
  9. Важное замечание: Измените имя файла данных «Восстановить как» на имя файла существующей базы данных, которую вы хотите перезаписать, или просто дайте ему новое имя.
  10. Сделайте то же самое с именем файла журнала.
  11. На экране монитора активности убедитесь, что не было запущено ни одного нового процесса. Если они были, убей их.
  12. Нажмите ОК.
Несмотря на то, что я программист, я бы предпочел использовать этот мастер. Проще и чище. Sql 2014 .. Шаг 6a: Измените базу данных назначения на базу данных, в которую вы хотите восстановить. Шаг 9 и 10: Об этом следует позаботиться, изменив базу данных Destination. Но дважды проверьте это, зайдя в Файлы и проверив имена файлов, как описано в первоначальном шаге 9 и 10.

Обратите внимание, что шаги 4 и 7 важно настроить, чтобы не перезаписывать существующую базу данных.

У меня есть .bak-файл, созданный сегодня кем-то другим, созданный вручную через SSMS 2008 R2. Я пытаюсь вручную восстановить базу данных, к сожалению, файл не появляется, когда я иду, чтобы просмотреть его.

Я могу запустить процесс восстановления, но я видел эту проблему раньше, и я не уверен, что может привести к тому, что .bak не появится.

У нас была такая же проблема сегодня. Это оказалось проблемой с разрешениями, как показано в некоторых других ответах. Разница в том, что нам нужно было добавить учетную запись NT SERVICE\MSSQLSERVER .

Снимок экрана

Я идентифицировал учетную запись, сравнив разрешения разрешений папки SQL Backup по умолчанию в папку, содержащую файл резервной копии.

Добавление учетной записи службы не так просто, как кажется. Вот что сработало для меня. (Server 2012 R2)

  1. Войдите в сервер. (Изменение должно производиться на самом сервере, а не через общий ресурс сети.)
  2. Измените Местоположение на имя локального сервера.
  3. В поле имени введите NT SERVICE\MSSQLSERVER . (Не нажимайте «Проверить имена»).
  4. Нажмите «ОК». Затем вы увидите список соответствующих учетных записей службы. Выберите MSSQLSERVER и нажмите OK, чтобы принять выбор.

введите описание изображения здесь>> </p> <p> <img src ggl_top

Я получил это сегодня.

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

Пошел в Проводник Windows, скопировал резервные копии в другую папку и просмотрел их через Management Studio, и я мог видеть его там.

Удалил исходную папку и ее воссоздал, скопировал содержимое назад и просмотрел файлы .bak , и он вернулся к нормальной работе.

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

После некоторых расходов я обнаружил, что это проблема с разрешениями. Служба SQL Server работает с помощью Network Service , но у учетной записи Network Service не было прав доступа к папке. После предоставления разрешений Network Service . Файл резервной копии был виден для восстановления.

Если вы можете найти его в Проводнике Windows, вы должны написать команду RESTORE DATABASE вместо того, чтобы полагаться на неуклюжий графический интерфейс, чтобы найти его для вас. Кто знает, какой код там происходит и почему он не может найти файл - извините, у меня есть обходное решение, а не решение.

Также убедитесь, что файл на самом деле есть что-то. bak, а не something.bak.txt (Windows может «помочь» скрывать расширение от вас. Я ненавижу это поведение по умолчанию.)

Я столкнулся с этой проблемой пару раз. Проблема связана не с SQL Server, а с разрешением Windows для папки. Вы должны добавить соответствующее разрешение в папку, где вы скопировали файл .bak (я думаю, System Network ).

Более простым решением является переместить файл в папку резервного копирования по умолчанию в Program Files. Он имеет все необходимые разрешения. Для SQL Server 2012 это

Как я могу импортировать эту дату в базу данных в SQL Server?

Я предполагаю, что вы используете MSSQL, вот ветка, объясняющая несколько способов восстановления. Вы можете создать пустую базу данных и восстановить данные в пустой базе данных, используя ваш .bak Самый простой способ - третий ответ, щелчок правой кнопкой мыши по базам данных, импорт, устройство, выбор файла .bak, готово. Может ли кто-нибудь расширить ответ для решения, дружественного к автоматизации? Проходить через пользовательский интерфейс и делать несколько кликов не очень эффективно.

В SQL Server Management Studio

  1. Щелкните правой кнопкой мыши Базы данных на левой панели (Обозреватель объектов)
  2. Нажмите Восстановить базу данных .
  3. Выберите устройство , нажмите . и добавьте .bak файл
  4. Нажмите OK , затем снова OK
Это работает как шарм. Это отличные упрощенные инструкции, и в сущности они являются теми же инструкциями из официальной ссылки Microsoft, которая указана в наиболее часто задаваемом ответе. Если это не удается, вам, вероятно, нужно стереть существующую базу данных. Это не работает для меня. Я указываю на правильную папку, и она даже не видит файлы. Я вставляю точное имя файла в диалоге, и он говорит, что файл не существует. Кроме того, диалог видит диск, который не существует на моем сервере. Запоминает ли база данных местоположение последней резервной копии и будет ли она восстанавливаться только с этой точки? Мне очень странно, что я не могу выбрать файл резервной копии для восстановления. Мой файл .BAK находился в каталоге «Downloads», который существовал под моей учетной записью. Мне пришлось переместить файл .BAK в корень C: для того, чтобы этот инструмент мог его увидеть и позволить мне восстановить его. Файлы под моим пользователем просто не были видны по какой-то причине. Это не работает. Я щелкаю правой кнопкой мыши «Базы данных», но «Восстановить базу данных…» нет.

Файлы .bak являются резервными копиями базы данных. Вы можете восстановить резервную копию с помощью метода ниже:

Это не работает. В статье говорится: «. 2) Разверните базы данных. В зависимости от базы данных выберите базу данных пользователей или разверните« Системные базы данных », а затем выберите базу данных системы. 3) Щелкните правой кнопкой мыши базу данных , выберите« Задачи », а затем нажмите Восстановить." НЕ! Вы не можете щелкнуть правой кнопкой мыши по базе данных, которая не существует! В конце концов, вы пытаетесь восстановить или импортировать данную базу данных. Как вы можете щелкнуть правой кнопкой мыши базу данных, которая не загружена? Причудливый MSDN и ухудшение функциональности восстановления в SSMS заявлено, но не работает. Зачем? К счастью, команды SQL, которые здесь дают другие, работают.

и вы должны переместить соответствующие файлы mdf, ndf & ldf, используя

Это было очень полезно для меня, так как я хотел восстановить файл .bak в контейнер sql Docker с хостом macOS с помощью Azure Data Studio. Все, что мне нужно было сделать, это скопировать .bak в контейнер, настроить путь и изменить на /, и я смог успешно восстановиться.

Вы можете просто восстановить эти файлы резервных копий базы данных, используя собственные методы SQL Server, или вы можете использовать ApexSQL Restore инструмент для быстрого виртуального прикрепления файлов и доступа к ним как к полностью восстановленным базам данных.

Отказ от ответственности: я работаю инженером по поддержке продуктов в ApexSQL

Вместо выбора Восстановить базу данных . выберите Восстановить файлы и файловые группы .

Затем введите имя базы данных, выберите путь к файлу .bak в качестве источника, установите флажок восстановления и нажмите «ОК». Если файл .bak действителен, он будет работать.

(Имена параметров восстановления SQL Server не являются интуитивно понятными для выполнения простой задачи.)

I am trying to run a classic asp project on visual studio and therefore I am trying to restore a database. I cannot seem to find the .bak file when trying to restore it. It wasn't visible in the C-drive. I have looked it up and have seen that it has something to do with permissions. I have tried enabling permissions after properties>security of .bak file to 'Everyone', it did not work. I have also tried NT Service\MSSQLSERVER . Please see the following below.

enter image description here

enter image description here


71 1 1 gold badge 1 1 silver badge 4 4 bronze badges just to be sure . have you tried selecting the "All files" option from the drop down above the OK Button ? Default is .bak,.trn. Pehaps the extension of the file is not .bak All the security permission changes you are doing must be done on the parent directory instead which is containing the *.bak file and not the bak file itself. In your case, the bak file is present in root of C:` drive so you will have to make permission changes on the C:` drive which is containing your bak file. Changing permissions on `C:` drive root is not considered a good practice as it is usually the boot drive. So, a much safe approach would be to create a folder in C:\ drive, move your bak file to the new folder and change the security permissions of the new folder instead.

4 Answers 4

You also have to enable permissions to the folder where the file is located. SSMS first needs to browse the folder, then to read the file.

In your case, SQL server tries to access the folder using NT Service\MSSQLSERVER account, so permissions should be granted to that account, no need to give more permissions (to everyone).

Also try below if above doesn't help:

  • close/open SSMS
  • move the file from root to some folder and grant permissions to that folder
  • use TSQL script to restore the database instead of SSMS


19.7k 16 16 gold badges 135 135 silver badges 191 191 bronze badges 2,776 1 1 gold badge 8 8 silver badges 15 15 bronze badges I gave Read & execute , List folder contents , and Read permissions to <localhostComputer>\Users user group and then it worked for me. Giving permissions to NT Service\MSSQLServer was equally helpful. Giving same access permissions to built-in Everyone user also helps the same way. For named SQL server instance the service account is of format NT Service\MSSQL$<SqlServerInstancename>

I had the same issue. I get to know that it was a a permissions issue.

Here are the following steps to solve this problem

Go to Control panel > Administrative Tools > Services double click on the services. copy the log on account name of sql service as shown in the picture.


Go to your backup folder and right click and select properties. Follow the steps as shown in picture. After clicking on edit you will get new window.



Paste here the Log on account name of sql service account which you had copied earlier. then Click on check name button.



Select MSSQLSERVER then click ok.

Now you will get your sql server account name in security tab.

Select sql server account name that and in permission box select Allow in all check boxes(I added Full Control) then click apply.

Читайте также: