Aracılığıyla paylaş


DEĞIŞTIRME YETKISI (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Güvenlik altına alınabilir bir öğenin sahipliğini değiştirir.

Transact-SQL söz dizimi kuralları

Note

Microsoft Entra Id daha önce Azure Active Directory (Azure AD) olarak biliniyordu.

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

Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

Arguments

< > class_type Sahibinin değiştirildiği varlığın güvenli hale getirilebilir sınıfıdır. OBJECT varsayılan değerdir.

Class Product
OBJECT Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı, Azure Synapse Analytics, Analytics Platform Sistemi (PDW).
ASSEMBLY Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı.
ASIMETRİK ANAHTAR Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı.
Kullanılabilirlik Grubu Şunlar için geçerlidir: SQL Server 2012 ve üzeri.
CERTIFICATE Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı.
CONTRACT Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
DATABASE Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı. Daha fazla bilgi için bkz. Veritabanları için ALTER AUTHORIZATION.
ENDPOINT Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
TAM METIN KATALOĞU Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı.
TAM METİN STOP LİSTESİ Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı.
İLETI TÜRÜ Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
UZAKTAN HİZMET BAĞLANTISI Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
ROLE Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı.
ROUTE Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
SCHEMA Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı, Azure Synapse Analytics, Analytics Platform Sistemi (PDW).
GAYRİMENKUL LİSTESİ ARA Şunlar için geçerlidir: SQL Server 2012 (11.x) ve üzeri, Azure SQL Veritabanı.
SUNUCU ROLÜ Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
SERVICE Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.
SİMETRİK ANAHTAR Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı.
TYPE Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı.
XML Şema Koleksiyonu Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Azure SQL Veritabanı.

entity_name Varlığın adıdır.

principal_name | SCHEMA OWNER Varlığa sahip olacak güvenlik sorumlusunun adı. Veritabanı nesneleri bir veritabanı sorumlusuna ait olmalıdır; bir veritabanı kullanıcısı veya rolü. Sunucu nesneleri (veritabanları gibi) bir sunucu sorumlusuna (oturum açma) sahip olmalıdır. Nesnenin, nesnenin şemasına sahip olan sorumluya ait olması gerektiğini belirtmek için *principal_name- olarak SCHEMA OWNER değerini belirtin.

Remarks

ALTER AUTHORIZATION, sahibi olan herhangi bir varlığın sahipliğini değiştirmek için kullanılabilir. Veritabanı içeren varlıkların sahipliği herhangi bir veritabanı düzeyi sorumlusuna aktarılabilir. Sunucu düzeyinde varlıkların sahipliği yalnızca sunucu düzeyindeki sorumlulara aktarılabilir.

Important

SQL Server 2005(9.x) sürümünden başlayarak, bir kullanıcı başka bir veritabanı kullanıcısı tarafından sahip olunan bir şemanın içerdiği BIR OBJECT veya TYPE'a sahip olabilir. Bu, SQL Server'ın önceki sürümlerindeki bir davranış değişikliğidir. Daha fazla bilgi için bkz . OBJECTPROPERTY (Transact-SQL) ve TYPEPROPERTY (Transact-SQL).

"object" türünde aşağıdaki şema içeren varlıkların sahipliği aktarılabilir: tablolar, görünümler, işlevler, yordamlar, kuyruklar ve eş anlamlılar.

Aşağıdaki varlıkların sahipliği aktarılamaz: bağlı sunucular, istatistikler, kısıtlamalar, kurallar, varsayılanlar, tetikleyiciler, Hizmet Aracısı kuyrukları, kimlik bilgileri, bölüm işlevleri, bölüm şemaları, veritabanı ana anahtarları, hizmet ana anahtarı ve olay bildirimleri.

Şu güvenli hale getirilebilir sınıfların üyelerinin sahipliği aktarılamaz: sunucu, oturum açma, kullanıcı, uygulama rolü ve sütun.

SCHEMA OWNER seçeneği yalnızca şema içeren bir varlığın sahipliğini aktarırken geçerlidir. SCHEMA OWNER, varlığın sahipliğini bulunduğu şemanın sahibine aktarır. Yalnızca OBJECT, TYPE veya XML SCHEMA COLLECTION sınıfı varlıkları şema içerir.

Hedef varlık bir veritabanı değilse ve varlık yeni bir sahipe aktarılıyorsa, hedefteki tüm izinler bırakılır.

Note

Şemalar veritabanı kullanıcılarına eşdeğer değildir. Veritabanı kullanıcıları ile şemalar arasındaki farkları belirlemek için Sistem kataloğu görünümlerini kullanın.

Ayrıca aşağıdakilere dikkat edin:

Important

Bir nesnenin sahibini bulmanın tek güvenilir yolu sys.objects katalog görünümünü sorgulamaktır. Türün sahibini bulmanın tek güvenilir yolu, TYPEPROPERTY işlevini kullanmaktır.

Özel Durumlar ve Koşullar

Aşağıdaki tabloda, yetkilendirmeyi değiştirmek için geçerli olan özel durumlar, özel durumlar ve koşullar listeleniyor.

Class Condition
OBJECT Tetikleyicilerin, kısıtlamaların, kuralların, varsayılanların, istatistiklerin, sistem nesnelerinin, kuyrukların, dizinli görünümlerin veya dizinli görünümlere sahip tabloların sahipliğini değiştiremezsiniz.
SCHEMA Sahiplik aktarıldığında, açık sahiplere sahip olmayan şema içeren nesneler üzerindeki izinler bırakılır. sys, dbo veya information_schema sahibi değiştirilemez.
TYPE Sys veya information_schema ait bir TYPE'ın sahipliğini değiştiremezsiniz.
SÖZLEŞME, İleti TÜRÜ veya HİzMET Sistem varlıklarının sahipliği değiştirilemez.
SİMETRİK ANAHTAR Genel geçici anahtarların sahipliği değiştirilemez.
SERTIFIKA veya ASIMETRIK ANAHTAR Bu varlıkların sahipliğini bir rol veya gruba aktaramazsınız.
ENDPOINT Sorumlu bir oturum açma bilgisi olmalıdır.

Veritabanları için ALTER AUTHORIZATION

SQL Server için

Yeni sahip için gereksinimler: Yeni sahip sorumlusu aşağıdakilerden biri olmalıdır:

  • SQL Server kimlik doğrulaması oturum açma bilgileri.
  • Bir Windows kullanıcısını (grup değil) temsil eden bir Windows kimlik doğrulaması oturum açma bilgisi.
  • Bir Windows grubunu temsil eden bir Windows kimlik doğrulaması oturum açma bilgileri aracılığıyla kimlik doğrulamasından geçen bir Windows kullanıcısı.

ALTER AUTHORIZATION deyimini yürüten kişinin gereksinimleri:Sysadmin sabit sunucu rolünün üyesi değilseniz, veritabanında en azından SAHIPLIK ALMA iznine sahip olmanız ve yeni sahip oturum açmada KIMLIĞE BÜRÜN iznine sahip olmanız gerekir.

Azure SQL Veritabanı için

Yeni sahip için gereksinimler: Yeni sahip sorumlusu aşağıdakilerden biri olmalıdır:

  • SQL Server kimlik doğrulaması oturum açma bilgileri.
  • Microsoft Entra Kimliği'nde bir federasyon kullanıcısı (grup değil) var.
  • Yönetilen kullanıcı (grup değil) veya Microsoft Entra Id'de bulunan bir uygulama.

Yeni sahip bir Microsoft Entra kullanıcısıysa, yeni sahibin yeni veritabanı sahibi (dbo) olacağı veritabanında kullanıcı olarak bulunamaz. Microsoft Entra kullanıcısının, ALTER AUTHORIZATION deyimi yürütülmeden önce veritabanı sahipliğini yeni kullanıcıyla değiştirmeden önce veritabanından kaldırılması gerekir. MICROSOFT Entra kullanıcılarını SQL Veritabanı ile yapılandırma hakkında daha fazla bilgi için bkz. Microsoft Entra kimlik doğrulamasını yapılandırma.

ALTER AUTHORIZATION deyimini yürüten kişinin gereksinimleri: Bu veritabanının sahibini değiştirmek için hedef veritabanına bağlanmanız gerekir.

Aşağıdaki hesap türleri bir veritabanının sahibini değiştirebilir.

  • Azure'da mantıksal sunucu oluşturulduğunda sağlanan SQL yöneticisi olan hizmet düzeyi asıl oturum açma bilgileri.
  • Mantıksal sunucu için Microsoft Entra yöneticisi..
  • Veritabanının geçerli sahibi.

Aşağıdaki tabloda gereksinimleri özetlemektedir:

Executor Target Result
SQL Server Kimlik Doğrulaması oturum açma SQL Server Kimlik Doğrulaması oturum açma Success
SQL Server Kimlik Doğrulaması oturum açma Microsoft Entra kullanıcısı Fail
Microsoft Entra kullanıcısı SQL Server Kimlik Doğrulaması oturum açma Success
Microsoft Entra kullanıcısı Microsoft Entra kullanıcısı Success

Veritabanının Microsoft Entra sahibini doğrulamak için kullanıcı veritabanında (bu örnekte testdb) aşağıdaki Transact-SQL komutunu yürütür.

SELECT CAST(owner_sid as uniqueidentifier) AS Owner_SID
FROM sys.databases
WHERE name = 'testdb';

Çıkış, veritabanı sahibi olarak atanan Microsoft Entra kullanıcısının veya hizmet sorumlusunun nesne kimliğine karşılık gelen bir GUID (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXgibi) olacaktır. Microsoft Entra Id'de kullanıcının nesne kimliğini denetleyerek bunu doğrulayabilirsiniz. Sql Server kimlik doğrulaması oturum açma kullanıcısı veritabanı sahibi olduğunda, veritabanı sahibini doğrulamak için ana veritabanında aşağıdaki deyimi yürütür:

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;

En iyi uygulama

Microsoft Entra kullanıcılarını veritabanının tek tek sahipleri olarak kullanmak yerine , db_owner sabit veritabanı rolünün üyesi olarak bir Microsoft Entra grubu kullanın. Aşağıdaki adımlarda, devre dışı bırakılmış oturum açma bilgilerinin veritabanı sahibi olarak yapılandırılması ve Microsoft Entra grubunun (mydbogroup) db_owner rolüne üye yapılması gösterilmektedir.

  1. SQL Server'da Microsoft Entra yöneticisi olarak oturum açın ve veritabanının sahibini devre dışı bırakılmış bir SQL Server kimlik doğrulaması oturumuyla değiştirin. Örneğin, kullanıcı veritabanından şu komutu yürütür:

    ALTER AUTHORIZATION ON database::testdb TO DisabledLogin;
    
  2. Veritabanına sahip olması gereken bir Microsoft Entra grubu oluşturun ve bunu kullanıcı veritabanına kullanıcı olarak ekleyin. Örneğin:

    CREATE USER [mydbogroup] FROM EXTERNAL PROVIDER;
    
  3. Kullanıcı veritabanında, Microsoft Entra grubunu temsil eden kullanıcıyı db_owner sabit veritabanı rolüne ekleyin. Örneğin:

    ALTER ROLE db_owner ADD MEMBER mydbogroup;
    

mydbogroup Artık üyeler veritabanını db_owner rolünün üyeleri olarak merkezi olarak yönetebilir.

  • Bu grubun üyeleri Microsoft Entra grubundan kaldırıldığında, bu veritabanı için dbo izinlerini otomatik olarak kaybederler.
  • Benzer şekilde, Microsoft Entra grubuna mydbogroup yeni üyeler eklenirse, bu veritabanı için otomatik olarak dbo erişimi kazanırlar.

Belirli bir kullanıcının geçerli dbo iznine sahip olup olmadığını denetlemek için kullanıcının aşağıdaki deyimi yürütmesini sağlayın:

SELECT IS_MEMBER ('db_owner');

1 dönüş değeri, kullanıcının rolün üyesi olduğunu gösterir.

Permissions

Varlık üzerinde SAHIPLIK ALMA izni gerektirir. Yeni sahip bu deyimi yürüten kullanıcı değilse, 1) Bir kullanıcı veya oturum açma ise yeni sahip üzerinde KIMLIĞE BÜRÜNme izni de gerektirir; veya 2) yeni sahip bir rolse, rol üyeliğiyse veya rol üzerinde ALTER izni varsa; veya 3) yeni sahip bir uygulama rolüyse, uygulama rolü üzerinde ALTER izni.

Examples

A. Tablonun sahipliğini aktarma

Aşağıdaki örnek, tablosunun Sprockets sahipliğini kullanıcıya MichikoOsadaaktarır. Tablo şema Partsiçinde bulunur.

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

Sorgu aşağıdaki gibi de görünebilir:

ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO

Nesne şeması deyiminin bir parçası olarak dahil değilse, Veritabanı Altyapısı nesneyi kullanıcılar varsayılan şemasında arar. Örneğin:

ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;

B. Bir görünümün sahipliğini şema sahibine aktarma

Aşağıdaki örnek, görünümü içeren şemanın sahibine sahipliği ProductionView06 aktarır. Görünüm şema Productioniçinde bulunur.

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

C. Şemanın sahipliğini kullanıcıya aktarma

Aşağıdaki örnek şemanın SeattleProduction11 sahipliğini kullanıcıya SandraAlayoaktarır.

ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO

D. Uç noktanın sahipliğini SQL Server oturum açma bilgilerine aktarma

Aşağıdaki örnek uç noktanın CantabSalesServer1 sahipliğini öğesine JaePakaktarır. Uç nokta sunucu düzeyinde güvenli hale getirilebilir olduğundan, uç nokta yalnızca sunucu düzeyinde bir sorumluya aktarılabilir.

için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO

E. Tablonun sahibini değiştirme

Aşağıdaki örneklerin her biri veritabanındaki Sprockets tablonun Parts sahibini veritabanı kullanıcısı MichikoOsadaolarak değiştirir.

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. Veritabanının sahibini değiştirme

Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, Analiz Platformu Sistemi (PDW), SQL Veritabanı.

Aşağıdaki örnek, veritabanının sahibini Parts oturum açma MichikoOsadaolarak değiştirir.

ALTER AUTHORIZATION ON DATABASE::Parts TO MichikoOsada;

G. Veritabanının sahibini Microsoft Entra kullanıcısı olarak değiştirme

Aşağıdaki örnekte, adlı cqclinic.onmicrosoft.comözel bir Microsoft Entra etki alanına sahip bir kuruluştaki SQL Server için Microsoft Entra yöneticisi, aşağıdaki komutu kullanarak veritabanının targetDB geçerli sahipliğini değiştirebilir ve mevcut bir Microsoft Entra kullanıcısını richel@cqclinic.onmicorsoft.com yeni veritabanı sahibi yapabilir:

ALTER AUTHORIZATION ON database::targetDB TO [rachel@cqclinic.onmicrosoft.com];

Ayrıca Bkz.

OBJECTPROPERTY (Transact-SQL)TYPEPROPERTY (Transact-SQL)EVENTDATA (Transact-SQL)