Рейтинг:1

Сбой публикации базы данных Veeam SQL Server с непредвиденным кодом ошибки 3

флаг jp

Поэтому мы уже некоторое время экспериментируем с 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.

Рейтинг:1
флаг jp

После обращения в службу поддержки выяснилось, что проблема заключалась в том, что я не включил каталог DATA SQL Server в свою резервную копию. Я думал, что Veeam сделает это за меня, поскольку он позволил мне активировать обработку приложений. Я не помню, чтобы видел какие-либо подробности об этом в документах, или я мог пропустить это.

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

Все неоднозначные ошибки исчезли, просто включив каталог DATA.

Рейтинг:0
флаг us

См. Требуемые разрешения по адресу:

https://helpcenter.veeam.com/docs/backup/explorers/vesql_permissions.html?ver=110

Минимальные разрешения на mssql для сервисной учетной записи Veeam для выполнения резервного копирования:

Уровень двигателя: ПРОСМОТР ЛЮБОГО ОПРЕДЕЛЕНИЯ, ПРОСМОТР СОСТОЯНИЯ СЕРВЕРА

Уровень БД: мастер: db_backupoperator, db_datareader

msdb: db_backupoperator, db_datawriter, db_datareader

любая БД, которую вы хотите сделать резервной копией trn-logs: db_backupoperator, db_denydatareader

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

Чтобы иметь возможность выполнять восстановление непосредственно в mssql, требуется роль уровня движка dbcreator.

Чтобы настроить это должным образом, вам нужно изменить учетную запись службы Veeam на пользователя домена.

Простой режим: администратор домена и системный администратор на SQL (если вы хотите также создавать резервные копии и восстанавливать объекты AD, вы можете сразу пойти по этому пути)

youcef nafa avatar
флаг jp
Это была моя первая мысль, поэтому я переустановил veeam в качестве администратора домена, как указано в моем вопросе. Я даже проверил «sa» для SQL-соединения, и все потерпело неудачу. Проблема заключалась в том, что в моем файле резервной копии отсутствовал каталог данных SQL.

Ответить или комментировать

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