Freigeben über


ALTER AUTHORIZATION (Transact-SQL)

Ändert den Besitz eines sicherungsfähigen Elements.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

ALTER AUTHORIZATION
   ON [ <class_type>] entity_name
   TO { SCHEMA OWNER | principal_name }

<class_type> ::=
    {
        OBJECT | ASSEMBLY | ASYMMETRIC KEY | CERTIFICATE 
    | CONTRACT | TYPE | DATABASE | ENDPOINT | FULLTEXT CATALOG 
        | FULLTEXT STOPLIST | MESSAGE TYPE | REMOTE SERVICE BINDING
       | ROLE | ROUTE | SCHEMA | SERVICE | SYMMETRIC KEY 
        | XML SCHEMA COLLECTION
    }

Argumente

  • <class_type>
    Die sicherungsfähige Klasse der Entität, für die der Besitzer geändert wird. OBJECT ist der Standardwert.

  • entity_name
    Der Name der Entität.

  • principal_name
    Der Name des Prinzipals, der die Entität besitzt.

Hinweise

Mit ALTER AUTHORIZATION kann der Besitz einer Entität, die einen Besitzer aufweist, geändert werden. Der Besitz von in der Datenbank enthaltenen Entitäten kann an jeden Prinzipal auf Datenbankebene übertragen werden. Der Besitz von Entitäten auf Serverebene kann nur an Prinzipale auf Serverebene übertragen werden.

Wichtiger HinweisWichtig

Ab SQL Server 2005 kann der Benutzer Besitzer eines Objekts oder Typs sein, das bzw. der in einem Schema enthalten ist, dessen Besitzer ein anderer Datenbankbenutzer ist. Dieses Verhalten unterscheidet sich von früheren Versionen von SQL Server. Weitere Informationen finden Sie unter Trennung von Benutzer und Schema, OBJECTPROPERTY (Transact-SQL) und TYPEPROPERTY (Transact-SQL).

Der Besitz der folgenden in einem Schema enthaltenen Entitäten vom Typ "object" kann übertragen werden: Tabellen, Sichten, Funktionen, Prozeduren, Warteschlangen und Synonyme.

Der Besitz der folgenden Entitäten kann nicht übertragen werden: Verbindungsserver, Statistiken, Einschränkungen, Regeln, Standardwerte, Trigger, Service Broker-Warteschlangen, Anmeldeinformationen, Partitionsfunktionen, Partitionsschemas, Datenbank-Hauptschlüssel, Diensthauptschlüssel und Ereignisbenachrichtigungen.

Der Besitz von Mitgliedern der folgenden sicherungsfähigen Klassen kann nicht übertragen werden: Server, Anmeldename, Benutzer, Anwendungsrolle und Spalte.

Die SCHEMA OWNER-Option ist nur gültig, wenn Sie den Besitz einer in einem Schema enthaltenen Entität übertragen. Mit SCHEMA OWNER wird der Besitz der Entität an den Besitzer des Schemas übertragen, in dem sie sich befindet. Nur Entitäten der Klasse OBJECT, TYPE oder XML SCHEMA COLLECTION sind in Schemas enthalten.

Falls es sich bei der Zielentität nicht um eine Datenbank handelt und die Entität an einen neuen Besitzer übertragen wird, werden alle Berechtigungen für das Ziel gelöscht.

VorsichtshinweisVorsicht

Das Verhalten der Schemas in SQL Server 2005 unterscheidet sich von dem in früheren Versionen von SQL Server. Code, in dem vorausgesetzt wird, dass Schemas Datenbankbenutzern entsprechen, gibt möglicherweise nicht die richtigen Ergebnisse zurück. Alte Katalogsichten, einschließlich sysobjects, sollten nicht in einer Datenbank verwendet werden, in der jemals 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 einer Datenbank, in der jemals eine dieser Anweisungen verwendet wurde, müssen Sie die neuen Katalogsichten verwenden. In den neuen Katalogsichten wird die Trennung zwischen Prinzipalen und Schemas berücksichtigt, die in SQL Server 2005 eingeführt wird. Weitere Informationen zu Katalogsichten finden Sie unter Katalogsichten (Transact-SQL).

Beachten Sie dabei außerdem Folgendes:

Wichtiger HinweisWichtig

Die einzig zuverlässige Möglichkeit, den Besitzer eines Objekts zu finden, besteht darin, die sys.objects-Katalogsicht abzufragen. Die einzige zuverlässige Möglichkeit, den Besitzer eines Typs zu finden, besteht in der Verwendung der TYPEPROPERTY-Funktion.

Spezialfälle und Bedingungen

In der folgenden Tabelle sind Spezialfälle, Ausnahmen und Bedingungen aufgeführt, die beim Ändern der Autorisierung gelten.

Klasse

Bedingung

DATABASE

Der Besitzer der Systemdatenbanken master, model, tempdb, der Ressourcendatenbank oder einer als Verteilungsdatenbank verwendeten Datenbank kann nicht geändert werden. Der Prinzipal muss ein Anmeldename sein. Falls der Prinzipal ein Windows-Anmeldename ohne entsprechenden SQL Server-Anmeldenamen ist, muss der Prinzipal die CONTROL SERVER-Berechtigung und die TAKE OWNERSHIP-Berechtigung in der Datenbank besitzen. Falls der Prinzipal ein SQL Server-Anmeldename ist, kann der Prinzipal einem Zertifikat oder asymmetrischen Schlüssel nicht zugeordnet werden. Abhängige Aliase werden dem neuen Datenbankbesitzer zugeordnet. Die DBO-SID wird sowohl in der aktuellen Datenbank als auch in sys.databases aktualisiert.

OBJECT

Der Besitz von Triggern, Einschränkungen, Regeln, Standardwerten, Statistiken, Systemobjekten, Warteschlangen, indizierten Sichten oder Tabellen mit indizierten Sichten kann nicht geändert werden.

SCHEMA

Wenn der Besitz übertragen wird, werden Berechtigungen für in einem Schema enthaltene Objekte, die keine expliziten Besitzer aufweisen, gelöscht. Der Besitzer von sys, dbo oder information_schema kann nicht geändert werden.

TYPE

Der Besitz eines TYPE-Objekts, das zu sys oder information_schema gehört, kann nicht geändert werden.

CONTRACT, MESSAGE TYPE oder SERVICE

Der Besitz von Systementitäten kann nicht geändert werden.

SYMMETRIC KEY

Der Besitz von globalen temporären Schlüsseln kann nicht geändert werden.

CERTIFICATE oder ASYMMETRIC KEY

Der Besitz dieser Entitäten kann nicht an eine Rolle oder Gruppe übertragen werden.

ENDPOINT

Der Prinzipal muss ein Anmeldename sein.

Berechtigungen

Erfordert die TAKE OWNERSHIP-Berechtigung für die Entität. Falls der neue Besitzer nicht der Benutzer ist, der diese Anweisung ausführt, ist zudem eine der folgenden Berechtigungen erforderlich: 1) IMPERSONATE-Berechtigung für den neuen Besitzer, falls es sich um einen Benutzer oder einen Anmeldenamen handelt. Oder: 2) Falls der neue Besitzer eine Rolle ist, Mitgliedschaft in der Rolle oder ALTER-Berechtigung in der Rolle. Oder: 3) Falls der neue Besitzer eine Anwendungsrolle ist, ALTER-Berechtigung in der Anwendungsrolle.

Beispiele

A. Übertragen des Besitzes einer Tabelle

Im folgenden Beispiel wird der Besitz der Sprockets-Tabelle an den Benutzer MichikoOsada übertragen. Die Tabelle befindet sich im Parts-Schema.

ALTER AUTHORIZATION ON OBJECT::Parts.Sprockets TO MichikoOsada;
GO

Die Abfrage kann auch folgendermaßen aussehen:

ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO

B. Übertragen des Besitzes einer Sicht an den Schemabesitzer

Im folgenden Beispiel wird der Besitz der ProductionView06-Sicht an den Besitzer des Schemas übertragen, das sie enthält. Die Sicht befindet sich im Production-Schema.

ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER;
GO

C. Übertragen des Besitzes eines Schemas an einen Benutzer

Im folgenden Beispiel wird der Besitz des SeattleProduction11-Schemas an den Benutzer SandraAlayo übertragen.

ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO

Übertragen des Besitzes für einen Endpunkt an einen SQL Server-Anmeldenamen

Im folgenden Beispiel wird der Besitz des CantabSalesServer1-Endpunktes an JaePak übertragen. Da es sich bei dem Endpunkt um ein sicherungsfähiges Element auf Serverebene handelt, kann der Endpunkt nur an einen Prinzipal auf Serverebene übertragen werden.

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO

Änderungsverlauf

Aktualisierter Inhalt

Der Liste wurde ASYMMETRIC KEY hinzugefügt.

<entity_type> wurde in <class_type> geändert.