Keine Datenbanken im SQL Server Management Studio sichtbar

Keine Datenbanken im SQL Server Management Studio sichtbar

Ich versuche festzustellen, welche Datenbanken auf einem SQL-Server vorhanden sind.

Kann ich davon ausgehen, dass, wenn ich im Management Studio keine sehe, keine vorhanden sind?Dieser Artikelvon Microsoft scheint darauf hinzudeuten, dass ich eine bestimmte Datenbank nicht sehen kann, wenn ich keine Berechtigungen dafür habe.

Wenn der Aufrufer von sys.databases nicht der Besitzer der Datenbank ist und die Datenbank weder Master noch Tempdb ist, sind zum Anzeigen der entsprechenden Zeile mindestens die Berechtigungen ALTER ANY DATABASE oder VIEW ANY DATABASE auf Serverebene oder die Berechtigung CREATE DATABASE in der Masterdatenbank erforderlich. Die Datenbank, mit der der Aufrufer verbunden ist, kann immer in sys.databases angezeigt werden.

Antwort1

Öffnen Sie SQL Server Management Studio (SSMS) und führen Sie den folgenden Code aus, um zu sehen, über welche Serverrollenmitgliedschaft Sie verfügen:

SELECT spr.name
    , sp.name
FROM master.sys.server_principals sp
    LEFT JOIN master.sys.server_role_members srm ON sp.principal_id = srm.member_principal_id
    LEFT JOIN master.sys.server_principals spr ON srm.role_principal_id = spr.principal_id
WHERE sp.sid = SUSER_SID();

Die Ergebnisse sehen ungefähr so ​​aus:

╔═══════════╦═════════════╗
║ Rollenname ║ Mitgliedsname ║
╠═══════════╬═════════════╣
║ Systemadministrator ║ MeinBenutzer ║
╚═══════════╩═════════════╝

Wenn das Ergebnis sysadminin der ersten Spalte angezeigt wird, verfügen Sie über die höchste Berechtigungsstufe, die unter SQL Server verfügbar ist. Wenn Sie den folgenden Code in einem „Neuen Abfragefenster“ ausführen, werden Ihnen definitiv die in der SQL Server-Instanz vorhandenen Datenbanken angezeigt, mit Ausnahme der Systemdatenbanken Master, Tempdb, MSDB und Model:

SELECT d.name
    , d.create_date
    , d.is_encrypted
    , d.state_desc
    , d.user_access_desc
FROM sys.databases d
WHERE d.database_id > 4
ORDER BY d.name;

Wenn die Liste leer ist und Sie das als Mitglied der Sysadmin-Rolle ausführen, können Sie sicher sein, dass keine Datenbanken mit der SQL Server-Instanz verbunden sind. Allerdings kann es sein, dass DatenbankenDateienauf dem Server vorhandene, abgetrennte Datenbankdateien. Das Auffinden abgetrennter Datenbankdateien ist eine knifflige Aufgabe, da Sie sich nicht darauf verlassen können, dass die Dateien bestimmte Namen oder Dateierweiterungen haben.

SQL Server kann über sogenannte „benannte Instanzen“ mehrfach auf einem einzigen Server installiert werden. Sie sollten die Dienstliste des Servers über das Dienste-Applet in der Systemsteuerung auf Dienstnamen wie „SQL Server (*)“ überprüfen, wobei das * der Name der Instanz wäre. Wenn auf dem Server mehrere Instanzen vorhanden sind, sollten Sie jede Instanz einzeln mit dem oben angegebenen Code überprüfen.

verwandte Informationen