MSSQL Error 3201: Cannot open backup device — Ошибки ОС и права доступа
Ошибка 3201 указывает на невозможность ядра SQL Server открыть файл физического устройства резервного копирования (локальный диск, сетевая папка SMB или ленточный накопитель) из-за системной ошибки ввода-вывода или нехватки прав доступа.
- Сообщение:
Cannot open backup device '%.*ls'. Operating system error %ls(Severity 16, State 1 to 3). - Спецификатор ОС:
Operating system error 5(Access is denied.)илиOperating system error 3(The system cannot find the path specified.). - Сбои выполнения регламентных планов обслуживания резервного копирования баз данных 1С.
- Отказ сохранения бэкапа на сетевую шару (UNC Path).
1. Анализ кода ошибки операционной системы
- OS Error 5 (Access is denied): Учетная запись службы SQL Server не имеет прав на создание/запись файлов в целевой каталог.
- OS Error 3 (The system cannot find the path specified): Указанный путь к папке не существует на сервере, либо не смонтирован диск.
- OS Error 32 (The process cannot access the file because it is being used by another process): Файл бэкапа заблокирован антивирусом или агентом внешнего резервного копирования.
- OS Error 112 (There is not enough space on the disk): Закончилось свободное место на диске назначения.
2. Назначение прав сервисному аккаунту SQL Server
Определите имя сервисной учетной записи службы MSSQL:
SELECT service_account FROM sys.dm_server_services WHERE servicename LIKE 'SQL Server (%';Предоставьте полные права (Full Control) сервисному аккаунту (например, NT Service\MSSQLSERVER или CORP\svc_sql) на папку бэкапов через PowerShell:
$Acl = Get-Acl "D:\Backups"
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("NT SERVICE\MSSQLSERVER", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl "D:\Backups" $Acl3. Настройка резервного копирования на сетевую папку (UNC Path)
Если бэкап выполняется на сетевой ресурс \\nas\share\backups:
- Служба SQL Server должна работать под доменной учетной записью (Domain User Account), а не под локальной
NT Service\...илиLocalSystem. - На сетевой папке (Share Permissions) и на уровне файловой системы (NTFS Permissions) доменному аккаунту службы должны быть выданы права Read / Change / Write.
4. Проверочный скрипт создания бэкапа
BACKUP DATABASE [YourDatabaseName]
TO DISK = N'D:\Backups\Test_Backup.bak'
WITH FORMAT, INIT, COMPRESSION, CHECKSUM, STATS = 10; Частые вопросы (FAQ)
Почему под моей учетной записью в проводнике бэкап пишется, а SQL Server выдает 'Access Denied'?
Операции BACKUP и RESTORE выполняются в контексте безопасности учетной записи службы SQL Server (Service Account), а не под вашей учетной записью Windows, под которой открыта SSMS.
Можно ли делать бэкап на подключенный сетевой диск (например, Z:\Backups)?
Нет. Сетевые диски (Mapped Network Drives), смонтированные в сессии пользователя, не видны службам Windows. Всегда используйте прямые UNC-пути вида \\ServerName\ShareName\Backup.bak.
Что делать при ошибке 'Operating system error 32' во время бэкапа?
Исключите расширение .bak из постоянного сканирования антивирусным ПО и проверьте, не пытается ли сторонний бэкапер читать файл в процессе его записи.
Как уменьшить размер создаваемого файла бэкапа?
Используйте встроенную компрессию ядра СУБД: добавьте параметр WITH COMPRESSION в команду BACKUP DATABASE или включите сжатие по умолчанию в параметрах сервера.