Поэтому мы уже некоторое время экспериментируем с Veeam Backup & Replication. Мы настраиваем выделенную виртуальную машину для Veeam Backup Server, которая выполняет ежедневное резервное копирование всех компонентов нашей инфраструктуры. Мы еще не приобрели лицензию, поэтому мы тестируем именно версию Community (версия 11а сборка 11.0.1.1261 P20220302)
У нас есть несколько виртуальных машин с экземплярами SQL Server, содержащими базы данных. Мы используем опцию обработки приложений Veeam для резервного копирования баз данных и включения их в файл резервной копии.
Однако мы сталкиваемся с проблемой, когда пытаемся выполнить восстановление баз данных из файла резервной копии, будь то на машине Veeam Backup Server или другой локальной машине. Мы выполняем восстановление элемента приложения, как описано в Документация Veeam B&R затем выполните шаги для публикация данных на локальный (промежуточный) SQL Server с помощью Veeam SQL Explorer. Мы пытались опубликовать базу данных, восстановить файл .BAK или даже напрямую сохранить файлы MDF и LDF. Все операции завершаются с ошибкой из-за отсутствия разрешений (см. журналы Veeam SQL Explorer ниже).
Скриншот ошибки
04.11.2022 00:17:32 21 (8876) Подключение к SQL Server localhost\SQL2019 с использованием проверки подлинности Windows (имя пользователя: WIN-KB0LJQ6QU6L\Administrator)...
04.11.2022 00:17:32 21 (8876) Соединение успешно завершено.
04.11.2022 00:17:32 21 (8876) Проверка совместимости версии базы данных (сервер: Microsoft SQL Server 2014, версия базы данных: 782)...
04.11.2022 00:17:32 21 (8876) Целевой сервер (localhost\SQL2019) определяется как Microsoft SQL Server 2019 (версия: 904).
04.11.2022 00:17:32 21 (8876) Подключение к SQL Server localhost\SQL2019 с использованием проверки подлинности Windows (имя пользователя: WIN-KB0LJQ6QU6L\Administrator)...
04.11.2022 00:17:32 21 (8876) Подключение к SQL Server localhost\SQL2019 с использованием проверки подлинности Windows (имя пользователя: WIN-KB0LJQ6QU6L\Administrator)...
04.11.2022 00:17:32 21 (8876) Проверка разрешений учетной записи для сервера "localhost"...
04.11.2022 00:17:32 21 (8876) Проверка успешно завершена.
04.11.2022 00:17:33 16 (9136) Публикация базы данных...
04.11.2022 00:17:33 16 (9136) Идентификатор точки восстановления: 3147eb18-d76a-47f1-ab4c-ec5a67dd81f1
04.11.2022 00:17:33 16 (9136) SQL-сервер: localhost\SQL2019
04.11.2022 00:17:33 16 (9136) Имя базы данных: bigsoft_33o_vide
04.11.2022 00:17:33 16 (9136) Подключение к SQL Server localhost\SQL2019 с использованием проверки подлинности Windows (имя пользователя: WIN-KB0LJQ6QU6L\Administrator)...
04.11.2022 00:17:34 17 (11180) Получение сеансов мгновенного восстановления...
04.11.2022 00:17:34 17 (11180) Новое значение USN: 5113
04.11.2022 00:17:34 17 (11180) Загружено 0 сеансов мгновенного восстановления
04.11.2022 00:17:34 17 (11180) Загрузка баз завершена
04.11.2022 00:17:37 19 (9280) Получение сеансов мгновенного восстановления...
04.11.2022 00:17:37 19 (9280) Новое значение USN: 5114
...
04.11.2022 00:18:05 16 (9136) Ошибка публикации базы данных
04.11.2022 00:18:05 16 (9136) Ошибка: сбой метода с непредвиденным кодом ошибки 3.
04.11.2022 00:18:05 16 (9136) Тип: System.InvalidOperationException
04.11.2022 00:18:05 16 (9136) Стек:
04.11.2022 00:18:05 16 (9136) в System.Security.AccessControl.NativeObjectSecurity.CreateInternal (ResourceType resourceType, Boolean isContainer, String name, SafeHandle handle, AccessControlSections includeSections, Boolean createByName, ExceptionFromErrorCode exceptionFromErrorCode, Object exceptionContext)
в System.Security.AccessControl.FileSystemSecurity..ctor (логическое значение isContainer, строковое имя, AccessControlSections includeSections, логическое значение isDirectory)
в System.Security.AccessControl.FileSecurity..ctor(String fileName, AccessControlSections includeSections)
в System.IO.FileInfo.GetAccessControl(AccessControlSections includeSections)
в Veeam.Engine.Security.FileAccess.GetAccessControl(строковый путь, разделы AccessControlSections)
в Veeam.Engine.Security.FileSystemSecurity.HasFileAccess(String accountName, String path)
в Veeam.Engine.FileSystem.LocalAccessChecker.GrantFileAccess(String filePath)
в Veeam.SQL.Core.Extensions.AccessCheckerExtension.CheckDatabaseFilesAccess(IAccessChecker accessChecker, IDatabaseFiles databaseFiles, String permissionSourceFolder)
в Veeam.SQL.Restore.Publish.RestorePointDatabasePublisher.Publish (брокер ISqlBroker, ISqlConnectProvider sqlConnectProvider, конфигурация IPublishConfig, логическое значение isClustered, наблюдатель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.DatabasePublisher.Publish(ISqlBroker sqlBroker, ISqlConnectProvider sqlConnectProvider, конфигурация IPublishConfig, наблюдатель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.DatabasePublisher.Publish(ISqlConnectProvider sqlConnectProvider, конфигурация IPublishConfig, наблюдатель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.DatabasePublisher.Publish (конфигурация IPublishConfig, обозреватель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.LoggedDatabasePublisher.Publish (конфигурация IPublishConfig, наблюдатель ISqlActionsObserver, CancellationToken ct)
04.11.2022 00:18:06 1 (6504) Ошибка публикации базы данных
04.11.2022 00:18:06 1 (6504) Ошибка: сбой метода с непредвиденным кодом ошибки 3.
04.11.2022 00:18:06 1 (6504) Тип: System.InvalidOperationException
04.11.2022 00:18:06 1 (6504) Стек:
04.11.2022 00:18:06 1 (6504) в System.Security.AccessControl.NativeObjectSecurity.CreateInternal (ResourceType resourceType, Boolean isContainer, Строковое имя, дескриптор SafeHandle, AccessControlSections includeSections, Boolean createByName, ExceptionFromErrorCode exceptionFromErrorCode, Object exceptionContext)
в System.Security.AccessControl.FileSystemSecurity..ctor (логическое значение isContainer, строковое имя, AccessControlSections includeSections, логическое значение isDirectory)
в System.Security.AccessControl.FileSecurity..ctor(String fileName, AccessControlSections includeSections)
в System.IO.FileInfo.GetAccessControl(AccessControlSections includeSections)
в Veeam.Engine.Security.FileAccess.GetAccessControl(строковый путь, разделы AccessControlSections)
в Veeam.Engine.Security.FileSystemSecurity.HasFileAccess(String accountName, String path)
в Veeam.Engine.FileSystem.LocalAccessChecker.GrantFileAccess(String filePath)
в Veeam.SQL.Core.Extensions.AccessCheckerExtension.CheckDatabaseFilesAccess(IAccessChecker accessChecker, IDatabaseFiles databaseFiles, String permissionSourceFolder)
в Veeam.SQL.Restore.Publish.RestorePointDatabasePublisher.Publish (брокер ISqlBroker, ISqlConnectProvider sqlConnectProvider, конфигурация IPublishConfig, логическое значение isClustered, наблюдатель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.DatabasePublisher.Publish(ISqlBroker sqlBroker, ISqlConnectProvider sqlConnectProvider, конфигурация IPublishConfig, наблюдатель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.DatabasePublisher.Publish(ISqlConnectProvider sqlConnectProvider, конфигурация IPublishConfig, наблюдатель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.DatabasePublisher.Publish (конфигурация IPublishConfig, обозреватель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.LoggedDatabasePublisher.Publish (конфигурация IPublishConfig, наблюдатель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.AuditedDatabasePublisher.Publish (конфигурация IPublishConfig, наблюдатель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.StoringDatabasePublisher.Publish (конфигурация IPublishConfig, наблюдатель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Restore.Publish.PublishService.Publish (конфигурация IPublishConfig, обозреватель ISqlActionsObserver, CancellationToken ct)
в Veeam.SQL.Explorer.Async.Publish.AsyncPublishDatabaseTask.Run(наблюдатель IProcessObserver, CancellationToken ct)
в Veeam.Presentation.Async.VisualAsyncTask.Execute(наблюдатель IProcessObserver)
Обратите внимание, что Veeam был установлен как локальная системная учетная запись на Veeam Backup Server, а пользователь, вошедший в систему с использованием аутентификации Windows, входит в группу администраторов.Более того, на нашем локальном компьютере мы импортировали резервную копию и протестировали запуск всего от имени пользователя «Администратор» в Windows Server 2019 (службы Veeam, учетная запись пользователя Veeam и служба sql explorer), но проблема с разрешениями остается.
Этот вопрос адресован любому, кто хорошо знаком с Veeam или имеет представление об общем сообщении об ошибке и о том, как его обойти, предоставив полные права доступа в Windows.