none
SQL Server sichern mit Veeam RRS feed

  • Frage

  • Hallo an alle,

    ich benötige für das Backupsystem Veeam die passenden Rechte im SQL Server. 

    Die Herstellervorgaben habe ich umgesetzt. 

    Dennoch erhalte ich die Fehlermeldung:

    Skipping master: connection error: Code = 0x80040e09 Code meaning = IDispatch error #3081 Source = Microsoft OLE DB Provider for SQL Server Description = Die SELECT-Berechtigung wurde für das database_recovery_status-Objekt, mssqlsystemresource-Datenbank, sys-Schema, verweigert. COM error: Code: 0x80040e09

    Daraufhin habe ich den Sachverhalt recherchiert und bin auf folgende Seite gestoßen: 

    Link zur Seite

    Darin geht für mich hervor das der Benutzer min. Zugriff auf master oder tempdb haben muss, in dem er entweder owner der Datenbank ist (kommt nicht in Frage ;-) ) oder ALTER ANY DATABASE / VIEW ANY DATABASE (habe mich für VIEW ANY DATABASE entschieden) oder CREATE DATABASE Rechte besitzt. 

    Folgendes habe ich gemacht: 

    use [master]
    GO
    GRANT VIEW ANY DATABASE TO [DOMAINTEST\testaccount]
    GO

    Jedoch erhalte ich den Fehler weiterhin. Ziel ist es die Transaktion logs zu sichern mit Veeam. 

    Kann man diese nicht über die Master Datenbank sichern? Stehen die doch nur in der tempdb? Oder gibt es noch andere Denkfehler von mir?


    Mittwoch, 30. Oktober 2019 15:25

Alle Antworten

  • Ich habe auch den Account die Create Rechte auf die Datenbank Master gegeben. 

    use [master]
    GO
    GRANT CREATE DATABASE ON DATABASE::master TO [DOMAINTEST\testaccount]
    GO

    Mittwoch, 30. Oktober 2019 15:31
  • Hallo Toot!

    Versuche es doch mal mit db_backupoperator in der Datenbank, von der Du das Transaktionslog sichern willst.


    Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu

    Donnerstag, 31. Oktober 2019 06:54
    Beantworter
  • Hallo Christoph,

    danke für deine Antwort. Ich habe dem Account nun mehr Rechte(db_backupoperator) auf die Datenbank tempdb gegeben. 

    Jedoch erhalte ich jetzt folgenden Fehler:

    Die SELECT-Berechtigung wurde für das database_recovery_status-Objekt, mssqlsystemresource-Datenbank, sys-Schema verweigert

    Kannst du vielleicht auch hier helfen? 

    Dienstag, 5. November 2019 13:16
  • Ich habe dem Account nun mehr Rechte(db_backupoperator) auf die Datenbank tempdb gegeben. 

    Wieso denn auf die TempDB, die kann man gar nicht sichern? Du musst es für die anderen System- und Benutzerdatenbanken einrichten.

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Dienstag, 5. November 2019 13:36
  • Warum auf die tempdb? Die willst Du doch nicht sichern, oder?

    Das Recht benötigst Du für jede Datenbank, die Du sichern willst, z. B. auch die master.


    Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu

    Dienstag, 5. November 2019 13:36
    Beantworter
  • Hallo ihr zwei. In der tempdb ist doch das transaktionlog oder? Somit muss der account Zugriff darauf haben um diese zu sichern?!

    Wenn der Serviceaccount auf die internen dbs(zb. msdb) hat, sollte er doch alle dbs des Servers kennen oder? Es muss doch einen einfacheren Weg geben, als den Serviceaccount Rechte für jede einzelne DB zu geben. Das ufert schnell aus wenn DB´s dazukommen

    Mittwoch, 6. November 2019 07:55
  • Hallo Toot,

    alle Datenbanken haben ein eigenes Transaktionsprotokoll.

    Nur von Datenbanken, die nicht im SIMPLE-Modus gefahren werden, können  auch die Transaktionslogs gesichert werden. So findest Du heraus, welche Datenbanken es betrifft.

    Select name, recovery_model_desc
    from sys.databases
    order by recovery_model_desc, name;

    Ja, explizite Berechtigungsvergabe ist mühsam. Man könnte dies durch eine Prozedur automatisieren, oder dem Account serverweite Rechte geben. Damit bist Du aber ganz schnell wieder beim sysadmin.

    Warum ist das Backup-Recht so hoch angesiedelt? Jeder, der ein Backup ziehen kann, kann durch Transport auf einen anderen Server (auf dem er sysadmin ist) Zugriff auf alle Daten im Backup erhalten. 

    Hier noch ein etwas älterer Artikel von mir zu dem Thema: Sichern und Wiederherstellen von Datenbanken


    Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu


    Mittwoch, 6. November 2019 08:05
    Beantworter
  • Hallo Toot,

    VEEAM benötigt SYSADMIN-Privilegien für die Sicherung :(

    "To back up Microsoft SQL Server data, the following roles must be assigned:
    Administrator role on the target VM.
    Sysadmin role on the target Microsoft SQL Server."

    https://helpcenter.veeam.com/docs/backup/vsphere/required_permissions.html?ver=95u4

    Scheinbar reichen eben die "minimal permissions" wohl nicht aus, da auf die Systemresourcedb zugegriffen werden soll/will.

    "mssqlsystemresource"

    Die bekommst Du, wenn Du den VEEAM-Account in JEDER Datenbank als User hinzufügst! Ich stelle mir das gerade in einem "Hostel-System" vor, in dem Du nach der Anlage einer neuen Datenbank den VEEAM-Account noch hinzufügen musst!

    Oder aber ...

    GRANT VIEW DEFINITION ON DATABASE::<Name> TO VEEAM-Account;

    Weitere Hinweise zu den Berechtigungen für Metadaten findest Du hier:

    https://docs.microsoft.com/en-us/sql/relational-databases/security/metadata-visibility-configuration?view=sql-server-ver15

    Meine Empfehlung wäre, native Backups zu machen und den Drittanbieter lediglich die Sicherungsdateien zu sichern.


    Uwe Ricken (Blog | Twitter)
    Microsoft Certified Master - SQL Server 2008
    Microsoft Certified Solution Master - CHARTER Data Platform
    Microsoft Certified Solution Expert - Data Platform
    db Berater GmbH
    Microsoft SQL Server Blog (german only)


    Montag, 11. November 2019 12:44