Не вдається відкрити резервний пристрій. Помилка операційної системи 5


139

Нижче наведено запит, який я використовую для резервного копіювання (створення а .bak) моєї бази даних.

Однак, коли я його запускаю, я завжди отримую це повідомлення про помилку:

Повідомлення 3201, Рівень 16, стан 1, рядок 1
Не вдається відкрити резервний пристрій "C: \ Користувачі \ Ме \ Настільний \ Резервне копіювання \ MyDB.Bak". Помилка операційної системи 5 (доступ заборонено.)

Повідомлення 3013, Рівень 16, Стан 1, Рядок 1
БЕЗПЕКА БАКУПАЦІЇ закінчується аномально.

Це мій запит:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';

Ну, повідомлення про помилку досить зрозуміле, чи не так? Яким користувачем працює програма? Чи існує файл Bak? Ви можете отримати доступ до нього вручну?
Pekka

1
Чи слід вважати, що це для SQL Server із шляху до файлу, оскільки ви не помістили продукт у теги чи заголовок?
Powerlord

Мені вдалося запустити цей запит, перш ніж переформатувати ноутбук, якщо він допоможе. Це SQL Server 2008, і я працюю адміністратором. Файлу Bak не існує, оскільки я перебуваю в процесі його створення за допомогою цього запиту.
Смайлик

@Smiley Face: Ви повинні прочитати файл SQL через локальну, а не мережу. Тож це означає, що вам доведеться спочатку перемістити файл SQL з мережі на локальний диск і відновити його.
mrjimoy_05

Відповіді:


235

Так, я щойно забив цей.

Подивіться у службі Windows. Пуск> Адміністрація> Послуги

Знайдіть Сервіс у списку під назвою: SQL Server (MSSQLSERVER) шукайте стовпець "Увійти як" (потрібно додати його, якщо його у списку немає).

Це той обліковий запис, який потрібно надати дозволу до каталогу, клацнути правою кнопкою миші в Explorer (Властивості)> Акції (І Безпека)

ПРИМІТКА . Не забудьте надати дозволи на фактичний каталог І на спільну доступність, якщо ви переходите по мережі.

Застосуйте та чекайте, коли дозволи будуть пропонуватись, спробуйте створити резервну копію ще раз.

ПРИМІТКА 2 : якщо ви створюєте резервну копію по всій мережі і ваш SQL працює як "Локальна служба", значить, у вас виникли проблеми ... Ви можете спробувати призначити дозволи, або може бути простіше зробити локальну резервну копію та xcopy за межами SQL Server ( через годину).

ПРИМІТКА 3. Якщо ви працюєте як мережевий сервіс, то SOMETIMES віддалений апарат не розпізнає мережеву послідовність на вашому SQL Server. Якщо це так, вам потрібно додати дозволи для власне комп'ютера, наприклад. MyServer $.


20
Дозволи / add / Advanced не знайшли користувача у списку, але я вставив у "NT Service \ MSSQLSERVER", і він працював як чемпіон.
Позначте

3
Чи додає дозвіл "всі" до папки це?
DevDave

3
Залежить, якщо це справді громадський неаутентифікований, то так. Якщо це "будь-яка автентифікована", то МІСЦЕВОГО ОБСЛУГОВУВАННЯ на віддаленій машині, як правило, не кваліфікується ... але ви дійсно хочете надати доступ усім, для нас це майже кривдний злочин.
Робін Вессі

1
Не працювало для мене, і я просто створюю резервну копію до C: \ temp \. Екран дозволів папок просто не розпізнає вхід, використовуваний службою NT Service \ MSSQLSERVER , навіть коли вставляти як запропоновано @Mark A. Чи є хороший альтернативний рахунок для використання цієї послуги?
MGOwen

8
Працювало для мене, чудове рішення! Я використовую SQL Server Express 2014, тому вам потрібно буде дати дозвіл на запис "NT Service \ MSSQL $ SQLEXPRESS".
mikhail-t

11

Перейдіть до папки сервера SQL у меню "Пуск" та натисніть інструменти конфігурації. Виберіть менеджер конфігурації SQL Server. На сервісах SQL-сервера в потрібному екземплярі змініть (Увійти як) на локальну систему


7

В обліковому записі служби SQL Server немає дозволу на запис у папку C:\Users\Kimpoy\Desktop\Backup\


22
як я можу дати дозволу облікового запису служби SQL Server отримати доступ до цієї папки? :)
Смайлик

6

У мене ця проблема була і нещодавно, однак я виконував завдання резервного копіювання з сервера A, але база даних, яка створюється, створювалася на сервері B, до спільного доступу до файлів на сервері C. Коли агент на сервері A повідомляє серверу B запустити резервну копію t Команда -sql, її власне обліковий запис служби, під яким працює sql на сервері B, який намагається записати резервну копію на сервер C.

Пам'ятайте лише, що його сервісний рахунок сервера sql, який виконує фактичну команду BACKUP DATABASE, - це те, що потребує привілеїв у файловій системі, а не в агенті.


4

Я просто переживав це сам. Я переконався, що мій користувач для входу в MSSQLSERVER мав, full accessале це все ще викликало проблеми. Це спрацювало лише один раз, коли я перемістив пункт призначення до кореня C. Що ще важливіше з папки користувача (хоча я мав частку з повними дозволами - навіть спробував "Усі" як тест).

Я не знаю, чи вважаю я свою проблему "виправленою", проте вона "працює".

Просто FYI для інших користувачів, які натрапляють на цю тему.


1
Я думаю, що це спричинено доменами підприємств, у яких користувацькі шляхи перебувають на мережевих накопичувачах, тому користувачі отримують доступ до них прозоро, незалежно від того, на якій машині вони входять. Такі, як ця ситуація: superuser.com/a/730519
Бон

@Bon Дякую! Це розібрало проблему для мене. Шлях, по якому у мене був файл резервної копії, насправді був мережевим шляхом.
JMM

4

Я зіткнувся з тією ж проблемою і з SQL Express 2014 SP1 в Windows 10.

Рішення, яке працює

  1. Відкрийте Сервіс, ввівши Служби
  2. Знайдіть і відкрийте SQL-сервер (SQLExpress)
  3. Перейдіть на вкладку LogOn
  4. Виберіть локальний обліковий запис системи (також встановіть прапорець Дозволити службам взаємодіяти з робочим столом)
  5. Натисніть кнопку ОК. Припиніть послугу. Перезапустіть службу.
  6. Проблема вирішена

3

Для того, щоб дізнатися, якому користувачеві потрібно надати дозвіл на процес відновлення, ви можете виконати наступні дії:

Вам потрібно зайти на ваш сервер, де встановлено SQL Server. Знайдіть менеджер конфігурацій SQL Server

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

Далі вам потрібно перейти до "Послуги SQL Server"

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

Під вашим екземпляром SQL Server (MSSQLSERVER) буде обліковий запис зі стовпцем "Вхід як", у моєму випадку це NT Service \ MSSQLSERVER .

Це той обліковий запис, який потрібно додати на вкладці Безпеки вашого джерела.

Скажімо, ваш файл резервної копії присутній у папці "D: \ Shared", тоді вам потрібно надати такі дозволи:

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


2

У мене було подібне питання. Я додав дозволи на запис до самого файлу .bak та до моєї папки, в яку я писав резервну копію для користувача мережі NETWORK SERVICE. Щоб додати дозволи, просто клацніть правою кнопкою миші файл, який ви хочете змінити, виберіть вкладку безпеки та додайте туди відповідних користувачів / дозволів.


1
що ви маєте на увазі під відповідним?
Steam

2

Ось що я зробив, щоб обійти проблему.

1) Перейти до резервного копіювання

2) Видаліть цільовий файл-шлях до диска

3) Клацніть на Додати

4) У імені файлу: прапорець вручну введіть ім’я резервної копії після .. \ резервного копіювання, як нижче, де Yourdb.bak - це резервне ім'я бази даних

C: \ програмні файли \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ резервне копіювання \ yourdb.bak

5) Натисніть кнопку ОК

Сподіваюся, це допомагає!


2

Однією з причин, чому це трапляється, є те, що ви запускаєте службу MSSQLSERVER не використовуючи локальну систему. Щоб виправити цю проблему, виконайте наступні дії.

  1. Відкрити запуск за допомогою Windows + R
  2. Введіть services.msc і відкриється діалогове вікно послуг
  3. Знайти SQL Server (MSSQLSERVER)
  4. Клацніть правою кнопкою миші та натисніть на властивості.
  5. Перейдіть на вкладку Увійти
  6. Виберіть локальний обліковий запис системи та натисніть "Застосувати" та "ОК"
  7. Клацніть посилання "Стоп" на лівій панелі, вибравши "SQL Server (MSSQLSERVER)" і запустіть його ще раз, повністю припинившись.
  8. Насолоджуйтесь резервним копієм.

Сподіваюся, це допоможе вам добре, як це зробило і мені. Ура!


1

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

BACKUP DATABASE AcinsoftDB
TO DISK = 'E:\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';

1

SQL Server не в змозі отримати доступ (записати) резервну копію у вказане місце.

Спочатку потрібно перевірити обліковий запис служби, на якому працює сервер Sql. Це можна зробити за допомогою менеджера конфігурації або Services.msc.

або

Використовуйте запит нижче:

SELECT  DSS.servicename,
    DSS.startup_type_desc,
    DSS.status_desc,
    DSS.last_startup_time,
    DSS.service_account,
    DSS.is_clustered,
    DSS.cluster_nodename,
    DSS.filename,
    DSS.startup_type,
    DSS.status,
    DSS.process_id FROM    sys.dm_server_services AS DSS;

Тепер подивіться на стовпчик service_account і запишіть його.

Перейдіть до місця, де ви намагаєтесь зробити резервну копію. У вашому випадку: C: \ Users \ Me \ Desktop \ Резервне копіювання

Клацніть правою кнопкою миші -> Властивості -> Захист ->

Додайте обліковий запис служби та надайте дозволи на читання / запис. Це вирішить проблему.


0

У мене був той самий випуск, і URL-адреса, яка знаходиться нижче, дійсно допомогла мені.

Це також може допомогти вам.

http://blog.sqlauthority.com/2011/04/13/sql-server-fix-error-msg-3201-level-16-cannot-open-backup-device-operating-system-error-5access-is- відмовлено /


6
Спробуйте відповісти на запитання, пояснюючи, як допомогла вам стаття.
Алі Самій

0

Повідомлення 3201, Рівень 16, стан 1, рядок 1 Не вдається відкрити резервний пристрій "C: \ Резервне копіювання \ Пригоди_20120720_1024AM.trn". Помилка операційної системи 5 (доступ заборонено.) Msg 3013, рівень 16, стан 1, рядок 1 BOGUP LOG закінчується аномально.

Я перевірив папку резервного копіювання на диску C, чи має новий обліковий запис служби дозвіл на повний контроль чи ні? Я зрозумів, що обліковий запис служби "Test \ Kiran" не має дозволу безпеки повного контролю.

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

  1. Перейдіть на диск C, клацніть правою кнопкою миші на папці резервного копіювання.
  2. Виберіть вкладку Безпека.
  3. Натисніть кнопку Редагувати, відкриється нове вікно.
  4. Натисніть кнопку Додати і введіть тест-акаунт користувача і натисніть кнопку перевірити ім'я, це підтвердить, чи введений користувач існує чи ні, якщо він існує, він відобразить користувача у вікні, виберіть ОК.
  5. Установіть введене ім’я користувача та встановіть прапорець Повний контроль під дозволом.

0

Перевірте доступ до дисків. Спочатку створіть одну папку та перейдіть до властивостей папки,

Ви можете знайти вкладку безпеки, натисніть на цю перевірку, чи має ваш ідентифікатор користувача доступ чи ні.

якщо не вдалося знайти свій ідентифікатор, натисніть додавання та вкажіть ім’я користувача з повним доступом.


0

Поділіться цією папкою та використовуйте шлях UNC, наприклад: \ pc \ backups \ mydb.bak

Тоді Ви можете припинити ділитися.

Не дуже елегантний, але він вирішує всі проблеми з дозволами (Вам потрібно дати дозволи, щоб поділитися також, як було сказано вище)


0

У мене виникла ця проблема, коли файл .BAK тимчасово зберігався у папці, зашифрованій BitLocker. Він зберігав шифрування після його переміщення в іншу папку.

Обліковий запис NETWORK SERVICE не зміг розшифрувати файл і надіслав це ретельно інформативне повідомлення про помилку.

Видалення шифрування BitLocker (знявши позначку "Шифрувати вміст для захисту даних" у властивостях файлу) у файлі .BAK вирішило проблему.


0

У мене така ж помилка. Наступні зміни допомогли мені виправити це.

Мені довелося перевірити Менеджер сервера-> Інструмент-> Послуги та знайти користувача (стовпець "Увійти як") для сервісу: SQL Server (SQLEXPRESS).

Я зайшов у локальну папку (C: \ Users \ Me \ Desktop \ Backup) і додав "NT Service \ MSSQL $ SQLEXPRESS" як користувач, щоб дати дозволи на запис.


0

Привіт, вам потрібно змінити запит на:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'

до

BACKUP DATABASE AcinsoftDB
TO DISK = N'C:\Users\Me\Desktop\Backup\MyDB.Bak'

Ви повинні додати N перед тим, як шлях працює для мене.


0

У моєму випадку я забув назвати файл резервної копії, і він продовжував давати мені ту саму помилку дозволу: /

TO DISK N'{path}\WRITE_YOUR_BACKUP_FILENAME_HERE.bak'

0

Я вирішив ту ж проблему, виконавши наступні 3 кроки:

  1. Я зберігаю свій файл резервного копіювання в іншій папці, яка працювала правильно.
  2. Перегляньте різні вкладки безпеки у двох папках (як зображено нижче).
  3. Редагувати дозвіл у папці вкладки безпеки, яка не працює належним чином.

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

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