Welche Mindestberechtigungen sind erforderlich, um administrative Aufgaben für die Systemdatenbank auszuführen?
Frage
Welche Mindestberechtigungen sind erforderlich, um administrative Aufgaben für die BarTender Systemdatenbank in BarTender 2019 und neuer durchzuführen?
Antwort
Serverrolle: dbcreator und Datenbankrolle: db_owner sind die minimal erforderlichen Berechtigungen, um alle administrativen Aufgaben in der Administrationskonsole für die BarTender Systemdatenbank auszuführen.
Hier ist eine Übersicht, welche Berechtigungen für welche Aufgaben in der Administrationskonsole benötigt werden:
| Aktion/Vorgehen | Mindestberechtigungen |
| Datenbankgröße anzeigen | Datenbankberechtigung: Datenbankstatus anzeigen |
| Datenbank sichern |
Datenbankberechtigung: Datenbank sichern Das Verzeichnis, in dem das Backup gespeichert wird, muss existieren, und der SQL Server-Dienst benötigt Lese-/Schreibrechte für dieses Verzeichnis. |
| Datenbank wiederherstellen |
Serverrolle: dbcreator Datenbankrolle: db_owner |
| Wartung jetzt ausführen |
Datenbankberechtigungen: Connect, delete, execute, insert, select, update, Datenbank sichern (wenn das Kontrollkästchen „Gelöschte Datensätze archivieren“ aktiviert ist) |
| Alle Datensätze jetzt löschen |
Datenbankberechtigungen: Connect, delete, execute, insert, select, update, Datenbank sichern (wenn das Kontrollkästchen „Gelöschte Datensätze archivieren“ aktiviert ist) Datenbankrolle: db_ddladmin |
Allerdings gibt es derzeit ein bekanntes Problem, das dazu führt, dass das Ausführen der Wartung fehlschlägt, selbst wenn die richtigen Berechtigungen gesetzt sind, sofern der ausführende Benutzer nicht die sysadmin-Rolle besitzt. Die Fehlermeldung sieht etwa so aus:
Stored Procedure: sp_updatestats Failed; Inner Message: User does not have permission to perform this action.
Processed 584 pages for database 'SystemDB', file 'SystemDB' on file 1.
Processed 1 pages for database 'SystemDB', file 'SystemDB_log' on file 1.
BACKUP DATABASE successfully processed 585 pages in 0.091 seconds (50.217 MB/sec).
Dies ist ein bekanntes Problem mit SQL Server. Eine der gespeicherten Prozeduren, die bei der Wartung verwendet werden, 'SpDeleteRecords', ruft eine SQL Server-"Builtin"-Prozedur namens 'sp_updatestats' auf. Dies dient dazu, die Abfrageleistung nach dem Löschen der Datensätze zu verbessern.
Leider gibt es aktuell einen Fehler in SQL Server, der dazu führt, dass diese Prozedur fehlschlägt, obwohl laut Microsoft-Dokumentation der Datenbankbesitzer (dbo) die Berechtigung zum Ausführen hat.
Eine mögliche Lösung für Kunden ist, die gespeicherte Prozedur 'SpDeleteRecords' (über SQL Server Management Studio) wie folgt zu ändern:
Erstellen Sie ein ALTER-Skript für 'SpDeleteRecords', indem Sie im linken Bereich des SQL Server Management Studios unter "IhreDatenbank\Programmability\Stored Procedures" mit der rechten Maustaste auf dbo.SpDeleteRecords klicken und "Script Stored Procedure as ALTER to > New Query Editor Window" auswählen.
Fügen Sie der ALTER-Zeile des Skripts "with execute as 'dbo'" wie folgt hinzu:
ALTER PROC [dbo].[SpDeleteRecords](@pastUtcTicks bigint, @categories nvarchar(1024)) with execute as 'dbo'
Führen Sie dieses Skript mit F5 oder dem "! Ausführen"-Button in der Symbolleiste aus.
Dadurch wird 'SpDeleteRecords' gezwungen, unter den Anmeldedaten des Datenbankbesitzers ausgeführt zu werden. Nachdem Sie die gespeicherte Prozedur geändert haben, versuchen Sie die Wartung erneut (mit den oben genannten minimalen Berechtigungen) und es sollte funktionieren.
Weitere Informationen (nur für internen Gebrauch)
Siehe DEVQ-4363 und BUG-2270
Früher oder später werden wir vermutlich Beschwerden erhalten, warum eine bestimmte Serverrolle oder Datenbankberechtigung vergeben werden muss und dass dies ein Sicherheitsrisiko darstellt (wie z. B. db_owner). Tatsächlich habe ich diese Frage heute von einem Kunden erhalten und wie folgt beantwortet:
Statt das Ganze aus Sicht der Datenbankrolle des SQL Server-Benutzers zu betrachten, würde ich es eher so sehen:
- Ist das Passwort für das SQL Server-Konto, das von der BarTender Systemdatenbank verwendet wird, komplex und damit sicher?
- Wer in Ihrem Unternehmen kennt / hat Zugriff auf dieses Passwort?
Die Datenbankberechtigung db_owner ist aus Sicht eines SQL Server-Administrators bereits ein Sicherheitsrisiko, aber letztlich ist entscheidend, wer Zugriff auf das Passwort für dieses SQL Server-Konto hat und wie komplex das Passwort ist.