.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.

Знімок екрана

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

Додавання облікового запису послуги не так просто, як здається. Ось що для мене спрацювало. (Сервер 2012 R2)

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

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

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

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

Після додавання дозволів (я додав Повний контроль, щоб відповідати папці резервного копіювання за замовчуванням.) Та перезапустив консоль управління 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 сервері, а в дозволі Windows для папки. Ви повинні додати відповідний дозвіл до папки, куди ви скопіювали файл .bak (я думаю, System Networkроль).

Найпростіше рішення - перемістити файл у папку резервного копіювання за замовчуванням у файлах програми. На нього є весь необхідний дозвіл. Для 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, то вам слід написати RESTORE DATABASEкоманду замість того, щоб покластись на незграбний графічний інтерфейс, щоб знайти її для вас. Хто знає, який код відбувається там і чому він не може знайти файл - вибачте, що у мене є лише вирішення, а не рішення.

Також переконайтесь, що файл насправді something.bak, а не something.bak.txt (Windows може "корисно" приховувати від вас розширення. Я ненавиджу цю поведінку за замовчуванням.)


1

Це сталося зі мною сьогодні на моїй скриньці для розробників. У моєму випадку обліковий запис служби мав дозволи на папку, але мій обліковий запис цього користувача не був. Як тільки я надав дозволи на свій обліковий запис у папці, я зміг переглянути файли .BAK.

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