Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Zmienia własność zabezpieczanego obiektu.
Transact-SQL konwencje składni
Note
Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).
Syntax
-- Syntax for SQL Server
ALTER AUTHORIZATION
ON [ <class_type>:: ] entity_name
TO { principal_name | SCHEMA OWNER }
[;]
<class_type> ::=
{
OBJECT | ASSEMBLY | ASYMMETRIC KEY | AVAILABILITY GROUP | CERTIFICATE
| CONTRACT | TYPE | DATABASE | ENDPOINT | FULLTEXT CATALOG
| FULLTEXT STOPLIST | MESSAGE TYPE | REMOTE SERVICE BINDING
| ROLE | ROUTE | SCHEMA | SEARCH PROPERTY LIST | SERVER ROLE
| SERVICE | SYMMETRIC KEY | XML SCHEMA COLLECTION
}
-- Syntax for SQL Database
ALTER AUTHORIZATION
ON [ <class_type>:: ] entity_name
TO { principal_name | SCHEMA OWNER }
[;]
<class_type> ::=
{
OBJECT | ASSEMBLY | ASYMMETRIC KEY | CERTIFICATE
| TYPE | DATABASE | FULLTEXT CATALOG
| FULLTEXT STOPLIST
| ROLE | SCHEMA | SEARCH PROPERTY LIST
| SYMMETRIC KEY | XML SCHEMA COLLECTION
}
-- Syntax for Azure Synapse Analytics and Microsoft Fabric
ALTER AUTHORIZATION ON
[ <class_type> :: ] <entity_name>
TO { principal_name | SCHEMA OWNER }
[;]
<class_type> ::= {
SCHEMA
| OBJECT
}
<entity_name> ::=
{
schema_name
| [ schema_name. ] object_name
}
-- Syntax for Parallel Data Warehouse
ALTER AUTHORIZATION ON
[ <class_type> :: ] <entity_name>
TO { principal_name | SCHEMA OWNER }
[;]
<class_type> ::= {
DATABASE
| SCHEMA
| OBJECT
}
<entity_name> ::=
{
database_name
| schema_name
| [ schema_name. ] object_name
}
Note
Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
Arguments
< > class_type Czy zabezpieczana klasa jednostki, dla której jest zmieniany właściciel. Obiekt jest wartością domyślną.
| Class | Product |
|---|---|
| OBJECT | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW). |
| ASSEMBLY | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database. |
| KLUCZ ASYMETRYCZNY | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database. |
| GRUPA DOSTĘPNOŚCI | Dotyczy: PROGRAM SQL Server 2012 lub nowszy. |
| CERTIFICATE | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database. |
| CONTRACT | Dotyczy: SQL Server 2008 (10.0.x) i nowsze. |
| DATABASE | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database. Aby uzyskać więcej informacji, zobacz ALTER AUTHORIZATION for databases (ALTER AUTHORIZATION for databases). |
| ENDPOINT | Dotyczy: SQL Server 2008 (10.0.x) i nowsze. |
| KATALOG PEŁNOTEKSTOWY | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database. |
| LISTA ZATRZYMAŃ PEŁNOTEKSTOWYCH | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database. |
| TYP KOMUNIKATU | Dotyczy: SQL Server 2008 (10.0.x) i nowsze. |
| POWIĄZANIE USŁUGI ZDALNEJ | Dotyczy: SQL Server 2008 (10.0.x) i nowsze. |
| ROLE | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database. |
| ROUTE | Dotyczy: SQL Server 2008 (10.0.x) i nowsze. |
| SCHEMA | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW). |
| LISTA NIERUCHOMOŚCI DO WYSZUKANIA | Dotyczy: SQL Server 2012 (11.x) i nowsze wersje usługi Azure SQL Database. |
| ROLA SERWERA | Dotyczy: SQL Server 2008 (10.0.x) i nowsze. |
| SERVICE | Dotyczy: SQL Server 2008 (10.0.x) i nowsze. |
| KLUCZ SYMETRYCZNY | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database. |
| TYPE | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database. |
| KOLEKCJA SCHEMATÓW XML | Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Azure SQL Database. |
entity_name To nazwa jednostki.
principal_name | SCHEMA OWNER Nazwa podmiotu zabezpieczeń, który będzie właścicielem jednostki. Obiekty bazy danych muszą być własnością jednostki bazy danych; użytkownik lub rola bazy danych. Obiekty serwera (takie jak bazy danych) muszą być własnością jednostki serwera (identyfikatora logowania). Określ wartość WŁAŚCICIEL SCHEMATu jako *principal_name- , aby wskazać, że obiekt powinien być własnością podmiotu zabezpieczeń, który jest właścicielem schematu obiektu.
Remarks
Alter AUTHORIZATION może służyć do zmiany własności dowolnej jednostki, która ma właściciela. Własność jednostek zawartych w bazie danych może zostać przeniesiona do dowolnego podmiotu zabezpieczeń na poziomie bazy danych. Własność jednostek na poziomie serwera może być przenoszona tylko do podmiotów zabezpieczeń na poziomie serwera.
Important
Począwszy od programu SQL Server 2005 (9.x), użytkownik może być właścicielem obiektu lub typu, który jest zawarty w schemacie należącym do innego użytkownika bazy danych. Jest to zmiana zachowania z wcześniejszych wersji programu SQL Server. Aby uzyskać więcej informacji, zobacz OBJECTPROPERTY (Transact-SQL) i TYPEPROPERTY (Transact-SQL).
Własność następujących jednostek zawartych w schemacie typu "object" można przenosić: tabele, widoki, funkcje, procedury, kolejki i synonimy.
Nie można przenieść własności następujących jednostek: serwery połączone, statystyki, ograniczenia, reguły, wartości domyślne, wyzwalacze, kolejki usługi Service Broker, poświadczenia, funkcje partycji, schematy partycji, klucze główne bazy danych, klucz główny usługi i powiadomienia o zdarzeniach.
Nie można przenieść własności składowych następujących zabezpieczanych klas: serwer, identyfikator logowania, użytkownik, rola aplikacji i kolumna.
Opcja WŁAŚCICIEL SCHEMATu jest prawidłowa tylko wtedy, gdy przenosisz własność jednostki zawartej w schemacie. WŁAŚCICIEL SCHEMATU przeniesie własność jednostki do właściciela schematu, w którym się znajduje. Tylko jednostki klasy OBJECT, TYPE lub XML SCHEMA COLLECTION są zawarte w schemacie.
Jeśli jednostka docelowa nie jest bazą danych i jednostka jest przenoszona do nowego właściciela, wszystkie uprawnienia w obiekcie docelowym zostaną usunięte.
Note
Schematy nie są równoważne użytkownikom bazy danych. Użyj widoków wykazu systemu , aby zidentyfikować wszelkie różnice między użytkownikami bazy danych i schematami.
Zwróć również uwagę na następujące kwestie:
Important
Jedynym niezawodnym sposobem znalezienia właściciela obiektu jest wykonywanie zapytań względem widoku katalogu sys.objects . Jedynym niezawodnym sposobem znalezienia właściciela typu jest użycie funkcji TYPEPROPERTY.
Przypadki specjalne i warunki
W poniższej tabeli wymieniono specjalne przypadki, wyjątki i warunki, które mają zastosowanie do zmiany autoryzacji.
| Class | Condition |
|---|---|
| OBJECT | Nie można zmienić własności wyzwalaczy, ograniczeń, reguł, wartości domyślnych, statystyk, obiektów systemowych, kolejek, widoków indeksowanych lub tabel z indeksowanych widoków. |
| SCHEMA | Po przeniesieniu własności uprawnienia do obiektów zawartych w schemacie, które nie mają jawnych właścicieli, zostaną usunięte. Nie można zmienić właściciela systemu, bazy danych lub information_schema. |
| TYPE | Nie można zmienić własności typu należącego do systemu lub information_schema. |
| KONTRAKT, TYP KOMUNIKATU LUB USŁUGA | Nie można zmienić własności jednostek systemowych. |
| KLUCZ SYMETRYCZNY | Nie można zmienić własności globalnych kluczy tymczasowych. |
| CERTYFIKAT LUB KLUCZ ASYMETRYCZNY | Nie można przenieść własności tych jednostek do roli lub grupy. |
| ENDPOINT | Podmiot zabezpieczeń musi być identyfikatorem logowania. |
ALTER AUTHORIZATION for databases (ZMIENIANIE AUTORYZACJI dla baz danych)
Dla oprogramowania SQL Server
Wymagania dotyczące nowego właściciela: Nowy podmiot zabezpieczeń właściciela musi być jednym z następujących elementów:
- Identyfikator logowania uwierzytelniania programu SQL Server.
- Identyfikator logowania uwierzytelniania systemu Windows reprezentujący użytkownika systemu Windows (a nie grupy).
- Użytkownik systemu Windows, który uwierzytelnia się za pomocą logowania uwierzytelniania systemu Windows reprezentującego grupę systemu Windows.
Wymagania dotyczące osoby wykonującej instrukcję ALTER AUTHORIZATION: Jeśli nie jesteś członkiem stałej roli serwera sysadmin , musisz mieć co najmniej uprawnienie TAKE OWNERSHIP w bazie danych i musi mieć uprawnienie IMPERSONATE w nowym logowaniu właściciela.
W przypadku usługi Azure SQL Database
Wymagania dotyczące nowego właściciela: Nowy podmiot zabezpieczeń właściciela musi być jednym z następujących elementów:
- Identyfikator logowania uwierzytelniania programu SQL Server.
- Użytkownik federacyjny (a nie grupa) znajdujący się w identyfikatorze Entra firmy Microsoft.
- Użytkownik zarządzany (nie grupa) lub aplikacja obecna w identyfikatorze Entra firmy Microsoft.
Jeśli nowy właściciel jest użytkownikiem firmy Microsoft Entra, nie może istnieć jako użytkownik w bazie danych, w której nowy właściciel zostanie nowym właścicielem bazy danych (dbo). Użytkownik Microsoft Entra musi najpierw zostać usunięty z bazy danych przed wykonaniem instrukcji ALTER AUTHORIZATION, zmieniając własność bazy danych na nowego użytkownika. Aby uzyskać więcej informacji na temat konfigurowania użytkowników usługi Microsoft Entra przy użyciu usługi SQL Database, zobacz Konfigurowanie uwierzytelniania entra firmy Microsoft.
Wymagania dotyczące osoby wykonującej instrukcję ALTER AUTHORIZATION: Aby zmienić właściciela tej bazy danych, musisz nawiązać połączenie z docelową bazą danych.
Następujące typy kont mogą zmieniać właściciela bazy danych.
- Identyfikator logowania podmiotu zabezpieczeń na poziomie usługi, który jest administratorem SQL zainicjowanym podczas tworzenia serwera logicznego na platformie Azure .
- Administrator firmy Microsoft Entra dla serwera logicznego.
- Bieżący właściciel bazy danych.
Poniższa tabela zawiera podsumowanie wymagań:
| Executor | Target | Result |
|---|---|---|
| Logowanie do uwierzytelniania programu SQL Server | Logowanie do uwierzytelniania programu SQL Server | Success |
| Logowanie do uwierzytelniania programu SQL Server | Użytkownik firmy Microsoft Entra | Fail |
| Użytkownik firmy Microsoft Entra | Logowanie do uwierzytelniania programu SQL Server | Success |
| Użytkownik firmy Microsoft Entra | Użytkownik firmy Microsoft Entra | Success |
Aby zweryfikować właściciela bazy danych firmy Microsoft Entra, wykonaj następujące polecenie Transact-SQL w bazie danych użytkownika (w tym przykładzie testdb).
SELECT CAST(owner_sid as uniqueidentifier) AS Owner_SID
FROM sys.databases
WHERE name = 'testdb';
Dane wyjściowe będą identyfikatorem GUID (takim jak XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX), który odpowiada identyfikatorowi obiektu użytkownika lub jednostki usługi firmy Microsoft przypisanej jako właściciel bazy danych. Możesz to sprawdzić, sprawdzając identyfikator obiektu użytkownika w identyfikatorze Entra firmy Microsoft. Gdy użytkownik logowania uwierzytelniania programu SQL Server jest właścicielem bazy danych, wykonaj następującą instrukcję w bazie danych master, aby zweryfikować właściciela bazy danych:
SELECT d.name, d.owner_sid, sl.name
FROM sys.databases AS d
JOIN sys.sql_logins AS sl
ON d.owner_sid = sl.sid;
Najlepsze rozwiązanie
Zamiast używać użytkowników firmy Microsoft Entra jako indywidualnych właścicieli bazy danych, użyj grupy Microsoft Entra jako członka stałej roli bazy danych db_owner. W poniższych krokach pokazano, jak skonfigurować wyłączone logowanie jako właściciel bazy danych i utworzyć grupę Microsoft Entra (mydbogroup) jako członka roli db_owner .
Zaloguj się do programu SQL Server jako administrator firmy Microsoft Entra i zmień właściciela bazy danych na wyłączone logowanie do uwierzytelniania programu SQL Server. Na przykład z bazy danych użytkownika wykonaj następujące polecenie:
ALTER AUTHORIZATION ON database::testdb TO DisabledLogin;Utwórz grupę Firmy Microsoft Entra, która powinna być właścicielem bazy danych i dodać ją jako użytkownika do bazy danych użytkowników. Przykład:
CREATE USER [mydbogroup] FROM EXTERNAL PROVIDER;W bazie danych użytkowników dodaj użytkownika reprezentującego grupę Microsoft Entra do db_owner stałej roli bazy danych. Przykład:
ALTER ROLE db_owner ADD MEMBER mydbogroup;
mydbogroup Teraz członkowie mogą centralnie zarządzać bazą danych jako członkami roli db_owner.
- Gdy członkowie tej grupy zostaną usunięci z grupy Microsoft Entra, automatycznie utracą uprawnienia dbo dla tej bazy danych.
- Podobnie jeśli nowi członkowie są dodawani do
mydbogroupgrupy Microsoft Entra, automatycznie uzyskują dostęp do bazy danych dla tej bazy danych.
Aby sprawdzić, czy określony użytkownik ma obowiązujące uprawnienie dbo, użytkownik musi wykonać następującą instrukcję:
SELECT IS_MEMBER ('db_owner');
Wartość zwracana 1 wskazuje, że użytkownik jest członkiem roli.
Permissions
Wymaga uprawnienia TAKE OWNERSHIP w jednostce. Jeśli nowy właściciel nie jest użytkownikiem wykonującym tę instrukcję, wymagane jest również uprawnienie 1) Personifikuj się na nowym właścicielu, jeśli jest to użytkownik lub identyfikator logowania; lub 2) jeśli nowy właściciel jest rolą, członkostwem w roli lub UPRAWNIENIE ALTER dla roli; lub 3) jeśli nowy właściciel jest rolą aplikacji, uprawnienie ALTER do roli aplikacji.
Examples
A. Przenoszenie własności tabeli
Poniższy przykład przenosi własność tabeli Sprockets do użytkownika MichikoOsada. Tabela znajduje się wewnątrz schematu Parts.
ALTER AUTHORIZATION ON OBJECT::Parts.Sprockets TO MichikoOsada;
GO
Zapytanie może również wyglądać następująco:
ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO
Jeśli schemat obiektów nie jest dołączony jako część instrukcji, aparat bazy danych wyszuka obiekt w domyślnym schemacie użytkowników. Przykład:
ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;
B. Przenoszenie własności widoku do właściciela schematu
Poniższy przykład przenosi własność widoku ProductionView06 do właściciela schematu, który go zawiera. Widok znajduje się wewnątrz schematu Production.
ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER;
GO
C. Przenoszenie własności schematu do użytkownika
Poniższy przykład przenosi własność schematu SeattleProduction11 do użytkownika SandraAlayo.
ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO
D. Przenoszenie własności punktu końcowego do logowania programu SQL Server
Poniższy przykład przenosi własność punktu końcowego CantabSalesServer1 na JaePak. Ponieważ punkt końcowy jest zabezpieczany na poziomie serwera, punkt końcowy można przenieść tylko do podmiotu zabezpieczeń na poziomie serwera.
Dotyczy: SQL Server 2008 (10.0.x) i nowszych.
ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO
E. Zmienianie właściciela tabeli
Każdy z poniższych przykładów zmienia właściciela Sprockets tabeli w Parts bazie danych na użytkownika MichikoOsadabazy danych .
ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON dbo.Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::dbo.Sprockets TO MichikoOsada;
F. Zmiana właściciela bazy danych
Dotyczy: SQL Server 2008 (10.0.x) i nowsze, Analytics Platform System (PDW), SQL Database.
W poniższym przykładzie zmieniono właściciela Parts bazy danych na identyfikator logowania MichikoOsada.
ALTER AUTHORIZATION ON DATABASE::Parts TO MichikoOsada;
G. Zmiana właściciela bazy danych na użytkownika firmy Microsoft Entra
W poniższym przykładzie administrator firmy Microsoft Entra dla programu SQL Server w organizacji z niestandardową domeną Firmy Microsoft Entra o nazwie cqclinic.onmicrosoft.com, może zmienić bieżącą własność bazy danych targetDB i ustawić istniejącego użytkownika richel@cqclinic.onmicorsoft.com microsoft Entra jako nowego właściciela bazy danych przy użyciu następującego polecenia:
ALTER AUTHORIZATION ON database::targetDB TO [rachel@cqclinic.onmicrosoft.com];
Zobacz też
OBJECTPROPERTY (Transact-SQL)TYPEPROPERTY (Transact-SQL)EVENTDATA (Transact-SQL)