ALTER USER (Transact-SQL)

Benennt einen Datenbankbenutzer um oder ändert sein Standardschema.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

ALTER USER userName  
     WITH <set_item> [ ,...n ]

<set_item> ::= 
      NAME = newUserName 
    | DEFAULT_SCHEMA = { schemaName | NULL }
    | LOGIN = loginName
    | PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
    | DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }

Argumente

  • userName
    Gibt den Namen an, mit dem der Benutzer innerhalb dieser Datenbank identifiziert wird.

  • LOGIN **=**loginName
    Ordnet einen Benutzer einer anderen Anmeldung neu zu. Dazu wird die Sicherheits-ID (SID) des Benutzers in die SID der Anmeldung geändert.

  • NAME **=**newUserName
    Gibt den neuen Namen für diesen Benutzer an. newUserName darf in der aktuellen Datenbank noch nicht vorhanden sein.

  • DEFAULT_SCHEMA = { schemaName | NULL }
    Gibt das erste Schema an, das vom Server beim Auflösen der Namen von Objekten für diesen Benutzer durchsucht wird. Wenn das Standardschema auf NULL festgelegt wird, wird ein Standardschema aus einer Windows-Gruppe entfernt. Die NULL-Option kann nicht in Verbindung mit einem Windows-Benutzer verwendet werden.

  • PASSWORD = 'password'
    Gibt das Kennwort für den Benutzer an, der geändert wird. Bei Kennwörtern wird nach Groß- und Kleinschreibung unterschieden.

    HinweisHinweis

    Diese Option ist nur für enthaltene Benutzer verfügbar. Weitere Informationen finden Sie unter Enthaltene Datenbank und sp_migrate_user_to_contained (Transact-SQL).

  • OLD_PASSWORD ='oldpassword'
    Das aktuelle Benutzerkennwort, das durch 'password' ersetzt wird. Bei Kennwörtern wird nach Groß- und Kleinschreibung unterschieden. OLD_PASSWORD ist erforderlich, um ein Kennwort zu ändern, wenn Sie nicht über die ALTER ANY USER-Berechtigung verfügen. Dadurch, dass OLD_PASSWORD erforderlich ist, wird verhindert, dass Benutzer mit der IMPERSONATION-Berechtigung das Kennwort ändern.

    HinweisHinweis

    Diese Option ist nur für enthaltene Benutzer verfügbar.

  • DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }
    Gibt eine Standardsprache an, die dem Benutzer zugewiesen werden soll. Wenn diese Option auf NONE festgelegt wird, wird die aktuelle Standardsprache der Datenbank als Standardsprache festgelegt. Wenn die Standardsprache der Datenbank später geändert wird, bleibt die Standardsprache des Benutzers unverändert. DEFAULT_LANGUAGE kann die lokale ID (lcid), der Name der Sprache oder der Sprachalias sein.

    HinweisHinweis

    Diese Option kann nur in einer eigenständigen Datenbank und nur für eigenständige Benutzer angegeben werden.

Hinweise

Das Standardschema ist das erste Schema, das vom Server beim Auflösen der Namen von Objekten für diesen Datenbankbenutzer durchsucht wird. Wenn nicht anders angegeben, ist das Standardschema der Besitzer von Objekten, die von diesem Datenbankbenutzer erstellt werden.

Wenn der Benutzer ein Standardschema hat, wird dieses Standardschema verwendet. Wenn der Benutzer kein Standardschema hat, aber Mitglied einer Gruppe mit einem Standardschema ist, wird das Standardschema der Gruppe verwendet. Wenn der Benutzer kein Standardschema hat und Mitglied von mehreren Gruppen ist, ist das Standardschema für den Benutzer das Schema der Windows-Gruppe mit der niedrigsten principal_id und explizit festgelegt. Wenn für einen Benutzer kein Standardschema bestimmt werden kann, wird das dbo-Schema verwendet.

DEFAULT_SCHEMA kann auf ein Schema festgelegt werden, das zurzeit nicht in der Datenbank vorhanden ist. Deshalb können Sie DEFAULT_SCHEMA einem Benutzer zuweisen, bevor das Schema erstellt wird.

DEFAULT_SCHEMA kann nicht für einen Benutzer angegeben werden, der einem Zertifikat oder einem asymmetrischen Schlüssel zugeordnet ist.

Wichtiger HinweisWichtig

Der Wert von DEFAULT_SCHEMA wird ignoriert, wenn der Benutzer ein Mitglied der festen Serverrolle sysadmin ist. Alle Mitglieder der festen Serverrolle sysadmin verfügen über das Standardschema dbo.

Sie können den Namen eines einer Windows-Anmeldung oder -Gruppe zugeordneten Benutzers ändern, wenn die SID des neuen Benutzernamens mit der SID in der Datenbank übereinstimmt. Diese Überprüfung trägt dazu bei, das Spoofing von Windows-Anmeldungen in der Datenbank zu verhindern.

Mit der WITH LOGIN-Klausel kann ein Benutzer einer anderen Anmeldung neu zugeordnet werden. Benutzer ohne Anmeldung, einem Zertifikat zugeordnete Benutzer oder einem asymmetrischen Schlüssel zugeordnete Benutzer können mithilfe dieser Klausel nicht neu zugeordnet werden. Nur SQL-Benutzer und Windows-Benutzer (oder -Gruppen) können neu zugeordnet werden. Mit der WITH LOGIN-Klausel kann nicht der Benutzertyp geändert werden, beispielsweise kann ein Windows-Konto nicht in eine SQL Server-Anmeldung geändert werden.

Der Name des Benutzers wird automatisch in den Anmeldenamen umbenannt, wenn die folgenden Voraussetzungen erfüllt sind.

  • Der Benutzer ist ein Windows-Benutzer.

  • Der Name ist ein Windows-Name (enthält einen umgekehrten Schrägstrich).

  • Es wurde kein neuer Name angegeben.

  • Der aktuelle Name unterscheidet sich vom Benutzernamen.

Andernfalls wird der Benutzer nicht umbenannt, es sei denn, der Aufrufer ruft zusätzlich die NAME-Klausel auf.

Der Name eines Benutzers, der einer SQL Server-Anmeldung, einem Zertifikat oder einem asymmetrischen Schlüssel zugeordnet ist, kann keinen umgekehrten Schrägstrich (\) enthalten.

VorsichtshinweisVorsicht

Mit SQL Server 2005 wurde das Verhalten von Schemas geändert. Deshalb werden von Code, der voraussetzt, dass Schemas und Datenbankbenutzer äquivalent sind, möglicherweise keine richtigen Ergebnisse mehr zurückgegeben. Alte Katalogsichten, einschließlich sysobjects, sollten nicht in einer Datenbank verwendet werden, in der bereits eine der folgenden DDL-Anweisungen verwendet wurde: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. In solchen Datenbanken müssen Sie stattdessen neue Katalogsichten verwenden. In den neuen Katalogsichten wird die Trennung zwischen Prinzipalen und Schemas berücksichtigt, die in SQL Server 2005 eingeführt wurde. Weitere Informationen zu Katalogsichten finden Sie unter Katalogsichten (Transact-SQL).

Sicherheit

HinweisHinweis

Ein Benutzer mit ALTER ANY USER-Berechtigung kann das Standardschema jedes Benutzers ändern. Ein Benutzer mit einem geänderten Schema könnte dann versehentlich Daten aus der falschen Tabelle auswählen oder Code aus dem falschen Schema ausführen.

Berechtigungen

Zum Ändern des Namens eines Benutzers ist die ALTER ANY USER-Berechtigung erforderlich.

Um den Benutzernamen, den Zielanmeldenamen oder die SID eines Benutzers zu ändern, der über die CONTROL-Berechtigung für die Datenbank verfügt, ist die CONTROL-Berechtigung für die Datenbank erforderlich.

Zum Ändern des Standardschemas oder der Sprache ist die ALTER-Berechtigung für den Benutzer erforderlich. Benutzer können nur ihr eigenes Standardschema oder ihre eigene Sprache ändern.

Beispiele

A.Ändern des Namens eines Datenbankbenutzers

Im folgenden Beispiel wird der Name des Datenbankbenutzers Mary5 in Mary51 geändert.

USE AdventureWorks2012;
ALTER USER Mary5 WITH NAME = Mary51;
GO

B.Ändern des Standardschemas eines Benutzers

Im folgenden Beispiel wird das Standardschema des Benutzers Mary51 in Purchasing geändert.

USE AdventureWorks2012;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C.Gleichzeitiges Ändern mehrerer Optionen

Im folgenden Beispiel werden mehrere Optionen für einen Benutzer einer eigenständigen Datenbank in einer Anweisung geändert.

USE AdventureWorks2012;
GO 
ALTER USER Philip 
WITH  NAME = Philipe 
    , DEFAULT_SCHEMA = Development 
    , PASSWORD = 'W1r77TT98%ab@#’ OLD_PASSWORD = 'New Devel0per' 
    , DEFAULT_LANGUAGE  = French ;
GO

Siehe auch

Verweis

CREATE USER (Transact-SQL)

DROP USER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_migrate_user_to_contained (Transact-SQL)

Konzepte

Enthaltene Datenbank