Файл .bak не виден ни в одном каталоге в SSMS


46

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

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


Я собираюсь написать скрипт для восстановления, я просто хочу знать, что его вызывает. Это определенно .bak, а не .bak.txt или что-то еще.
Шон Лонг

Так вы можете просмотреть папку, в которой вы знаете, что файл находится, а он не появляется? Или вы не можете перейти к папке?
Аарон Бертран

Я могу просмотреть папку, но не вижу ни одного файла .bak. Я проверил разрешения пользователя, с которым я работаю в SSMS, он является локальным администратором, и файл не помечен как «скрытый» или что-то еще.
Шон Лонг

Можете ли вы опубликовать снимок экрана где-нибудь, показывающий вид Windows Explorer на папку и SSMS? Также объясните в вопросе процесс, который вы используете, чтобы добраться до этого шага.
Аарон Бертран

1
(Также обратите внимание, что учетная запись службы SQL Server также должна иметь разрешения, а не только пользователя SSMS. Хотя это не должно препятствовать тому, чтобы файлы .bak отображались в списке, прежде чем что-то с ними делать.)
Аарон Бертран

Ответы:


39

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

Скриншот

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

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

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

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

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

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

После добавления разрешений (я добавил полный доступ, чтобы соответствовать папке резервного копирования SQL по умолчанию) и перезапуска консоли управления SQL Server, я смог выбрать и восстановить файл резервной копии.


superuser.com/questions/248315/… рассказывает нам, как составить список учетных записей пользователей на компьютере. Для любой названной службы существует именованная sвиртуальная учетная запись NT Service\s, даже если служба не работает под этой учетной записью.
Тахир Хасан

2
Учетная запись, которую я должен был добавить, была NT Service\MSSQL$SQLSERVER2014, возможно, потому, что я назвал свой экземплярSQLSERVER2014
thinkOfaNumber

16

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

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

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

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

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


1
это помогло! :)
Питер Питлок

5

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

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

D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup

Это отличное решение, потому что никто не открывает потенциальные дыры в безопасности на своем компьютере, чтобы восстановить один файл.
Майкл Поттер

отлично работает, не нужно политики и прочее
Марин

3

Я также столкнулся с той же проблемой сегодня. Мне дали файл для восстановления, но он не был виден мне во время просмотра. Однако я смог получить доступ к файловой системе, но в мастере восстановления с помощью SQL Server management Studio.

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

Для деталей, пожалуйста, проверьте блог .


2

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

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


1

Это случилось со мной сегодня на моей коробке разработчика. В моем случае служебная учетная запись имела права доступа к папке, а моя учетная запись пользователя - нет. После того, как я предоставил разрешения учетной записи для папки, я смог видеть файлы .BAK.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.