Aracılığıyla paylaş


CREATE USER (Transact-SQL)

Şunlar için geçerlidir: Sql ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)SQL veritabanıMicrosoft Fabric

Geçerli veritabanına bir kullanıcı ekler. 13 kullanıcı türü, en temel söz diziminin bir örneğiyle listelenir:

Not

Microsoft Entra ID,Azure Active Directory (Azure AD) için yeni ad olsa da, mevcut ortamların kesintiye uğramasını önlemek için Azure AD yine de kullanıcı arabirimi alanları, bağlantı sağlayıcıları, hata kodları ve cmdlet'ler gibi sabit kodlanmış bazı öğelerde kalır. Bu makalede, iki ad birbirinin yerine kullanılabilir.

oturum açma bilgilerini temel alan kullanıcıları

  • Windows Active Directory hesabını temel alan oturum açma bilgilerini temel alan kullanıcı. CREATE USER [Contoso\Fritz];

  • Kullanıcı, Windows grubunu temel alan oturum açma bilgilerini temel alır. CREATE USER [Contoso\Sales];

  • SQL Server kimlik doğrulaması kullanarak oturum açmayı temel alan kullanıcı. CREATE USER Mary;

  • Microsoft Entra oturum açma bilgilerini temel alan kullanıcı. CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]

    Not

    Microsoft Entra sunucu sorumluları (oturum açma bilgileri) şu anda Azure SQL Veritabanı için genel önizleme aşamasındadır.

    Not

    Oturum açma bilgileri ve dolayısıyla oturum açma bilgilerini temel alan kullanıcılar Microsoft Fabric'teki SQL veritabanında desteklenmez.

Veritabanında kimlik doğrulaması - Veritabanınızı daha taşınabilir hale getirmenize yardımcı olması için önerilir.
SQL Veritabanı'nda her zaman izin verilir. Yalnızca SQL Server'da kapsanan bir veritabanında izin verilir.

  • Kullanıcı, oturum açma bilgisi olmayan bir Windows kullanıcısı tabanlıdır. CREATE USER [Contoso\Fritz];

  • Oturum açma bilgisi olmayan bir Windows grubunu temel alan kullanıcı. CREATE USER [Contoso\Sales];

  • Sql Veritabanı veya Azure Synapse Analytics'te microsoft Entra kullanıcılarını temel alan kullanıcı. CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;

  • Parolalı bağımsız veritabanı kullanıcısı. (Azure Synapse Analytics'te kullanılamaz.) CREATE USER Mary WITH PASSWORD = '********';

Windows grup oturum açma bilgileri aracılığıyla bağlanan Windows sorumlularını temel alan kullanıcılar

  • Oturum açma bilgisi olmayan, ancak Bir Windows grubu üyeliği aracılığıyla Veritabanı Altyapısı'na bağlanabilen bir Windows kullanıcısını temel alan kullanıcı. CREATE USER [Contoso\Fritz];

  • Oturum açma bilgisi olmayan, ancak farklı bir Windows grubu üyeliği aracılığıyla Veritabanı Altyapısı'na bağlanabilen bir Windows grubunu temel alan kullanıcı. CREATE USER [Contoso\Fritz];

kimlik doğrulaması yapamayan kullanıcılar - Bu kullanıcılar SQL Server'da veya SQL Veritabanında oturum açamaz.

  • Oturum açma bilgisi olmayan kullanıcı. Oturum açılamıyor ancak izinler verilebilir. CREATE USER CustomApp WITHOUT LOGIN;
  • Sertifikayı temel alan kullanıcı. Oturum açılamıyor, ancak izinler verilebilir ve modülleri imzalayabilir. CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
  • Asimetrik anahtara dayalı kullanıcı. Oturum açılamıyor, ancak izinler verilebilir ve modülleri imzalayabilir. CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;

Transact-SQL söz dizimi kuralları

Sözdizimi

SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği söz dizimi

-- Syntax Users based on logins in master  
CREATE USER user_name   
    [   
        { FOR | FROM } LOGIN login_name   
    ]  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  
  
-- Users that authenticate at the database  
CREATE USER   
    {  
      windows_principal [ WITH <options_list> [ ,... ] ]  
  
    | user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ]   
    | Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    }  
  
 [ ; ]  
  
-- Users based on Windows principals that connect through Windows group logins  
CREATE USER   
    {   
          windows_principal [ { FOR | FROM } LOGIN windows_principal ]  
        | user_name { FOR | FROM } LOGIN windows_principal  
}  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  
  
-- Users that cannot authenticate   
CREATE USER user_name   
    {  
         WITHOUT LOGIN [ WITH <limited_options_list> [ ,... ] ]  
       | { FOR | FROM } CERTIFICATE cert_name   
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name   
    }  
 [ ; ]  
  
<options_list> ::=  
      DEFAULT_SCHEMA = schema_name  
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }  
    | SID = sid   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]

<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name ]   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  
  
-- SQL Database syntax when connected to a federation member  
CREATE USER user_name  
[;]

-- Syntax for users based on Microsoft Entra logins for Azure SQL Managed Instance
CREATE USER user_name   
    [   { FOR | FROM } LOGIN login_name  ]  
    | FROM EXTERNAL PROVIDER
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  


<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name 
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ] 

Azure Synapse Analytics söz dizimi

CREATE USER user_name   
    [ { { FOR | FROM } { LOGIN login_name }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]

CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER  
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]

Microsoft Fabric ve Azure SQL Veritabanı'nda SQL veritabanı söz dizimi

CREATE USER   
    {  
    Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ ,... ] ]    
    | Microsoft_Entra_principal WITH <options_list> [ ,... ] 
    }  
 [ ; ]  
  
-- Users that cannot authenticate   
CREATE USER user_name   
    {    WITHOUT LOGIN [ WITH DEFAULT_SCHEMA = schema_name ]  
       | { FOR | FROM } CERTIFICATE cert_name   
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name   
    }  
 [ ; ]  
  
<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name  
    | OBJECT_ID = 'objectid'

<options_list> ::=  
      DEFAULT_SCHEMA = schema_name  
    | SID = sid  
    | TYPE = { X | E }

Paralel Veri Ambarı söz dizimi

CREATE USER user_name   
    [ { { FOR | FROM }  
      {   
        LOGIN login_name   
      }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]  

Bağımsız değişken

user_name

Kullanıcının bu veritabanında tanımlandığı adı belirtir. user_namebir sysname. En fazla 128 karakter uzunluğunda olabilir. Bir Windows sorumlusunu temel alan bir kullanıcı oluştururken, başka bir kullanıcı adı belirtilmediği sürece Windows asıl adı kullanıcı adı olur.

OTURUM AÇMA login_name

Veritabanı kullanıcısının oluşturulduğu oturum açma bilgilerini belirtir. login_name sunucuda geçerli bir oturum açma bilgisi olmalıdır. Windows sorumlusuna (kullanıcı veya grup), SQL Server kimlik doğrulaması kullanan oturum açma bilgilerine veya Microsoft Entra sorumlusu (kullanıcı, grup veya uygulama) kullanan oturum açma bilgilerine dayalı bir oturum açma işlemi olabilir. Bu SQL Server oturum açma bilgileri veritabanına girdiğinde, oluşturulan veritabanı kullanıcısının adını ve kimliğini alır. Windows sorumlusundan eşlenmiş bir oturum açma bilgisi oluştururken,[domainNameloginName] biçimini kullanın. Örnekler için bkz. söz dizimi özeti.

CREATE USER deyimi sql toplu işlemindeki tek deyimse, Azure SQL Veritabanı WITH LOGIN yan tümcesini destekler. CREATE USER deyimi sql toplu işlemindeki tek deyim değilse veya dinamik SQL'de yürütülürse, WITH LOGIN yan tümcesi desteklenmez.

WITH DEFAULT_SCHEMA = schema_name

Bu veritabanı kullanıcısı için nesnelerin adlarını çözümlediğinde sunucu tarafından aranacak ilk şemayı belirtir.

'windows_principal'

Veritabanı kullanıcısının oluşturulduğu Windows sorumlusunu belirtir. windows_principal bir Windows kullanıcısı veya bir Windows grubu olabilir. windows_principal oturum açma bilgisi olmasa bile kullanıcı oluşturulur. SQL Server'a bağlanırken, windows_principal oturum açma bilgisi yoksa, Windows sorumlusunun oturum açma bilgisi olan bir Windows grubu üyeliği aracılığıyla Veritabanı Altyapısı'nda kimlik doğrulaması yapması veya bağlantı dizesinin ilk katalog olarak kapsanan veritabanını belirtmesi gerekir. Bir Windows sorumlusundan kullanıcı oluştururken,[domainNameloginName] biçimini kullanın. Örnekler için bkz. söz dizimi özeti. Active Directory kullanıcılarını temel alan kullanıcılar, 21 karakterden az adla sınırlıdır.

'Microsoft_Entra_principal'

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve üzeri, SQL Veritabanı, SQL Yönetilen Örneği, Azure Synapse Analytics, Microsoft Fabric'teki SQL veritabanı

Veritabanı kullanıcısının oluşturulduğu Microsoft Entra sorumlusunu belirtir. Microsoft_Entra_principal bir Microsoft Entra kullanıcısı, bir Microsoft Entra grubu veya bir Microsoft Entra uygulaması olabilir. (Microsoft Entra kullanıcıları SQL Veritabanında Windows Kimlik Doğrulaması oturum açma bilgilerine sahip olamaz; yalnızca veritabanı kullanıcıları.) Bağlantı dizesi, ilk katalog olarak kapsanan veritabanını belirtmelidir.

Microsoft Entra sorumluları için CREATE USER söz dizimi şunları gerektirir:

  • Microsoft Entra kullanıcıları için Microsoft Entra nesnesinin UserPrincipalName.

    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • Microsoft Entra sunucu sorumluları (oturum açma bilgileri), veritabanındaki Microsoft Entra oturum açma bilgilerine eşlenen kullanıcılar oluşturmayı tanıtır master . Örneğin, CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];

  • 2048'den fazla Microsoft Entra güvenlik grubunun üyesi olan Microsoft Entra kullanıcıları ve hizmet sorumluları (uygulamalar), Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya Azure Synapse'teki veritabanlarında oturum açmak için desteklenmez.

  • Microsoft Entra grupları ve Microsoft Entra Uygulamaları için Microsoft Entra nesnesinin DisplayName'i. Nurses güvenlik grubuna sahipseniz şunları kullanırsınız:

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

Daha fazla bilgi için bkz. Microsoft Entra kimlik doğrulamasını kullanarak SQL Veritabanına Bağlanma.

SQL Server'da Microsoft Entra kimlik doğrulaması hakkında daha fazla bilgi için bkz . Öğretici: Azure Arc tarafından etkinleştirilen SQL Server için Microsoft Entra kimlik doğrulamasını ayarlama.

WITH PASSWORD = 'parola'

için geçerlidir: SQL Server 2012 (11.x) ve üzeri, SQL Veritabanı.

Yalnızca kapsanan bir veritabanında kullanılabilir. Oluşturulan kullanıcının parolasını belirtir.

SQL Server 2012 (11.x) sürümünden başlayarak SQL Server ve Azure SQL DB, 32 bit rastgele ve benzersiz tuz ile birlikte sha-512 karması kullandı. Bu yöntem, saldırganların parolaları çözmesini istatistiksel olarak mümkün hale getirdi.

SQL Server 2025 (17.x) Önizlemesi, parola tabanlı anahtar türetme işlevi (PBKDF) olarak da bilinen RFC2898 yinelemeli karma algoritmasını kullanıma sunms. Bu algoritma hala SHA-512 kullanır ancak parolayı birden çok kez karma olarak kullanır (100.000 yineleme), deneme yanılma saldırılarını önemli ölçüde yavaşlatır. Bu değişiklik, gelişen güvenlik tehditlerine yanıt olarak parola korumasını geliştirir ve müşterilerin NIST SP 800-63b yönergelerine uymasına yardımcı olur.

OTURUM AÇMADAN

Kullanıcının mevcut oturum açma bilgileriyle eşlenmemesi gerektiğini belirtir.

SERTIFIKA cert_name

için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, SQL Veritabanı, Microsoft Fabric'teki SQL veritabanı

Veritabanı kullanıcısının oluşturulduğu sertifikayı belirtir.

ASIMETRIK ANAHTAR asym_key_name

için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri, SQL Veritabanı, Microsoft Fabric'teki SQL veritabanı

Veritabanı kullanıcısının oluşturulduğu asimetrik anahtarı belirtir.

DEFAULT_LANGUAGE = { NONE | <lcid> | <dil adı> | <dil> }

için geçerlidir: SQL Server 2012 (11.x) ve üzeri, SQL Veritabanı

Yeni kullanıcı için varsayılan dili belirtir. Kullanıcı için varsayılan bir dil belirtilirse ve veritabanının varsayılan dili daha sonra değiştirilirse, kullanıcıların varsayılan dili belirtildiği gibi kalır. Varsayılan dil belirtilmezse, kullanıcının varsayılan dili veritabanının varsayılan dili olur. Kullanıcının varsayılan dili belirtilmezse ve veritabanının varsayılan dili daha sonra değiştirilirse, kullanıcının varsayılan dili veritabanı için yeni varsayılan dile dönüşür.

Önemli

DEFAULT_LANGUAGE yalnızca bağımsız bir veritabanı kullanıcısı için kullanılır.

SID = sid

için geçerlidir: SQL Server 2012 (11.x) ve üzeri ve Microsoft Fabric'teki SQL veritabanı.

SQL Server 2012 (11.x) ve sonraki sürümlerinde, yalnızca kapsanan veritabanında parolaları (SQL Server kimlik doğrulaması) olan kullanıcılar için geçerlidir. Yeni veritabanı kullanıcısının SID'sini belirtir. Bu seçenek belirlenmezse, SQL Server otomatik olarak bir SID atar. Aynı kimliğe (SID) sahip birden çok veritabanında kullanıcı oluşturmak için SID parametresini kullanın. Bu, Always On yük devretmesine hazırlanmak için birden çok veritabanında kullanıcı oluştururken kullanışlıdır. Kullanıcının SID'sini belirlemek için sorgu sys.database_principals.

Microsoft Fabric'teki SQL veritabanında, sid belirtilen Microsoft Entra sorumlusunun geçerli bir kimliği olmalıdır. Sorumlu bir kullanıcı veya grupsa, kimlik kullanıcının/grubun Microsoft Entra nesne kimliği olmalıdır. Microsoft Entra sorumlusu bir hizmet sorumlusuysa (uygulama veya yönetilen kimlik), kimlik bir uygulama kimliği (veya istemci kimliği) olmalıdır. Belirtilen kimlik binary(16) bir değer olmalıdır. Veritabanı Altyapısı, Microsoft Entra'da belirtilen kimliği doğrulamaz. SID bağımsız değişkeni TYPEile birlikte kullanılmalıdır.

TÜR = [ E | X ]

Şunlar için geçerlidir: Microsoft Fabric ve Azure SQL Veritabanı'ndaki SQL veritabanı.

Microsoft Entra sorumlusunun türünü belirtir. E, sorumlunun bir kullanıcı veya hizmet sorumlusu (uygulama veya yönetilen kimlik) olduğunu gösterir. X, sorumlunun bir grup olduğunu gösterir.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | KAPALI ]

için geçerlidir: SQL Server 2016 (13.x) ve üzeri, SQL Veritabanı.

Toplu kopyalama işlemlerinde sunucuda şifreleme meta veri denetimlerini gizler. Bu, kullanıcının verilerin şifresini çözmeden şifrelenmiş verileri tablolar veya veritabanları arasında toplu olarak kopyalamasını sağlar. Varsayılan değer KAPALI'dır.

Uyarı

Bu seçeneğin yanlış kullanılması veri bozulmasına neden olabilir. Daha fazla bilgi için bkz. Always Encrypted tarafından Korunan Hassas Verileri Geçirme.

DıŞ SAĞLAYıCıDAN

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve üzeri, SQL Veritabanı, Azure SQL Yönetilen Örneği, Microsoft Fabric'teki SQL veritabanı

Sorumlunun Microsoft Entra kimlik doğrulaması için olduğunu belirtir. SQL Server, Microsoft Entra'da sağlanan asıl adı otomatik olarak doğrular.

deyimini veren sorumlu bir Microsoft Entra kullanıcı sorumlusuysa, sorumlu (veya sorumlunun grubu) Microsoft Entra'da Dizin Okuyucuları rolünde olmalıdır.

SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde, deyimini veren sorumlu bir hizmet sorumlusuysa, veritabanı sunucusunun veya yönetilen örneğin kimliği Microsoft Entra'da Dizin Okuyucuları rolünde olmalıdır.

Microsoft Fabric'teki SQL veritabanında, FROM EXTERNAL PROVIDER veren bir sorumlu Microsoft Entra'da hizmet sorumlusuysa CREATE USER izin verilmez. Hizmet sorumluları, Microsoft Entra sorumluları için kullanıcı oluşturmak için TYPE ve SID bağımsız değişkenlerini kullanmalıdır.

WITH OBJECT_ID = 'objectid'

Şunlar için geçerlidir: SQL Server 2025 (17.x) Önizleme ve üzeri, SQL Veritabanı, Azure SQL Yönetilen Örneği, Microsoft Fabric'teki SQL veritabanı

Microsoft Entra Nesne Kimliğini belirtir. OBJECT_ID belirtilirse, user_name bir sonek eklenmiş olarak özgün asıl görünen adından oluşturulmuş kullanıcı tanımlı bir diğer ad olabilir. user_name sys.database_principals görünümünde benzersiz bir ad olmalıdır ve diğer tüm sysname sınırlamalarına uymalıdır. WITH OBJECT_ID seçeneğini kullanma hakkında daha fazla bilgi için bkz. Microsoft Entra oturum açma bilgileri vegörünen adları olmayan kullanıcılar.

Not

SQL Server 2025 (17.x) Preview sürümünden WITH OBJECT_ID başlayarak, microsoft Entra oturum açma bilgileri ve benzersiz görünen adlara sahip kullanıcılar için bu seçenek desteklenir.

Hizmet sorumlusu görünen adı yinelenen değilse, varsayılan CREATE LOGIN veya CREATE USER deyimi kullanılmalıdır. WITH OBJECT_ID uzantısı, nonunique hizmet sorumlularıyla kullanılmak üzere uygulanan bir sorun giderme onarım öğesidir. Benzersiz bir hizmet sorumlusuyla kullanılması önerilmez. Sonek eklemeden hizmet sorumlusu için WITH OBJECT_ID uzantısını kullanmak başarıyla çalışır, ancak oturum açma veya kullanıcının hangi hizmet sorumlusu için oluşturulduğu belirgin olmaz. Hizmet sorumlusunu benzersiz bir şekilde tanımlamak için sonek kullanarak bir diğer ad oluşturmanız önerilir.

Açıklamalar

FOR LOGIN atlanırsa, yeni veritabanı kullanıcısı aynı adla SQL Server oturum açma bilgilerine eşlenir.

Varsayılan şema, bu veritabanı kullanıcısı için nesnelerin adlarını çözümlediğinde sunucu tarafından aranacak ilk şema olacaktır. Aksi belirtilmedikçe, varsayılan şema bu veritabanı kullanıcısı tarafından oluşturulan nesnelerin sahibi olur.

Kullanıcının varsayılan şeması varsa, bu varsayılan şema kullanılır. Kullanıcının varsayılan şeması yoksa, ancak kullanıcı varsayılan şeması olan bir grubun üyesiyse, grubun varsayılan şeması kullanılır. Kullanıcının varsayılan şeması yoksa ve birden fazla grubun üyesiyse, kullanıcının varsayılan şeması en düşük principal_id ve açıkça ayarlanmış bir varsayılan şema olan Windows grubunun şeması olur. (Tercih edilen şema olarak kullanılabilir varsayılan şemalardan birini açıkça seçmek mümkün değildir.) Bir kullanıcı için varsayılan şema belirlenemezse dbo şeması kullanılır.

DEFAULT_SCHEMA işaret eden şema oluşturulmadan önce ayarlanabilir.

DEFAULT_SCHEMA, bir sertifikaya veya asimetrik anahtara eşlenmiş bir kullanıcı oluştururken belirtilemiyor.

Kullanıcı sysadmin sabit sunucu rolünün üyesiyse DEFAULT_SCHEMA değeri yoksayılır. Sysadmin sabit sunucu rolünün tüm üyeleri varsayılan dboşemasına sahiptir.

WITHOUT LOGIN yan tümcesi, SQL Server oturum açma bilgileriyle eşlenmeyen bir kullanıcı oluşturur. Diğer veritabanlarına konuk olarak bağlanabilir. İzinler oturum açma olmadan bu kullanıcıya atanabilir ve güvenlik bağlamı oturum açma olmayan bir kullanıcı olarak değiştirildiğinde, özgün kullanıcılar oturum açma olmadan kullanıcının izinlerini alır. Örnek D. Oturum açmaolmadan kullanıcı oluşturma ve kullanma bölümüne bakın.

Yalnızca Windows sorumlularıyla eşlenen kullanıcılar ters eğik çizgi karakterini (\) içerebilir.

CREATE USER, konuk kullanıcı zaten her veritabanında bulunduğundan konuk kullanıcı oluşturmak için kullanılamaz. Konuk kullanıcıya, gösterildiği gibi BAĞLAN izni vererek etkinleştirebilirsiniz:

GRANT CONNECT TO guest; 
GO  

Veritabanı kullanıcıları hakkındaki bilgiler sys.database_principals katalog görünümünde görünür.

Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde sunucu düzeyinde Microsoft Entra oturum açma bilgileri oluşturmak için söz dizimi uzantısı FROM EXTERNAL PROVIDER kullanın. Microsoft Entra oturum açma bilgileri, veritabanı düzeyindeki Microsoft Entra sorumlularının sunucu düzeyinde Microsoft Entra oturum açma bilgileriyle eşlenmesine izin verir. Microsoft Entra oturum açma bilgisinden bir Microsoft Entra kullanıcısı oluşturmak için aşağıdaki söz dizimini kullanın:

CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];

Kullanıcıyı Azure SQL veritabanında oluştururken, login_name mevcut bir Microsoft Entra oturum açma bilgilerine karşılık gelmeli, aksi takdirde FROM EXTERNAL PROVIDER yan tümcesi kullanıldığında yalnızca master veritabanında oturum açma bilgisi olmayan bir Microsoft Entra kullanıcısı oluşturulur. Örneğin, bu komut kapsanan bir kullanıcı oluşturur:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;

Söz Dizimi Özeti

oturum açma bilgilerini temel alan kullanıcıları

Aşağıdaki listede, oturum açma bilgilerine göre kullanıcılar için olası söz dizimi gösterilmektedir. Varsayılan şema seçenekleri listelenmez.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN

Veritabanında kimlik doğrulaması kullanıcılar

Aşağıdaki listede, yalnızca kapsanan bir veritabanında kullanılabilen kullanıcılar için olası söz dizimi gösterilmektedir. Oluşturulan kullanıcılar, ana veritabanındaki oturum açma bilgileriyle ilişkilendirilmeyecektir. Varsayılan şema ve dil seçenekleri listelenmez.

Önemli

Bu söz dizimi kullanıcılara veritabanına erişim verir ve ayrıca Veritabanı Altyapısı'na yeni erişim verir.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'

master sistem veritabanında oturum açmadan Windows sorumlularını temel alan kullanıcılar

Aşağıdaki listede, Bir Windows grubu aracılığıyla Veritabanı Altyapısı'na erişimi olan ancak master sistem veritabanında oturum açma izni olmayan kullanıcılar için olası söz dizimi gösterilmektedir. Bu söz dizimi tüm veritabanı türlerinde kullanılabilir. Varsayılan şema ve dil seçenekleri listelenmez.

Bu söz dizimi, masteroturum açma bilgilerini temel alan kullanıcılara benzer, ancak bu kullanıcı kategorisinin masteriçinde oturum açma bilgisi yoktur. Kullanıcının Windows grubu oturum açma bilgileri aracılığıyla Veritabanı Altyapısı'na erişimi olmalıdır.

Bu söz dizimi, Windows sorumlularını temel alan kapsanan veritabanı kullanıcılarına benzer, ancak bu kullanıcı kategorisi Veritabanı Altyapısı'na yeni erişim elde etmez.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]

kimlik doğrulaması yapamayan kullanıcıları

Aşağıdaki listede, SQL Server'da oturum açabilen kullanıcılar için olası söz dizimi gösterilmektedir.

  • CREATE USER RIGHTSHOLDER WITHOUT LOGIN
  • CREATE USER CERTUSER FOR CERTIFICATE SpecialCert
  • CREATE USER CERTUSER FROM CERTIFICATE SpecialCert
  • CREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKey
  • CREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey

Güvenlik

Kullanıcı oluşturma, veritabanına erişim izni verir, ancak veritabanındaki nesnelere otomatik olarak erişim vermez. Kullanıcı oluşturduktan sonra, veritabanı nesnelerine erişim izni olan veritabanı rollerine kullanıcı eklemek veya kullanıcıya nesne izinleri vermek yaygın eylemlerdir. İzin sistemi tasarlama hakkında bilgi için bkz. Veritabanı Altyapısı İzinlerini Kullanmaya Başlama.

Kapsanan Veritabanları için Özel Dikkat Edilmesi Gerekenler

Kapsanan veritabanına bağlanırken, kullanıcının master veritabanında oturum açma bilgisi yoksa, bağlantı dizesi ilk katalog olarak kapsanan veritabanı adını içermelidir. İlk katalog parametresi, parola içeren bir veritabanı kullanıcısı için her zaman gereklidir.

İçerilen bir veritabanında, kullanıcı oluşturmak veritabanını Veritabanı Altyapısı örneğinden ayırmaya yardımcı olur, böylece veritabanı başka bir SQL Server örneğine kolayca taşınabilir. Daha fazla bilgi için bkz. Kapsanan Veritabanları ve Bağımsız Veritabanı Kullanıcıları - Veritabanınızı TaşınabilirYapma. Sql Server kimlik doğrulaması oturum açma bilgilerini temel alan bir kullanıcıdan veritabanı kullanıcısını parolayla kapsanan veritabanı kullanıcısıyla değiştirmek için bkz. sp_migrate_user_to_contained (Transact-SQL).

Kapsanan bir veritabanında kullanıcıların master veritabanında oturum açmaları gerekmez. Veritabanı Altyapısı yöneticileri, veritabanı altyapısı düzeyi yerine, kapsanan bir veritabanına erişimin veritabanı düzeyinde verilebileceğini anlamalıdır. Daha fazla bilgi için bkz. Bağımsız Veritabanları ile En İyi Güvenlik Yöntemleri.

Azure SQL Veritabanı'nda kapsanan veritabanı kullanıcılarını kullanırken, sunucu düzeyinde güvenlik duvarı kuralı yerine veritabanı düzeyinde bir güvenlik duvarı kuralı kullanarak erişimi yapılandırın. Daha fazla bilgi için bkz. sp_set_database_firewall_rule (Azure SQL Veritabanı).

SQL Server 2022 (16.x), SQL Veritabanı, Azure SQL Yönetilen Örneği ve Azure Synapse Analytics'in içerdiği veritabanı kullanıcıları için SSMS çok faktörlü kimlik doğrulamasını destekler. Daha fazla bilgi için bkz. Microsoft Entra çok faktörlü kimlik doğrulamasıkullanma.

İzinler

Veritabanında ALTER ANY USER izni gerektirir.

SQL Server 2022 ve üzeri için izinler

Veritabanında CREATE USER izni gerektirir.

Örnekler

A. SQL Server oturum açma bilgilerini temel alan veritabanı kullanıcısı oluşturma

Aşağıdaki örnek önce AbolrousHazemadlı bir SQL Server oturumu oluşturur ve ardından AbolrousHazem'de ilgili veritabanı kullanıcı AdventureWorks2022 oluşturur.

CREATE LOGIN AbolrousHazem   
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';  

Kullanıcı veritabanına geçin. Örneğin, SQL Server'da USE AdventureWorks2022 deyimini kullanın. Azure Synapse Analytics ve Analytics Platform Sistemi'nde (PDW), kullanıcı veritabanına yeni bir bağlantı oluşturmanız gerekir.

CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;  
GO   

B. Varsayılan şema ile veritabanı kullanıcısı oluşturma

Aşağıdaki örnek önce parolayla WanidaBenshoof adlı bir sunucu oturumu oluşturur ve ardından Wanidavarsayılan şema Marketingile ilgili bir veritabanı kullanıcısı oluşturur.

CREATE LOGIN WanidaBenshoof   
    WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';  
USE AdventureWorks2022;  
CREATE USER Wanida FOR LOGIN WanidaBenshoof   
    WITH DEFAULT_SCHEMA = Marketing;  
GO  

C. Sertifikadan veritabanı kullanıcısı oluşturma

Aşağıdaki örnek, JinghaoLiusertifikadan bir veritabanı kullanıcısı CarnationProduction50 oluşturur.

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

USE AdventureWorks2022;  
CREATE CERTIFICATE CarnationProduction50  
    WITH SUBJECT = 'Carnation Production Facility Supervisors',  
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;  
GO   

D. Oturum açma olmadan kullanıcı oluşturma ve kullanma

Aşağıdaki örnek, SQL Server oturum açma bilgileriyle eşleşmeyen bir veritabanı kullanıcısı CustomApp oluşturur. Örnek daha sonra bir kullanıcıya adventure-works\tengiz0 kullanıcının kimliğine bürünmek için CustomApp izin verir.

USE AdventureWorks2022;  
CREATE USER CustomApp WITHOUT LOGIN ;  
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;  
GO   

CustomApp kimlik bilgilerini kullanmak için kullanıcı adventure-works\tengiz0 aşağıdaki deyimi yürütür.

EXECUTE AS USER = 'CustomApp' ;  
GO  

adventure-works\tengiz0 kimlik bilgilerine geri dönmek için kullanıcı aşağıdaki deyimi yürütür.

REVERT ;  
GO  

E. Parolayla kapsanan veritabanı kullanıcısı oluşturma

Aşağıdaki örnek, parola içeren bir veritabanı kullanıcısı oluşturur. Bu örnek yalnızca kapsanan bir veritabanında yürütülebilir.

için geçerlidir: SQL Server 2012 (11.x) ve üzeri. bu örnek, DEFAULT_LANGUAGE kaldırılırsa SQL Veritabanı'nda çalışır.

USE AdventureWorks2022;  
GO  
CREATE USER Carlo  
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'  
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F. Etki alanı oturum açma bilgileri için bağımsız veritabanı kullanıcısı oluşturma

Aşağıdaki örnek Contoso adlı bir etki alanında Fritz adlı oturum açma bilgileri için bağımsız bir veritabanı kullanıcısı oluşturur. Bu örnek yalnızca kapsanan bir veritabanında yürütülebilir.

için geçerlidir: SQL Server 2012 (11.x) ve üzeri.

USE AdventureWorks2022;  
GO  
CREATE USER [Contoso\Fritz] ;  
GO   

G. Belirli bir SID ile kapsanan veritabanı kullanıcısı oluşturma

Aşağıdaki örnek CarmenW adlı kimliği doğrulanmış bir SQL Server veritabanı kullanıcısı oluşturur. Bu örnek yalnızca kapsanan bir veritabanında yürütülebilir.

için geçerlidir: SQL Server 2012 (11.x) ve üzeri.

USE AdventureWorks2022;  
GO  
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;

H. Şifrelenmiş verileri kopyalamak için kullanıcı oluşturma

Aşağıdaki örnek, Always Encrypted özelliği tarafından korunan verileri şifrelenmiş sütunlar içeren bir tablo kümesinden şifrelenmiş sütunlar içeren başka bir tablo kümesine (aynı veya farklı bir veritabanında) kopyalayabilen bir kullanıcı oluşturur. Daha fazla bilgi için bkz. Always Encrypted tarafından Korunan Hassas Verileri Geçirme.

için geçerlidir: SQL Server 2016 (13.x) ve üzeri, SQL Veritabanı.

CREATE USER [Chin]   
WITH   
      DEFAULT_SCHEMA = dbo  
    , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;  

Ben. Azure SQL'de Microsoft Entra oturumundan Microsoft Entra kullanıcısı oluşturma

Microsoft Entra oturum açma bilgilerine sahip bir Microsoft Entra kullanıcısı oluşturmak için aşağıdaki söz dizimini kullanın.

Azure veya SQL Yönetilen Örneği'nde mantıksal sunucunuzda, SQL Yönetilen Örneği'nde rolü verilen bir Microsoft Entra oturum açma bilgilerini veya SQL Veritabanı'nda rolü kullanarak oturum açın. Aşağıdaki T-SQL betiği, oturum açma bob@contoso.combob@contoso.combir Microsoft Entra kullanıcısı oluşturur. Bu oturum açma CREATE LOGIN örneğinde oluşturulmuştur.

CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO

Önemli

Microsoft Entra oturumundan USER oluştururken, user_nameLOGIN'den aynı login_name olarak belirtin.

Grup olan bir Microsoft Entra oturumundan grup olarak Bir Microsoft Entra kullanıcısı oluşturma desteklenir.

CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];

GO

Ayrıca, grup olan bir Microsoft Entra oturumundan bir Microsoft Entra kullanıcısı da oluşturabilirsiniz.

CREATE USER [bob@contoso.com] FROM LOGIN [MS Entra group];

GO

J. Microsoft Entra sorumlusundan bağımsız veritabanı kullanıcısı oluşturma

Aşağıdaki söz dizimi, bob@contoso.com'de ilişkili oturum açma bilgisi olmayan bir veritabanında masterbir Microsoft Entra kullanıcısı oluşturur. Veritabanı Altyapısı, belirtilen kullanıcının Microsoft Entra'da mevcut olduğunu doğrular.

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO

K. Doğrulama olmadan Microsoft Entra sorumlusundan bağımsız veritabanı kullanıcısı oluşturma

Şunlar için geçerlidir: Microsoft Fabric ve Azure SQL Veritabanı'nda SQL veritabanı

Bu bölümdeki örnekler, Microsoft Entra'da asıl adları doğrulamadan Microsoft Entra sorumluları için veritabanı kullanıcıları oluşturur.

Aşağıdaki T-SQL örneği, Microsoft Entra kullanıcısı için bob@contoso.comadlı bir veritabanı kullanıcısı oluşturur. <unique identifier sid> yerine yeni kullanıcının SID değerini Microsoft Entra kullanıcısının nesne kimliğiyle değiştirin.

DECLARE @principal_name SYSNAME = 'bob@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);

Aşağıdaki örnek, Microsoft Entra hizmet sorumlusu için HRAppadlı bir veritabanı kullanıcısı oluşturur. <unique identifier sid> yerine yeni kullanıcının SID değerini Microsoft Entra'daki hizmet sorumlusunun istemci kimliğiyle değiştirin.

DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);

Aşağıdaki örnek, Microsoft Entra grubu için HRadlı bir veritabanı kullanıcısı oluşturur. <unique identifier sid> yeni kullanıcının SID değerini grubun nesne kimliğiyle değiştirin.

DECLARE @group_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);

Sonraki adımlar

Kullanıcı oluşturulduktan sonra, ALTER ROLE deyimini kullanarak kullanıcıyı bir veritabanı rolüne eklemeyi göz önünde bulundurun.
Tablolara erişebilmeleri için role GRANT Nesne İzinleri de isteyebilirsiniz. SQL Server güvenlik modeli hakkında genel bilgi için bkz. İzinler.