Informationen zu SQL Server-Nutzern

Auf dieser Seite wird beschrieben, wie die Arbeit in Cloud SQL mit SQL Server-Nutzern und -Rollen funktioniert. Mit SQL Server-Rollen können Sie den Zugriff und die Funktionen von Nutzern steuern, die auf eine SQL Server-Instanz zugreifen.

Weitere Informationen zum Erstellen und Verwalten von Cloud SQL-Nutzern finden Sie unter Nutzer erstellen und verwalten.

SQL Server-Rollen und -Nutzer

SQL Server-Rollen können eine einzelne Rolle sein oder als Gruppe von Rollen fungieren.

Ein Nutzer ist eine Rolle mit der Erlaubnis zur Anmeldung (die Rolle hat die Berechtigung LOGIN). Alle von Cloud SQL erstellten Rollen haben die Berechtigung LOGIN, sodass Cloud SQL die Begriffe „Rolle“ und „Nutzer“ synonym verwendet. Wenn Sie jedoch eine Rolle mit dem Client erstellen, hat diese nicht unbedingt die Berechtigung LOGIN.

Alle SQL Server-Nutzer müssen ein Passwort haben. Sie können sich deshalb nicht mit einem Nutzer anmelden, der kein Passwort hat.

Superuser und vom System gespeicherte Prozeduren

Cloud SQL for SQL Server ist ein verwalteter Dienst, der den Zugriff auf bestimmte vom System gespeicherte Prozeduren und Tabellen beschränkt, für die erweiterte Berechtigungen erforderlich sind. In Cloud SQL können Sie keine Nutzer mit Superuser-Berechtigungen erstellen oder darauf zugreifen.

SQL Server-Standardnutzer

Wenn Sie eine neue Cloud SQL for SQL Server-Instanz erstellen, wird der sqlserver-Standardnutzer automatisch erstellt. Sie müssen jedoch ein Passwort für ihn festlegen.

Der sqlserver-Nutzer gehört zur CustomerDbRootRole-Rolle und verfügt über die folgenden Berechtigungen:

  • ALTER ANY CONNECTION
  • ALTER ANY LOGIN
  • ALTER ANY SERVER ROLE
  • ALTER SERVER STATE
  • ALTER TRACE
  • CONNECT SQL
  • CREATE ANY DATABASE
  • CREATE SERVER ROLE
  • VIEW ANY DATABASE
  • VIEW ANY DEFINITION
  • VIEW SERVER STATE

Sie können Ihrer Instanz auch cloudsql enable linked servers hinzufügen, wenn Sie sie mit verknüpften Servern verwenden möchten. Dieses Flag gewährt Ihrem Server die folgende Berechtigung:

  • ALTER ANY LINKED SERVER

Serverberechtigungen erteilen

Wenn Sie Berechtigungen mit einem GRANT-Befehl erteilen, müssen Sie CustomerDbRootRole beispielsweise als Wert von grantor_principal übergeben.

Das folgende Beispiel von GRANT ALTER ANY LOGIN ist gültig:

GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole

Das folgende Beispiel von GRANT ALTER ANY LOGIN ist ungültig:

GRANT ALTER ANY LOGIN TO [Account]

Andere SQL Server-Nutzer

Sie können andere SQL Server-Nutzer oder -Rollen erstellen. Allen Nutzern, die Sie mit Cloud SQL erstellen, werden die gleichen Datenbankberechtigungen wie bei der sqlserver-Anmeldung gewährt. Sollten Sie zum Erstellen eines Nutzers aber einen anderen Prozess verwenden (statt ihn mit Cloud SQL anzulegen), hat der Nutzer nicht dieselben Berechtigungen wie die Kundenadministratorkonten oder der sqlserver-Nutzer. Wenn Sie beispielsweise den Prozess create login nutzen und die Anmeldung der Serverrolle CustomerDbRootRole hinzufügen, hat der Nutzer nicht die gleichen Berechtigungen wie die Kundenadministratorkonten oder der sqlserver-Nutzer. Mit Cloud SQL haben Sie deshalb die Möglichkeit, einen Nutzer zu erstellen, der die gleichen Datenbankberechtigungen wie die sqlserver-Anmeldung hat. Mit dem Befehl sys.fn_my_permissions können Sie gegebenenfalls den Unterschied der Berechtigungen von zwei Konten ermitteln.

Datenbankimporte: Inhaberberechtigungen

Wenn Sie eine Datenbank importieren, unterscheidet sich das Verfahren für den Inhaber je nach Inhabertyp:

  • Für eine vorhandene andere Anmeldung als sa: Cloud SQL übernimmt diesen Inhaber und erstellt einen Nutzer namens sqlserver, der der Anmeldung sqlserver zugeordnet ist. Cloud SQL gewährt diesem sqlserver-Nutzer die Berechtigungen CONTROL und ALTER ANY USER.
  • Bei unbekannten Anmeldungen oder vom System erstellten Anmeldungen: Cloud SQL überträgt die Inhaberschaft der Datenbank auf die sqlserver-Anmeldung.

Berechtigungen für Nutzer ändern

Der Befehl ALTER ROLE kann für das Ändern von Nutzerberechtigungen verwendet werden. Wenn Sie einen neuen Nutzer mit einem Client erstellen, können Sie ihn mit einer anderen Rolle verknüpfen oder unterschiedliche Berechtigungen vergeben.

Fehlerbehebung

Fehler beim Zugriff auf die Datenbank

Beim Versuch, auf eine von Ihnen erstellte Datenbank zuzugreifen, wird der folgende Fehler angezeigt.

The server principal USERNAME is not able to access the
database DATABASE_NAME under the current security context.

Mögliche Ursache

Der Nutzer ist kein Mitglied der Datenbank.

Lösungsvorschlag

Stellen Sie eine Verbindung zur Datenbank als sqlserver-Nutzer her und fügen Sie den neuen Nutzer hinzu. Weisen Sie dann dem neuen Nutzer die Rolle db_owner für die Datenbank zu. Beispiel:

EXEC sp_adduser 'user';
EXEC sp_addrolemember 'db_owner', 'user'

Nächste Schritte