Puncte:1

Eroare la publicarea bazei de date Veeam SQL Server cu codul de eroare neașteptat 3

drapel jp

Așa că am experimentat de ceva vreme cu Veeam Backup & Replication. Configuram o mașină virtuală dedicată pentru Veeam Backup Server care realizează copii de rezervă zilnice ale tuturor componentelor infrastructurii noastre. Nu am achiziționat încă o licență, așa că aceasta este ediția comunitară pe care o testăm (versiunea 11a build 11.0.1.1261 P20220302)

Avem câteva VM cu instanțe SQL Server care conțin baze de date. Folosim opțiunea de procesare a aplicației Veeam pentru a face backup la bazele de date și pentru a le include în fișierul de rezervă.

Cu toate acestea, ne confruntăm cu o problemă atunci când încercăm să efectuăm o restaurare a bazelor de date din fișierul de rezervă, fie că este pe mașina Veeam Backup Server, fie pe o altă mașină locală. Efectuăm restaurarea elementului aplicației așa cum este descris în Documentația Veeam B&R apoi parcurgeti pasii pentru publicarea datelor la serverul SQL local (proiectare) folosind Veeam SQL Explorer. Am încercat să publicăm baza de date, să restaurăm fișierul .BAK sau chiar să salvăm direct fișierele MDF și LDF. Toate operațiunile eșuează din lipsă de permisiuni (consultați jurnalele Veeam SQL Explorer mai jos).

Captură de ecran a erorii

11/04/2022 00:17:32 21 (8876) Conectarea la SQL Server localhost\SQL2019 folosind autentificare Windows (nume de utilizator: WIN-KB0LJQ6QU6L\Administrator)...
11/04/2022 00:17:32 21 (8876) Conexiunea s-a finalizat cu succes.
11/04/2022 00:17:32 21 (8876) Se verifică compatibilitatea versiunii bazei de date (server: Microsoft SQL Server 2014, versiunea bazei de date: 782)...
11/04/2022 00:17:32 21 (8876) Serverul țintă (localhost\SQL2019) este identificat ca Microsoft SQL Server 2019 (versiunea: 904).
11/04/2022 00:17:32 21 (8876) Conectarea la SQL Server localhost\SQL2019 folosind autentificare Windows (nume de utilizator: WIN-KB0LJQ6QU6L\Administrator)...
11/04/2022 00:17:32 21 (8876) Conectarea la SQL Server localhost\SQL2019 folosind autentificare Windows (nume de utilizator: WIN-KB0LJQ6QU6L\Administrator)...
11/04/2022 00:17:32 21 (8876) Se validează permisiunile de cont pentru serverul „localhost”...
04.11.2022 00:17:32 21 (8876) Validarea a fost finalizată cu succes.
04.11.2022 00:17:33 16 (9136) Se publică baza de date...
04.11.2022 00:17:33 16 (9136) ID punct de restaurare: 3147eb18-d76a-47f1-ab4c-ec5a67dd81f1
04.11.2022 00:17:33 16 (9136) Server SQL: localhost\SQL2019
04.11.2022 00:17:33 16 (9136) Nume bază de date: bigsoft_33o_vide
11/04/2022 00:17:33 16 (9136) Conectarea la SQL Server localhost\SQL2019 folosind autentificare Windows (nume de utilizator: WIN-KB0LJQ6QU6L\Administrator)...
04.11.2022 00:17:34 17 (11180) Obținerea sesiunilor de recuperare instantanee...
04.11.2022 00:17:34 17 (11180) Noua valoare USN: 5113
04.11.2022 00:17:34 17 (11180) Încărcate 0 sesiuni de recuperare instantanee
04.11.2022 00:17:34 17 (11180) Încărcarea bazelor de date finalizată
04.11.2022 00:17:37 19 (9280) Obținerea sesiunilor de recuperare instantanee...
04.11.2022 00:17:37 19 (9280) Noua valoare USN: 5114
...
04.11.2022 00:18:05 16 (9136) Publicarea bazei de date a eșuat
11/04/2022 00:18:05 16 (9136) Eroare: metoda a eșuat cu codul de eroare neașteptat 3.
04.11.2022 00:18:05 16 (9136) Tip: System.InvalidOperationException
04.11.2022 00:18:05 16 (9136) Stivă:
11/04/2022 00:18:05 16 (9136) la System.Security.AccessControl.NativeObjectSecurity.CreateInternal (ResourceType resourceType, Boolean isContainer, String name, SafeHandle handle, AccessControlSections, includeSectionFromDerControlBorole, createCotextFromDerCore excepție)
   la System.Security.AccessControl.FileSystemSecurity..ctor(Boolean isContainer, String name, AccessControlSections includeSections, Boolean isDirectory)
   la System.Security.AccessControl.FileSecurity..ctor(String fileName, AccessControlSections includeSections)
   la System.IO.FileInfo.GetAccessControl(AccessControlSections includeSections)
   la Veeam.Engine.Security.FileAccess.GetAccessControl (calea șirului, secțiunile AccessControlSections)
   la Veeam.Engine.Security.FileSystemSecurity.HasFileAccess(String accountName, String path)
   la Veeam.Engine.FileSystem.LocalAccessChecker.GrantFileAccess(String filePath)
   la Veeam.SQL.Core.Extensions.AccessCheckerExtension.CheckDatabaseFilesAccess(IAccessChecker accessChecker, IDatabaseFiles databaseFiles, String permissionSourceFolder)
   la Veeam.SQL.Restore.Publish.RestorePointDatabasePublisher.Publish(ISqlBroker broker, ISqlConnectProvider sqlConnectProvider, IPublishConfig config, Boolean isClustered, ISqlActionsObserver observator, CancellationToken observator)
   la Veeam.SQL.Restore.Publish.DatabasePublisher.Publish(ISqlBroker sqlBroker, ISqlConnectProvider sqlConnectProvider, IPublishConfig config, ISqlActionsObserver observator, CancellationToken ct)
   la Veeam.SQL.Restore.Publish.DatabasePublisher.Publish(ISqlConnectProvider sqlConnectProvider, IPublishConfig config, ISqlActionsObserver observator, CancellationToken ct)
   la Veeam.SQL.Restore.Publish.DatabasePublisher.Publish (configurație IPublishConfig, observator ISqlActionsObserver, CancellationToken ct)
   la Veeam.SQL.Restore.Publish.LoggedDatabasePublisher.Publish(IPublishConfig config, ISqlActionsObserver observator, CancellationToken ct)
11/04/2022 00:18:06 1 (6504) Publicarea bazei de date a eșuat
11/04/2022 00:18:06 1 (6504) Eroare: Metoda a eșuat cu codul de eroare neașteptat 3.
04.11.2022 00:18:06 1 (6504) Tip: System.InvalidOperationException
04.11.2022 00:18:06 1 (6504) Stivă:
11/04/2022 00:18:06 1 (6504) la System.Security.AccessControl.NativeObjectSecurity.CreateInternal (ResourceType resourceType, Boolean isContainer, String name, SafeHandle handle, AccessControlSections include ExceptionsFromErrorCoreException)
   la System.Security.AccessControl.FileSystemSecurity..ctor(Boolean isContainer, String name, AccessControlSections includeSections, Boolean isDirectory)
   la System.Security.AccessControl.FileSecurity..ctor(String fileName, AccessControlSections includeSections)
   la System.IO.FileInfo.GetAccessControl(AccessControlSections includeSections)
   la Veeam.Engine.Security.FileAccess.GetAccessControl (calea șirului, secțiunile AccessControlSections)
   la Veeam.Engine.Security.FileSystemSecurity.HasFileAccess(String accountName, String path)
   la Veeam.Engine.FileSystem.LocalAccessChecker.GrantFileAccess(String filePath)
   la Veeam.SQL.Core.Extensions.AccessCheckerExtension.CheckDatabaseFilesAccess(IAccessChecker accessChecker, IDatabaseFiles databaseFiles, String permissionSourceFolder)
   la Veeam.SQL.Restore.Publish.RestorePointDatabasePublisher.Publish(ISqlBroker broker, ISqlConnectProvider sqlConnectProvider, IPublishConfig config, Boolean isClustered, ISqlActionsObserver observator, CancellationToken observator)
   la Veeam.SQL.Restore.Publish.DatabasePublisher.Publish(ISqlBroker sqlBroker, ISqlConnectProvider sqlConnectProvider, IPublishConfig config, ISqlActionsObserver observator, CancellationToken ct)
   la Veeam.SQL.Restore.Publish.DatabasePublisher.Publish(ISqlConnectProvider sqlConnectProvider, IPublishConfig config, ISqlActionsObserver observator, CancellationToken ct)
   la Veeam.SQL.Restore.Publish.DatabasePublisher.Publish (configurație IPublishConfig, observator ISqlActionsObserver, CancellationToken ct)
   la Veeam.SQL.Restore.Publish.LoggedDatabasePublisher.Publish(IPublishConfig config, ISqlActionsObserver observator, CancellationToken ct)
   la Veeam.SQL.Restore.Publish.AuditedDatabasePublisher.Publish(IPublishConfig config, ISqlActionsObserver observator, CancellationToken ct)
   la Veeam.SQL.Restore.Publish.StoringDatabasePublisher.Publish (configurație IPublishConfig, observator ISqlActionsObserver, CancellationToken ct)
   la Veeam.SQL.Restore.Publish.PublishService.Publish (configurație IPublishConfig, observator ISqlActionsObserver, CancellationToken ct)
   la Veeam.SQL.Explorer.Async.Publish.AsyncPublishDatabaseTask.Run (observator IProcessObserver, CancellationToken ct)
   la Veeam.Presentation.Async.VisualAsyncTask.Execute (observator IProcessObserver)

Rețineți că Veeam a fost instalat ca cont de sistem local pe serverul de backup Veeam, iar utilizatorul conectat folosind autentificarea Windows se află în grupul de administrator.Mai mult, în mașina noastră locală am importat backup-ul și am testat rularea totul ca utilizator „Administrator” pe Windows Server 2019 (servicii Veeam, contul de utilizator Veeam și serviciul SQL Explorer), dar problema cu permisiunile rămâne.

Această întrebare se adresează oricărei persoane care este în mod special familiarizată cu Veeam sau oricui are o idee despre mesajul de eroare generic și despre cum să-l ocolească oferind permisiuni complete în Windows.

Puncte:1
drapel jp

După ce am contactat asistența, se pare că problema a fost că nu includeam directorul SQL Server DATA în backup-ul meu. Am crezut că Veeam va face asta pentru mine, deoarece mi-a permis să activez procesarea cererilor. Nu-mi amintesc să fi văzut niciun detaliu despre asta în documente, sau aș fi putut să-l ratez.

Acest lucru ar fi putut fi atenuat și prin selectarea întregului computer pentru backup sau făcând o copie de rezervă de volum a unității C. Aparent, este recomandat să salvați oricum mașinile complete pentru recuperare instantanee.

Toate erorile ambigue au dispărut prin simpla includere a directorului DATA.

Puncte:0
drapel us

Consultați Permisiunile necesare la:

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

Permisiuni minime pe mssql pentru Veeam Service Account pentru a efectua copii de rezervă:

Nivel motor: VEZI ORICE DEFINIȚIE, VEZI STAREA SERVERULUI

Nivel DB: master: db_backupoperator, db_datareader

msdb: db_backupoperator, db_datawriter, db_datareader

orice DB pe care doriți să faceți backup pentru jurnalele trn: db_backupoperator, db_denydatareader

De asemenea, contul dvs. de serviciu Veeam trebuie să facă parte din grupul de administrare local.

Pentru a putea efectua restaurări direct în mssql, este necesar rolul la nivel de motor dbcreator.

Pentru a configura acest lucru corect, va trebui să vă schimbați contul de serviciu Veeam cu un utilizator de domeniu.

Mod facil: Administrator de domeniu și Administrator de sistem pe SQL (dacă doriți să faceți backup și să restaurați și obiectele AD, puteți merge pe această cale imediat)

youcef nafa avatar
drapel jp
Acesta a fost primul meu gând, de aceea am reinstalat veeam ca administrator de domeniu, așa cum se spune în întrebarea mea. Am testat chiar și „sa” pentru conexiunea SQL și totul a eșuat. Problema a fost directorul de date SQL care lipsește din fișierul meu de rezervă.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.