CREATE USER (Transact-SQL)

Geçerli veritabanına bir kullanıcı ekler. On bir kullanıcı türü vardır:

Ana veritabanında oturum açma kimliği olan kullanıcılar Bu, en yaygın kullanıcı türüdür.

  • Bir Windows kullanıcısı kimliğine dayanan oturum açma kimliği olan kullanıcı.

  • Bir Windows grubu kimliğine dayanan oturum açma kimliği olan kullanıcı.

  • SQL Server kimlik doğrulamasına dayanan oturum açma kimliği olan kullanıcı.

Veritabanında kimlik doğrulayan kullanıcılar Yalnızca içerilen bir veritabanında izin verilir.

  • Oturum açma kimliği olmayan bir Windows kullanıcısı temel alınarak oluşturulan kullanıcı.

  • Oturum açma kimliği olmayan bir Windows grubu temel alınarak oluşturulan kullanıcı.

  • Parolası olan içerilen veritabanı kullanıcısı.

Ana veritabanında oturum açma kimliği olmayan Windows sorumluları temel alınarak oluşturulan kullanıcılar

  • Oturum açma kimliği olmayan, ancak bir Windows grubuna üyeliği yoluyla Veritabanı Altyapısı'ye bağlanabilecek bir Windows kullanıcısı temel alınarak oluşturulan kullanıcı.

  • Oturum açma kimliği olmayan ancak bir farklı Windows grubuna üyeliği yoluyla Veritabanı Altyapısı'ye bağlanabilecek bir Windows grubu temel alınarak oluşturulan kullanıcı.

Kimlik doğrulayamayan kullanıcılar Bu kullanıcılar SQL Server'da oturum açamaz.

  • Oturum açma kimliği olmayan kullanıcı. Oturum açma kimliği olmayan ancak izin verilebilecek kullanıcılar.

  • Bir sertifika temel alınarak oluşturulan kullanıcı. Oturum açma kimliği olmayan ancak izin verilebilecek ve modül imzalayabilen kullanıcılar.

  • Asimetrik bir anahtar temel alınarak oluşturulan kullanıcı. Oturum açma kimliği olmayan ancak izin verilebilen ve modül imzalayabilen kullanıcılar.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

Users based on logins in master
CREATE USER user_name 
    [ 
        { FOR | FROM } LOGIN login_name 
    ]
    [ WITH DEFAULT_SCHEMA = schema_name ] 
[ ; ]

Users that authenticate at the database
CREATE USER 
    {
      windows_principal [ WITH <options_list> [ ,... ] ]
    | user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ] 
    }
 [ ; ]

Users based on Windows principals without logins in master
CREATE USER 
    { 
          windows_principal [ { FOR | FROM } LOGIN windows_principal ]
        | user_name { FOR | FROM } LOGIN windows_principal
    }
    [ WITH DEFAULT_SCHEMA = schema_name ] 
[ ; ]

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 
    }
 [ ; ]

<options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }

Bağımsız değişkenler

  • user_name
    Veritabanında kullanıcının kimliğinin tanımlanması için kullanılacak adı belirtir. user_name bir sysname ifadesidir. Uzunluğu 128 karaktere kadar çıkabilir. Bir Windows sorumlusunu temel alan bir kullanıcı oluşturulurken başka bir kullanıcı adı belirtilmezse Windows sorumlusu adı kullanıcı adı olur.

  • LOGIN login_name
    Kendisi için bir veritabanı kullanıcısı oluşturulan oturum açma kimliğini belirtir. login_name sunucuda geçerli bir oturum açma kimliği olmalıdır. Bir Windows sorumlusunu (kullanıcı veya grup) temel alan veya SQL Server kimlik doğrulaması kullanan bir oturum açma kimliği olabilir. Bu SQL Server oturum açma kimliği veritabanına girdiğinde, oluşturulmakta olan kullanıcının adını ve kimliğini edinir. Bir Windows sorumlusuna eşlenen bir oturum açma kimliği oluştururken, [<domainName>\<loginName>] biçimini kullanın. Örnekler için bkz. Sözdizimi Özeti.

  • WITH DEFAULT_SCHEMA = schema_name
    Sunucunun bu veritabanı kullanıcısının nesnelerinin adlarını çözümlerken arayacağı ilk şemayı belirtir.

  • windows_principal'
    Kendisi için bir veritabanı kullanıcısı oluşturulan Windows sorumlusunu belirtir. windows_principal bir Windows kullanıcısı veya bir Windows grubu olabilir. Kullanıcı, windows_principal bir oturum açma kimliğine sahip olmasa da oluşturulur. SQL Server sürümüne bağlanırken windows_principal bir oturum açma kimliğine sahip değilse, Windows sorumlusunun, oturum açma kimliği olan bir Windows grubu üyeliği üzerinden Veritabanı Altyapısı'de kimliğini doğrulaması veya bağlantı dizesinin içerilen veritabanını ilk katalog olarak belirtmesi gerekir. Bir Windows sorumlusundan bir oturum açma kimliği oluştururken, [<domainName>\<loginName>] biçimini kullanın. Örnekler için bkz. Sözdizimi Özeti.

  • WITH PASSWORD = 'password'
    Yalnızca içerilen bir veritabanında kullanılabilir. Oluşturulmakta olan kullanıcının parolasını belirtir.

  • WITHOUT LOGIN
    Kullanıcının mevcut bir oturum açma kimliğine eşlenmemesi gerektiğini belirtir.

  • CERTIFICATE cert_name
    Kendisi için bir veritabanı kullanıcısı oluşturulan sertifikayı belirtir.

  • ASYMMETRIC KEY asym_key_name
    Kendisi için bir veritabanı kullanıcısı oluşturulan asimetrik anahtarı belirtir.

  • DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
    Yeni kullanıcının varsayılan dilini belirtir. Kullanıcı için bir varsayılan dil belirtilir ve veritabanının varsayılan dili daha sonra değiştirilirse, kullanıcının varsayılan dili belirtildiği gibi kalır. Hiçbir varsayılan dil belirtilmezse, kullanıcının varsayılan dili veritabanının varsayılan dili olur. Kullanıcı için varsayılan dil belirtilmez ve veritabanının varsayılan dili daha sonra değiştirilirse, kullanıcının varsayılan dili veritabanının yeni varsayılan diline çevrilir.

    Önemli notÖnemli

    DEFAULT_LANGUAGE yalnızca içerilen bir veritabanının kullanıcısı için kullanılır.

Açıklamalar

FOR LOGIN çıkarılırsa, yeni veritabanı kullanıcısı aynı ada sahip SQL Server oturum açma kimliğine eşlenir.

Varsayılan şema, sunucunun bu veritabanı kullanıcısının nesnelerinin adlarını çözümlerken arayacağı ilk şema olur. Aksi belirtilmedikçe, varsayılan şema, bu veritabanı kullanıcısının oluşturduğu nesnelerin sahibi olur.

Kullanıcının varsayılan bir şeması varsa, varsayılan şema kullanılır. Kullanıcının varsayılan bir şeması yoksa, ancak kullanıcı varsayılan bir şeması olan bir gruba üyeyse, grubun varsayılan şeması kullanılır. Kullanıcının varsayılan bir şeması yoksa ve kullanıcı, varsayılan bir şeması olan birden fazla gruba üyeyse, en düşük principle_id değerine sahip Windows grubunun şeması kullanılır. (Kullanılabilen varsayılan şemalardan birini tercih edilen şema olarak açıkça seçmek olanaklı değildir.) Kullanıcı için herhangi bir varsayılan şema belirlenemiyorsa, dbo şeması kullanılır.

DEFAULT_SCHEMA, işaret ettiği şema oluşturulmadan önce ayarlanabilir.

Bir sertifika veya asimetrik bir anahtar ile eşleşen bir kullanıcı oluştururken DEFAULT_SCHEMA belirtilemez.

Kullanıcı sysadmin sabit sunucu rolünün bir üyesiyse, DEFAULT_SCHEMA'nın değeri göz ardı edilir. sysadmin sabit sunucu rolünün tüm üyeleri dbo varsayılan şemasına sahiptir.

WITHOUT LOGIN yan tümcesi bir SQL Server oturum açma kimliğine eşlenmeyen bir kullanıcı oluşturur. Diğer veritabanlarına guest olarak bağlanabilir. Bu kullanıcıya oturum açma kimliği verilmeden izinler atanabilir ve güvenlik bağlamı oturum açma kimliği olmayan bir kullanıcıya çevrildiğinde, ilk kullanıcılar oturum açma kimliği olmayan kullanıcının izinlerini alırlar. Bkz. D. Oturum açma kimliği olmayan bir kullanıcı oluşturma ve kullanma örneği.

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

Her veritabanında zaten bir guest kullanıcı olduğundan, CREATE USER bir guest kullanıcı oluşturmak için kullanılamaz. guest kullanıcıyı, ona aşağıda gösterildiği gibi bir CONNECT izni vererek etkinleştirebilirsiniz:

GRANT CONNECT TO guest;
GO

GRANT CONNECT TO guest;
GO

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

Sözdizimi Özeti

Ana veritabanında oturum açma kimliği temel alınarak oluşturulan kullanıcılar

Aşağıdaki liste, oturum açma kimliklerine dayanan kullanıcılar için olabilecek sözdizimlerini göstermektedir. Varsayılan şema seçenekleri listelenmemiştir.

  • 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

Kimliği veritabanında doğrulanan kullanıcılar

Aşağıdaki liste, yalnızca içerilen bir veritabanında kullanılabilen kullanıcılar için olabilecek sözdizimlerini göstermektedir. Oluşturulan kullanıcılar master veritabanındaki herhangi bir oturum açma kimliği ile ilişkilendirilmez. Varsayılan şema ve dil listelenmemiştir.

Güvenlik notuGüvenlik Notu

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

  • CREATE USER [Domain1\WindowsUserBarry]

  • CREATE USER [Domain1\WindowsGroupManagers]

  • CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'

Ana veritabanında oturum açma kimliği olmayan Windows sorumluları temel alınarak oluşturulan kullanıcılar

Aşağıdaki liste, bir Windows grubu üzerinden Veritabanı Altyapısı'ye erişimi olan ancak master veritabanında bir oturum açma kimliği olmayan kullanıcılar için olabilecek sözdizimini göstermektedir. Bu sözdizimi her tür veritabanında kullanılabilir. Varsayılan şema ve dil listelenmemiştir.

Bu sözdizimi ana veritabanındaki oturum açma kimliğine dayalı kullanıcılara benzer, ancak bu kategorideki kullanıcıların ana veritabanında bir oturum açma kimlikleri yoktur. Kullanıcının bir Windows grubu oturum açma kimliği üzerinden Veritabanı Altyapısı'ye erişim olması gerekir.

Bu sözdizimi, Windows sorumlularına dayanan içerilen veritabanı kullanıcılarına benzer, ancak bu kategorideki kullanıcı Veritabanı Altyapısı'ye 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ğrulayamayan kullanıcılar

Aşağıdaki liste, SQL Server oturumu açamayan kullanıcılar için olabilecek sözdizimlerini göstermektedir.

  • 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şturmak bir veritabanına erişim verir ancak veritabanındaki nesnelere otomatik olarak bir erişim vermez. Bir kullanıcı oluşturduktan sonra sık kullanılan işlemler veritabanı nesnelerine erişme izni olan veritabanı rollerine kullanıcı eklemek veya kullanıcıya nesne izinleri vermektir.

İçerilen Veritabanları için Düşünülmesi Gerekenler

İçerilen bir veritabanına bağlanırken, kullanıcının master veritabanında bir oturum açma kimliği yoksa, bağlantı dizesinin içerilen veritabanı adını ilk katalog olarak içermesi gerekir. İlk katalog parametresi, parolası olan bir içerilen 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; bu, veritabanının başka bir SQL Server örneğine kolayca taşınmasını sağlar. Daha fazla bilgi için, bkz. İçerdiği veritabanları. Bir veritabanı kullanıcısını SQL Server kimlik doğrulamasıyla oturum açan bir kullanıcıdan parolası olan bir içerilen veritabanı kullanıcısına çevirmek için sp_migrate_user_to_contained (Transact-sql) konusuna bakın.

İçerilen bir veritabanında kullanıcıların master veritabanında oturum açma kimlikleri olması gerekmez. Veritabanı Altyapısı yöneticileri, içerilen bir veritabanına erişimin Veritabanı Altyapısı düzeyi yerine veritabanı düzeyinde verilebileceğini bilmelidir. Daha fazla bilgi için, bkz. İçerdiği veritabanları ile güvenlik en iyi uygulamalar.

İzinler

Veritabanında ALTER ANY USER izni gerektirir.

Örnekler

A.SQL Server oturum açma kimliğine dayanan bir veritabanı kullanıcısı oluşturma

Aşağıda örnek ilk önce AbolrousHazem adında bir SQL Server oturum açma kimliği oluşturmakta, sonra AdventureWorks2012 içinde buna karşılık gelen bir AbolrousHazem kullanıcısı oluşturmaktadır.

CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks2012;
GO
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO 

CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks2012;
GO
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO 

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

Aşağıdaki örnek ilk önce WanidaBenshoof adında, parolası olan bir sunucu oturum açma kimliği oluşturmakta, sonra Marketing varsayılan şeması ile karşılık gelen bir Wanida kullanıcısı oluşturmaktadır.

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

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

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

Aşağıdaki örnek, CarnationProduction50 sertifikasından JinghaoLiu adlı bir veritabanı kullanıcısı oluşturmaktadır.

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

USE AdventureWorks2012;
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 kimliği olmayan bir kullanıcı oluşturma ve kullanma

Aşağıdaki örnek bir SQL Server oturum açma kimliğine eşlenmeyen bir CustomApp veritabanı kullanıcısı oluşturmaktadır. Örnek daha sonra bir kullanıcıya, CustomApp kullanıcısının kimliğine bürünmesi için bir adventure-works\tengiz0 izni vermektedir.

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

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

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

EXECUTE AS USER = 'CustomApp' ;
GO

EXECUTE AS USER = 'CustomApp' ;
GO

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

REVERT ;
GO

REVERT ;
GO

E.Parolası olan içerilen veritabanı kullanıcısı oluşturma

Aşağıdaki örnek, parolası olan içerilen veritabanı kullanıcısı oluşturur. Bu örnek yalnızca içerilen bir veritabanında çalıştırılabilir.

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

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

F.Etki alanı oturumu açmak için içerilen veritabanı kullanıcısı oluşturma

Aşağıda örnek, Contoso adlı bir etki alanında Fritz adlı bir oturum açma kimliği için içerilen veritabanı kullanıcısı oluşturmaktadır. Bu örnek yalnızca içerilen bir veritabanında çalıştırılabilir.

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

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

Ayrıca bkz.

Başvuru

sys.database_principals (Transact-sql)

alter USER (Transact-sql)

USER (Transact-sql) bırak

Giriş (Transact-sql) oluştur

eventdata (Transact-sql)

Kavramlar

Bir veritabanı kullanıcı oluşturmak

İçerdiği veritabanları