CREATE USER (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'de Azure Synapse AnalyticsSQL veritabanı

Geçerli veritabanına bir kullanıcı ekler. Aşağıdaki liste, 13 kullanıcı tipini ve en temel sözdizimi örneklerini göstermektedir:

Note

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\test];

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

  • SQL Server kimlik doğrulaması kullanan bir girişe dayalı kullanıcı. CREATE USER Mary;

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

    Note

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

    Note

    Microsoft Fabric'teki SQL veritabanı, girişleri veya girişlere dayalı kullanıcıları desteklemez.

Veritabanında kimlik doğrulama yapan kullanıcılar - Veritabanınızı daha taşınabilir hale getirmek için içerili kullanıcıları kullanın.
Azure SQL Veritabanı'de 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\test];

  • 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 [test@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\test];

  • 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\test];

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 Contoso50;
  • Asimetrik anahtara dayalı kullanıcı. Oturum açılamıyor, ancak izinler verilebilir ve modülleri imzalayabilir. CREATE User TestProcess FROM ASYMMETRIC KEY Contoso09;

Transact-SQL söz dizimi kuralları

Syntax

SQL Server, Azure SQL Veritabanı ve 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 }

Arguments

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.

LOGIN 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.

Eğer bu CREATE USER ifade SQL batch'teki tek ifade ise, Azure SQL Veritabanı WITH LOGIN kölünü destekler. Eğer bu CREATE USER ifade SQL batch'inde tek ifade değilse veya dinamik SQL'de çalışıyorsa, WITH LOGIN cümlesi desteklenmez.

ILE DEFAULT_SCHEMA = schema_name

Bu veritabanı kullanıcısı için nesnelerin adlarını çözümlediğinde sunucu tarafından aranan 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'

Şunlara uygulanır: SQL Server 2022 (16.x) ve sonraki sürümler, SQL Database, SQL Yönetilen Örneği, Azure Synapse Analytics, SQL database in Microsoft Fabric

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 prensipleri için sözdizimi CREATE USER şunları gerektirir:

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

    • CREATE USER [test@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 [test@contoso.com] FROM LOGIN [test@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'

SQL Server 2012 (11.x) ve sonraki sürümler, SQL Database için geçerlidir.

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

SQL Server 2012 (11.x) ile başlayan SQL Server ve Azure SQL Veritabanı, SHA-512 hash'ını 32-bit rastgele ve benzersiz bir tuz ile birleştirmiştir. Bu yöntem, saldırganların parolaları çözmesini istatistiksel olarak mümkün hale getirdi.

SQL Server 2025 (17.x), parola tabanlı anahtar türetme işlevi (PBKDF) olarak da bilinen RFC2898 yinelemeli karma algoritmasını tanıtır. 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. Bu güvenlik geliştirmesi, SQL Kimlik Doğrulaması oturum açma işlemleri için oturum açma süresini biraz artırabilen daha güçlü bir karma algoritması kullanır. Etki genellikle bağlantı havuzu olan ortamlarda daha düşüktür, ancak havuza alınmamış veya oturum açma gecikmesinin yakından izlendiği senaryolarda daha belirgin olabilir.

OLMADAN LOGIN

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

CERTIFICATE cert_name

Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler, SQL Veritabanı, Microsoft Fabric'te SQL veritabanı

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

ASYMMETRIC KEY asym_key_name

Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümler, SQL Veritabanı, Microsoft Fabric'te SQL veritabanı

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

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

Geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler, SQL Veritabanı

Yeni kullanıcı için varsayılan dili belirtir. Kullanıcı için varsayılan bir dil belirlerseniz ve daha sonra veritabanının varsayılan dilini değiştirirseniz, kullanıcının varsayılan dili belirtildiği gibi kalır. Varsayılan bir dil belirtmezseniz, kullanıcı veritabanının varsayılan dilini alır. Kullanıcı için varsayılan bir dil belirtmezseniz ve sonra veritabanının varsayılan dilini değiştirirseniz, kullanıcının varsayılan dili veritabanı için yeni varsayılan dile geçer.

Important

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

SID = sid

SQL Server 2012 (11.x) ve sonraki sürümler ile Microsoft Fabric'teki SQL veritabanı için geçerlidir.

SQL Server 2012 (11.x) ve sonraki sürümlerde, yalnızca kapalı bir veritabanında şifresi (SQL Server doğrulaması) olan kullanıcılar için geçerlidir. Yeni veritabanı kullanıcısının SID'sini belirtir. Bu seçeneği seçmezseniz, 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 özellik, birden fazla veritabanında kullanıcı yaratırken Always On yedekleme için hazırlanırken faydalıdır. Bir kullanıcının SID'sini belirlemek için sys.database_principalssorgu .

Microsoft Fabric'teki SQL veritabanında, sid belirtilen Microsoft Entra sorumlusunun geçerli bir kimliği olmalıdır. Eğer ana görevli bir kullanıcı veya grup ise, ID kullanıcının veya grubun Microsoft Entra nesne ID'si olmalıdır. Eğer Microsoft Entra prensibi bir servis yöneticisi (bir uygulama veya yönetilen bir kimlik) ise, kimlik 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. Argümanı SID kullanıyorsanız, TYPE.

TYPE = [ 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 ]

SQL Server 2016 (13.x) ve sonraki sürümler, SQL Veritabanı için geçerlidir.

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.

Warning

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.

DIŞ SAĞLAYICIDAN

Şunlara uygulanır: SQL Server 2022 (16.x) ve sonraki sürümler, SQL Database, Azure SQL Yönetilen Örneği, Microsoft Fabric'te SQL database

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.

Eğer ifade CREATE USER veren müdür Microsoft Entra kullanıcı yöneticisiyse, müdür veya müdürün 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, Microsoft Entra'da ana veren CREATE USER bir servis yöneticisiyse kullanamazsınızFROM EXTERNAL PROVIDER. 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.

ILE OBJECT_ID = 'nesne'

Şunlara uygulanır: SQL Server 2025 (17.x) ve sonraki sürümler, SQL Database, Azure SQL Yönetilen Örneği, Microsoft Fabric'te SQL database

Microsoft Entra Nesne Kimliğini belirtir. Eğer belirtirseniz OBJECT_ID, user_name orijinal ana gösterim adından oluşturulmuş kullanıcı tanımlı bir takma addır ve eklenmiş bir ek 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. Bu WITH OBJECT_ID seçeneğin kullanımı hakkında daha fazla bilgi için Microsoft Entra girişleri ve benzersiz olmayan görünümlü kullanıcılar sayfasına bakabilirsiniz.

Note

SQL Server 2025 (17.x) ile itibaren, bu WITH OBJECT_ID seçenek Microsoft Entra girişleri ve benzersiz görünüm isimlerine sahip kullanıcılar için desteklenmektedir.

Eğer hizmet ana gösterim adı bir kopya değilse, varsayılan CREATE LOGIN veya CREATE USER ifadeyi kullanın. WITH OBJECT_ID uzantısı, nonunique hizmet sorumlularıyla kullanılmak üzere uygulanan bir sorun giderme onarım öğesidir. Benzersiz bir hizmet ilkesiyle kullanılması tavsiye edilmez. WITH OBJECT_ID Sonek eklemeden hizmet sorumlusu uzantısını kullanma başarıyla çalıştırılır, ancak oturum açmanın veya kullanıcının hangi hizmet sorumlusu için oluşturulduğu belli değildir. Hizmet prensibini benzersiz şekilde tanımlamak için bir ek eki kullanarak bir takma ad oluşturmanız önerilir.

Remarks

Eğer atlarsanızFOR LOGIN, yeni veritabanı kullanıcısı aynı isimle SQL Server girişine eşlenir.

Varsayılan şema, sunucunun bu veritabanı kullanıcısı için nesne isimlerini çözdüğünde aradığı ilk şemadır. Aksi belirtilmedikçe, varsayılan şema bu veritabanı kullanıcısı tarafından oluşturulan nesnelerin sahibidir.

Kullanıcının varsayılan bir şeması varsa, sunucu o varsayılan şemayı kullanır. Kullanıcı varsayılan bir şemaya sahip değilse ama varsayılan şeması olan bir grubun üyesiyse, sunucu grubun varsayılan şemasını kullanır. Kullanıcının varsayılan şeması yoksa ve birden fazla gruba aittiyse, sunucu, açıkça belirlenmiş varsayılan şemaya sahip gruplar arasında en principal_id düşük olan Windows grubunun yapılandırma varsayılan şemasını kullanır. Mevcut varsayılan şemalardan birini tercih edilen şema olarak açıkça seçemezsiniz. Sunucu bir kullanıcı için varsayılan şema belirleyemiyorsa, şemayı dbo kullanır.

Gösterdiği şemayı oluşturmadan önce ayarlayabilirsiniz DEFAULT_SCHEMA .

DEFAULT_SCHEMA Bir kullanıcı oluşturulduğunda sertifikaya veya asimetrik anahtara eşlenemezsiniz.

Sunucu, kullanıcının sabit sunucu rolünün bir üyesiyse sysadmin değerini görmezden DEFAULT_SCHEMA gelir. Sabit sunucu rolünün sysadmin tüm üyelerinin varsayılan şeması 'dir.dbo

Bu madde, WITHOUT LOGIN SQL doğrulamalı bir girişe eşlenmeyen bir kullanıcı yaratır. Diğer veritabanlarına konuk olarak bağlanabilir. Bu kullanıcıya giriş olmadan izin atamanız. Güvenlik bağlamı giriş yapmayan bir kullanıcıya geçtiğinde, orijinal kullanıcı giriş yapmadan izin alır. Örneğin, bkz. D. Giriş olmadan bir kullanıcı yaratmak ve kullanmak.

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

Misafir kullanıcı oluşturmak için kullanamazsınız CREATE USER çünkü misafir kullanıcı zaten her veritabanında mevcut. Konuk kullanıcıya izin vererek CONNECT etkinleştirebilirsiniz, gösterildiği gibi:

GRANT CONNECT TO guest; 
GO  

Veritabanı kullanıcıları hakkında bilgileri sys.database_principals katalog görünümünde görebilirsiniz.

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 girişlerini kullanarak, veritabanı düzeyindeki Microsoft Entra prensiplerini sunucu düzeyindeki Microsoft Entra girişleriyle eşleyebilirsiniz. Microsoft Entra girişinden Microsoft Entra kullanıcısı oluşturmak için aşağıdaki sözdizimi kullanın:

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

Kullanıcıyı Azure SQL veritabanında oluşturduğunuzda, login_name mevcut Microsoft Entra girişine karşılık gelmelidir. Aksi takdirde, maddeyi FROM EXTERNAL PROVIDER kullanmak veritabanında giriş olmadan yalnızca Microsoft Entra kullanıcısı master oluşturur. Örneğin, aşağıdaki komut içerdiği bir kullanıcı oluşturur:

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

Sözdizimi ö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\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • 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.

Important

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\WindowsUserTest]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Test WITH PASSWORD = '<strong password>'

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\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • 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

Security

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.

Içerikli veritabanları için özel hususlar

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 doğrulamalı girişe dayalı bir veritabanı kullanıcısını, şifreli kapalı veritabanı kullanıcısına dönüştürmek 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), Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Azure Synapse Analytics içeren veritabanı kullanıcıları için SSMS çoklu faktörlü kimlik doğrulamayı destekler. Daha fazla bilgi için bkz. Microsoft Entra çok faktörlü kimlik doğrulamasıkullanma.

Permissions

Veritabanında ALTER ANY USER izni gerektirir.

SQL Server 2022 ve sonraki sürümler için izinler

Veritabanı üzerinde CREATE USER izni gereklidir.

Examples

A. SQL Server girişine dayalı bir veritabanı kullanıcısı oluşturun

Aşağıdaki örnek önce veritabanında adlandırılmış test bir SQL Server girişi oluşturur ve ardından buna karşılık gelen bir veritabanı kullanıcısını test oluştururAdventureWorks2025.master

--Connect to the master database
CREATE LOGIN test   
    WITH PASSWORD = '<strong password>';  

Kullanıcı veritabanına geçin. Örneğin, SQL Server'da USE [AdventureWorks2022] deyimini kullanın. Azure SQL Veritabanı'de bu USE ifade mevcut değildir. Bunun yerine, doğrudan hedef veritabanına bağlanın ve kod örneğinin geri kalanını çalıştırın. Bu giriş tabanlı örnek, Microsoft Fabric'teki SQL veritabanı için geçerli değildir; çünkü SQL veritabanı girişleri veya girişlere dayalı kullanıcıları desteklemez.

--Connect to a user database
CREATE USER test FOR LOGIN test;
GO   

B. Varsayılan bir şemaya sahip bir veritabanı kullanıcısı oluşturun

Aşağıdaki örnek önce sizin verdiğiniz şifreyle adlandırılmış bir sunucu girişi testlogin oluşturur, ardından varsayılan şema Marketingile karşılık gelen bir veritabanı kullanıcısı testuseroluşturur.

--Connect to the master database
CREATE LOGIN testlogin
    WITH PASSWORD = '<strong password>';  

Kullanıcı veritabanına geçin. Örneğin, SQL Server'da USE [AdventureWorks2022] deyimini kullanın. Azure SQL Veritabanı ve Microsoft Fabric'teki SQL veritabanında bu USE ifade mevcut değildir. Bunun yerine, doğrudan hedef veritabanına bağlanın ve kod örneğinin geri kalanını çalıştırın.

--Connect to a user database
CREATE USER testuser FOR LOGIN testlogin
    WITH DEFAULT_SCHEMA = Marketing;  

C. Bir sertifikadan bir veritabanı kullanıcısı oluşturun

Aşağıdaki örnek, testsertifikadan bir veritabanı kullanıcısı Contoso_Cert oluşturur. Daha fazla bilgi için bkz CREATE CERTIFICATE . (Transact-SQL).

USE AdventureWorks2022;  
CREATE CERTIFICATE Contoso_Cert  
    ENCRYPTION BY PASSWORD = '<strong password>'  
    WITH SUBJECT = 'Contoso Facility Supervisors',
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER test FOR CERTIFICATE Contoso_Cert;  
GO   

D. Giriş olmadan bir kullanıcı yaratmak ve kullanmak

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\test 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\test] ;  
GO

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

EXECUTE AS USER = 'CustomApp' ;  
GO  

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

REVERT ;  
GO  

E. Şifreyle kapalı bir veritabanı kullanıcısı oluşturun

Aşağıdaki örnek, parola içeren bir veritabanı kullanıcısı oluşturur. Bu örneği yalnızca kapalı bir veritabanında çalıştırabilirsiniz.

Bu örnek, SQL Veritabanı ile birlikte çalışır, eğer 'yi kaldırırsanız DEFAULT_LANGUAGE.

USE AdventureWorks2022;  
GO  
CREATE USER test  
WITH PASSWORD='<password>'
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F. Alan girişi için kapalı bir veritabanı kullanıcısı oluşturun

Aşağıdaki örnek, bir alan adında Contosobir giriş için kapalı bir veritabanı kullanıcısı test oluşturur. Bu örneği yalnızca kapalı bir veritabanında çalıştırabilirsiniz.

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

G. Belirli bir SID ile kapalı bir veritabanı kullanıcısı oluşturun

Aşağıdaki örnek, SQL Server'da kimlik doğrulaması ile içerili bir veritabanı kullanıcı olarak oluşturulurTestUser. Bu örneği yalnızca kapalı bir veritabanında çalıştırabilirsiniz.

USE AdventureWorks2022;  
GO  
CREATE USER TestUser WITH PASSWORD = '<strong password>'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;

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

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.

SQL Server 2016 (13.x) ve sonraki sürümler, SQL Veritabanı için geçerlidir.

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

I. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği içinde Microsoft Entra girişinden bir Microsoft Entra kullanıcısı oluşturun

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 SQL Veritabanı mantıksal sunucusunuza veya SQL Yönetilen Örneği'a Microsoft Entra girişini kullanarak giriş yapın. Sunucu yöneticisi girişini veya SQL Veritabanı'ndaki loginmanager rolü bir kişi olan ya da SQL Yönetilen Örneği'da bu sysadmin rolü verilmiş bir giriş kullanın.

Aşağıdaki T-SQL betiği, oturum açma test@contoso.comtest@contoso.combir Microsoft Entra kullanıcısı oluşturur. Bu giriş örnekte CREATE LOGIN oluşturuldu.

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

Important

Bir Microsoft Entra girişinden bir USER oluştururken, user_name ile aynı login_name olarak LOGINbelirtin.

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 [test@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, test@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 [test@contoso.com] FROM EXTERNAL PROVIDER;
GO

Microsoft Fabric'teki SQL veritabanında, Microsoft Entra'da ana veren CREATE USER bir servis yöneticisiyse kullanamazsınızFROM EXTERNAL PROVIDER.

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

Uygulanır: Microsoft Fabric ve Azure SQL Veritabanı içinde SQL database

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 test@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 = 'test@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.

Note

Microsoft Entra hizmet prensibi, Managed Identity (UAMI) veya System-Assigned Managed Identity (SAMI) User-Assigned belirlerken, nesne ID'si değil, istemci ID'sini kullanın.

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 @principal_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 [@principal_name] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);