CREATE USER (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

將使用者加入目前資料庫中。 以下列出 13 種使用者類型與最基本的語法範例:

注意

雖然 Microsoft Entra ID 是 Azure Active Directory(Azure AD)的新名稱,但為了防止中斷現有的環境,Azure AD 仍會保留在某些硬式編碼元素中,例如 UI 字段、連線提供者、錯誤碼和 Cmdlet。 在本文中,這兩個名稱是可互換的。

具有 master 登入的使用者 - 這是最常見的使用者類型。

  • 具有 Windows Active Directory 帳戶登入的使用者。 CREATE USER [Contoso\Fritz];
  • 依據 Windows 群組登入的使用者。 CREATE USER [Contoso\Sales];
  • 以使用 SQL Server 驗證登入為基礎的使用者。 CREATE USER Mary;
  • 以 Microsoft Entra 登入為基礎的使用者。 CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]

    注意

    Microsoft Entra 伺服器主體(登入)目前為 Azure SQL 資料庫 公開預覽版。

在資料庫進行驗證的使用者 - 此選項有助於讓您的資料庫更具可攜性。
SQL Database 中一律允許。 只有 SQL Server 中的自主資料庫允許。

  • 依據沒有登入之 Windows 使用者的使用者。 CREATE USER [Contoso\Fritz];

  • 依據沒有登入之 Windows 群組的使用者。 CREATE USER [Contoso\Sales];

  • 以 Microsoft Entra 用戶為基礎的 SQL 資料庫 或 Azure Synapse Analytics 中的使用者。 CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;

  • 具有密碼之自主資料庫使用者。 (無法用於 Azure Synapse Analytics 中)。CREATE USER Mary WITH PASSWORD = '********';

具有 Windows 主體的使用者,其透過 Windows 群組登入進行連接

  • 以未登入但可透過 Windows 群組的成員資格連線到資料庫引擎的 Windows 使用者為基礎的使用者。 CREATE USER [Contoso\Fritz];

  • 以未登入但可透過不同 Windows 群組的成員資格連線到資料庫引擎的 Windows 群組為基礎的使用者。 CREATE USER [Contoso\Fritz];

無法驗證的使用者 - 這些使用者無法登入 SQL Server 或 SQL 資料庫。

  • 沒有登入的使用者。 無法登入,但可以授與許可權。 CREATE USER CustomApp WITHOUT LOGIN;
  • 依據憑證的使用者。 無法登入,但可以授與許可權,而且可以簽署模組。 CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
  • 依據非對稱金鑰的使用者。 無法登入,但可以授與許可權,而且可以簽署模組。 CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;

Transact-SQL 語法慣例

Syntax

-- Syntax for SQL Server, Azure SQL Database, and Azure SQL Managed Instance
  
-- 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 ] ] 
-- Syntax for Azure Synapse Analytics  
  
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 ]  
[;]
-- Syntax for Parallel Data Warehouse  
  
CREATE USER user_name   
    [ { { FOR | FROM }  
      {   
        LOGIN login_name   
      }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

user_name

指定在這個資料庫內用來識別使用者的名稱。 user_name 是一種 sysname。 該名稱長度最多可達 128 個字元。 當建立依據 Windows 主體的使用者時,除非指定另一個使用者名稱,否則 Windows 主體名稱會成為使用者名稱。

LOGIN login_name

指定目前建立之資料庫使用者的登入。 login_name 必須是伺服器中的有效登入。 可以是以 Windows 主體(使用者或群組)、使用 SQL Server 驗證的登入,或使用 Microsoft Entra 主體登入(使用者、群組或應用程式)。 當這個 SQL Server 登入進入資料庫時,它會取得正在建立之資料庫使用者的名稱和識別碼。 在建立與 Windows 主體對應的登入時,使用以下格式:[<domainName>\<loginName>]。 如需範例,請參閱語法摘要

如果 CREATE USER 陳述式是 SQL 批次中的唯一陳述式,Azure SQL Database 會支援 WITH LOGIN 子句。 如果 CREATE USER 陳述式不是 SQL 批次中的唯一陳述式,也不在動態 SQL 中執行,則不支援 WITH LOGIN 子句。

WITH DEFAULT_SCHEMA = schema_name

指定在解析這個資料庫使用者的物件名稱時,伺服器所搜尋到的第一個結構描述。

'windows_principal'

為正在建立的資料庫使用者指定 Windows 主體。 windows_principal 可以是 Windows 使用者或 Windows 群組。 即使 windows_principal 沒有登入,也可以建立使用者。 在連線到 SQL Server 時,如果 windows_principal 沒有登入,則 Windows 主體必須透過具有登入的 Windows 群組成員資格在資料庫引擎中進行驗證,或者,連接字串必須將自主資料庫指定為初始目錄。 從 Windows 主體建立使用者時,使用以下格式:[<domainName>\<loginName>]。 如需範例,請參閱語法摘要。 具有 Active Directory 使用者身分的使用者,其名稱僅限 21 個字元以內。

'Microsoft_Entra_principal'

適用於:SQL Database、SQL 受控執行個體、Azure Synapse Analytics。

指定要建立資料庫使用者的 Microsoft Entra 主體。 Microsoft_Entra_principal可以是 Microsoft Entra 使用者、Microsoft Entra 群組或 Microsoft Entra 應用程式。 (Microsoft Entra 使用者無法在 SQL 資料庫 中登入 Windows 驗證;只有資料庫使用者。連接字串 必須將自主資料庫指定為初始目錄。

針對 Microsoft Entra 主體,CREATE USER 語法需要:

  • Microsoft Entra Users 之 Microsoft Entra 物件的 UserPrincipalName。

    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • Microsoft Entra 伺服器主體 (logins) 引進了建立對應至虛擬 master 資料庫中 Microsoft Entra 登入的使用者。 CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]

  • 不支援屬於 2048 個以上 Microsoft Entra 安全組成員的 Microsoft Entra 使用者和服務主體(應用程式)登入 Azure SQL 資料庫、Azure SQL 受控執行個體 或 Azure Synapse 中的資料庫。

  • Microsoft Entra 群組和 Microsoft Entra Applications 的 DisplayName。 如果您有「護士」安全性群組,則可以使用:

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

如需詳細資訊,請參閱使用 Microsoft Entra 驗證連線到 SQL Database

WITH PASSWORD = 'password'

適用於:SQL Server 2012 (11.x) 和更新版本,以及 SQL Database。

只能用於自主資料庫。 指定正在建立之使用者的密碼。 從 SQL Server 2012 (11.x) 開始,預存密碼資訊會使用加料式 (Salted) 密碼的 SHA-512 加以計算。

WITHOUT LOGIN

指定使用者不得對應到現有的登入。

CERTIFICATE cert_name

適用於:SQL Server 2008 (10.0.x) 和更新版本,以及 SQL Database。

指定目前建立之資料庫使用者的憑證。

ASYMMETRIC KEY asym_key_name

適用於:SQL Server 2008 (10.0.x) 和更新版本,以及 SQL Database。

指定目前建立之資料庫使用者的非對稱金鑰。

DEFAULT_LANGUAGE = { NONE | <lcid> | <語言名稱> | <語言別名> }

適用於:SQL Server 2012 (11.x) 和更新版本,以及 SQL Database。

指定新使用者的預設語言。 如果已指定使用者的預設語言,但稍後變更資料庫的預設語言,使用者預設語言會保持為指定值。 如果未指定預設語言,則使用者的預設語言將是資料庫的預設語言。 如果未指定使用者的預設語言,且稍後變更了資料庫的預設語言,使用者的預設語言將變更為資料庫的新預設語言。

重要

DEFAULT_LANGUAGE 只用於自主資料庫使用者。

SID = sid

適用於:SQL Server 2012 (11.x) 和更新版本。

僅適用於自主資料庫中具有密碼 (SQL Server 驗證) 的使用者。 指定新資料庫使用者的 SID。 若未選取此選項,SQL Server 就會自動指派 SID。 使用 SID 參數即可在多個資料庫中建立具有相同識別 (SID) 的使用者。 當您在多個資料庫中建立使用者以準備 Always On 容錯移轉時,這會很有用。 若要判斷使用者的 SID,請查詢 sys.database_principals。

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL Database。

在大量複製作業時隱藏伺服器上的密碼編譯中繼資料檢查。 這會讓使用者得以在資料表或資料庫間大量複製加密資料,而無須解密資料。 預設值為 OFF。

警告

不當使用這個選項會導致資料損毀。 如需詳細資訊,請參閱移轉透過 Always Encrypted 保護的機密資料

FROM EXTERNAL PROVIDER

適用於:SQL 資料庫和 Azure SQL 受控執行個體。

指定使用者適用於 Microsoft Entra 驗證。

WITH OBJECT_ID = 'objectid'

適用於:SQL 資料庫和 Azure SQL 受控執行個體。 指定 Microsoft Entra 物件識別碼。 OBJECT_ID如果指定 ,則user_name可以是由原始主體顯示名稱所組成的使用者定義別名,後面加上後綴。 user_name在檢視中 sys.database_principals 必須是唯一的名稱,並遵守所有其他 sysname 限制。 如需使用 WITH OBJECT_ID 選項的詳細資訊,請參閱 具有非唯一顯示名稱的 Microsoft Entra 登入和使用者。

注意

如果服務主體顯示名稱不是重複的,則應該使用預設 CREATE LOGINCREATE USER 語句。 延伸WITH OBJECT_ID模組處於公開預覽狀態,而且是實作以搭配非統一服務主體使用的疑難解答修復專案。 不需要將它與唯一的服務主體搭配使用。 使用服務主體的 WITH OBJECT_ID 擴充功能而不新增後綴將會成功執行,但登入或使用者建立的服務主體並不明顯。 建議使用後綴建立別名,以唯一識別服務主體。 SQL Server 不支援擴充 WITH OBJECT_ID 功能。

備註

如果 FOR LOGIN 省略,新的資料庫使用者將會對應至具有相同名稱的 SQL Server 登入。

預設結構描述是伺服器在解析這個資料庫使用者之物件名稱時,所搜尋到的第一個結構描述。 除非另有指定,否則預設結構描述是此資料庫使用者建立之物件的擁有者。

如果使用者有預設結構描述,則將會使用預設結構描述。 如果使用者沒有預設結構描述,但使用者是具有預設結構描述群組的成員,則會使用群組的預設結構描述。 如果使用者沒有預設結構描述,且是具有一個以上群組的成員,則使用者預設結構描述將會是具有最低 principle_id 且明確設定預設結構描述 Windows 群組的結構描述。 (您無法明確選取其中一個可用的預設結構描述當做慣用結構描述)。如果無法判斷使用者的預設結構描述,即會使用 dbo 結構描述。

DEFAULT_SCHEMA 可以在它所指向的結構描述建立之前設定。

當您建立對應到憑證或非對稱金鑰的使用者時,無法指定 DEFAULT_SCHEMA。

如果使用者是系統管理員 (sysadmin) 固定伺服器角色的成員,則會忽略 DEFAULT_SCHEMA 的值。 系統管理員 (sysadmin) 固定伺服器角色的所有成員都有預設的 dbo 結構描述。

WITHOUT LOGIN 子句會建立未對應到 SQL Server 登入的使用者。 這個使用者可以用 guest 的身分連接到其他資料庫。 許可權可以指派給沒有登入的使用者,而且當安全性內容變更為沒有登入的使用者時,原始使用者會收到沒有登入之用戶的許可權。 請參閱範例 D. 建立及使用不含登入的使用者

只有對應到 Windows 主體的使用者可以包含反斜線字元 ( \ )。

您無法使用 CREATE USER 建立來賓使用者,因為每個資料庫都已經有來賓使用者。 您可以授與 guest 使用者 CONNECT 權限來啟用它,如下所示:

GRANT CONNECT TO guest;  
GO  

您可以在 sys.database_principals 目錄檢視中,看到資料庫使用者的資訊。

使用語法延伸模組FROM EXTERNAL PROVIDER在 Azure SQL 資料庫 和 Azure SQL 受控執行個體 中建立伺服器層級的 Microsoft Entra 登入。 Microsoft Entra 登入可讓資料庫層級的 Microsoft Entra 主體對應至伺服器層級的 Microsoft Entra 登入。 若要從 Microsoft Entra 登入建立 Microsoft Entra 使用者,請使用下列語法:

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

在 Azure SQL 資料庫中建立使用者時, login_name 必須對應至現有的 Microsoft Entra 登入,否則使用 FROM EXTERNAL PROVIDER 子句只會建立沒有 master 資料庫中登入的 Microsoft Entra 使用者。 例如,此命令會建立包含的使用者:

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

語法摘要

具有 master 登入的使用者

下列清單顯示依據登入之使用者的可能語法。 未列出預設的結構描述選項。

  • 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

在資料庫進行驗證的使用者

下列清單顯示只能用於自主資料庫使用者的可能語法。 建立的使用者將不會與 master 資料庫中的任何登入相關。 未列出預設的結構描述和語言選項。

重要

此語法會將資料庫的存取權及資料庫引擎的新存取權授與使用者。

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

具有 Windows 主體但不具備 master 登入的使用者

下列清單顯示可透過 Windows 群組存取資料庫引擎,但在 master 中沒有登入之使用者的可能語法。 這個語法可以用於所有類型的資料庫。 未列出預設的結構描述和語言選項。

此語法與以 master 中的登入為基礎的使用者類似,但此類別的使用者在 master 中沒有登入。 使用者必須能夠透過 Windows 群組登入來存取資料庫引擎。

此語法與以 Windows 主體為基礎的自主資料庫使用者類似,但此類別的使用者沒有資料庫引擎的新存取權。

  • 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]

無法驗證的使用者

下列清單顯示無法登入 SQL Server 之使用者的可能語法。

  • 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

安全性

建立使用者會授與對資料庫的存取權,但不會自動授與任何對資料庫物件的存取權。 在建立使用者之後,一般動作是將使用者新增至有權存取資料庫物件的資料庫角色,或將物件權限授與給使用者。 如需設計權限系統的資訊,請參閱 資料庫引擎權限使用者入門

適用於自主資料庫的特殊考量

連線到自主資料庫時,如果使用者在 master 資料庫中沒有登入,則連接字串必須包含自主資料庫名稱作為初始目錄。 具有密碼之自主資料庫使用者永遠需要初始目錄參數。

在自主資料庫中,建立使用者有助於區隔資料庫與資料庫引擎的執行個體,如此便可輕易地將資料庫移至另一個 SQL Server 執行個體。 如需詳細資訊,請參閱自主資料庫自主的資料庫使用者 - 使資料庫可攜。 若要將資料庫使用者從以 SQL Server 驗證登入為基礎的使用者變更為使用密碼的自主資料庫使用者,請參閱 sp_migrate_user_to_contained (Transact-SQL)

在自主資料庫中,使用者必須在 master 資料庫中沒有登入。 資料庫引擎管理員應該了解對自主資料庫的存取權可以在資料庫層級授與,而非資料庫引擎層級。 如需詳細資訊,請參閱 Security Best Practices with Contained Databases

當您在 Azure SQL Database 上使用自主資料庫使用者時,使用資料庫層級防火牆規則來設定存取權,而非使用伺服器層級防火牆規則。 如需詳細資訊,請參閱 sp_set_database_firewall_rule (Azure SQL Database)

針對 SQL Server 2022 (16.x),SQL 資料庫、Azure SQL 受控執行個體 和 Azure Synapse Analytics 包含的資料庫使用者,SSMS 支援多重要素驗證。 如需詳細資訊,請參閱 使用 Microsoft Entra 多重要素驗證

權限

需要資料庫的 ALTER ANY USER 權限。

SQL Server 2022 和更新版本的權限

需要資料庫的 CREATE USER 許可權。

範例

A. 依據 SQL Server 登入建立資料庫使用者

下列範例會先建立一個名為 AbolrousHazem 的 SQL Server 登入,然後在 AdventureWorks2022 中建立對應的資料庫使用者 AbolrousHazem

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

變更為使用者資料庫。 例如,在 SQL Server 中使用 USE AdventureWorks2022 陳述式。 在 Azure Synapse Analytics 和 Analytics Platform System (PDW) 中,您必須建立與使用者資料庫的新連線。

CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;  
GO   

B. 以預設的結構描述建立資料庫使用者

下列範例會先建立一個具有密碼且名叫 WanidaBenshoof 的伺服器登入,然後再以預設的結構描述 Wanida,建立對應的資料庫使用者 Marketing

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

C. 從憑證建立資料庫使用者

下列範例會從憑證 JinghaoLiu 建立一個資料庫使用者 CarnationProduction50

適用於:SQL Server 2008 (10.0.x) 和更新版本。

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. 建立及使用不含登入的使用者

下列範例會建立未對應到 SQL Server 登入的資料庫使用者 CustomApp。 然後此範例會授與使用者 adventure-works\tengiz0 權限來模擬 CustomApp 使用者。

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

若要使用 CustomApp 認證,使用者 adventure-works\tengiz0 會執行下列陳述式。

EXECUTE AS USER = 'CustomApp' ;  
GO  

若要還原回 adventure-works\tengiz0 認證,使用者會執行下列陳述式。

REVERT ;  
GO  

E. 建立具有密碼的自主資料庫使用者

下列範例會建立具有密碼之自主資料庫使用者。 您只能在自主資料庫中執行這個範例。

適用於:SQL Server 2012 (11.x) 和更新版本。 此範例只有在移除 DEFAULT_LANGUAGE 之後才能在 SQL Database 中運作。

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

F. 為網域登入建立自主資料庫使用者

下列範例會為 Contoso 網域中的登入 Fritz,建立自主資料庫使用者。 您只能在自主資料庫中執行這個範例。

適用於:SQL Server 2012 (11.x) 和更新版本。

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

G. 建立具有指定 SID 之自主資料庫使用者

下列範例會建立名稱為 CarmenW 的 SQL Server 驗證自主資料庫使用者。 您只能在自主資料庫中執行這個範例。

適用於:SQL Server 2012 (11.x) 和更新版本。

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

H. 建立使用者以複製加密的資料

下列範例會建立一位使用者,以將受 Always Encrypted 功能保護的資料,從某一組資料表 (包含加密資料行) 複製到另一組具有加密資料行的資料表 (位於相同或不同的資料庫)。 如需詳細資訊,請參閱移轉透過 Always Encrypted 保護的機密資料

適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL Database。

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

I. 在 Azure SQL 中從 Microsoft Entra 登入建立 Microsoft Entra 使用者

若要從 Microsoft Entra 登入建立 Microsoft Entra 使用者,請使用下列語法。

使用 Microsoft Entra 登入在 Azure 或 SQL 受管理執行個體 中登入邏輯伺服器,該登入會sysadmin授與 SQL 受管理執行個體 中的角色,或 loginmanager SQL 資料庫 中的角色。 下列會從登入 bob@contoso.com建立 Microsoft Entra 使用者 bob@contoso.com。 此登入是在 CREATE LOGIN 範例中建立。

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

重要

從 Microsoft Entra 登入建立 USER 時,請指定 user_name 與 LOGIN 相同的login_name

從支援群組的 Microsoft Entra 登入建立 Microsoft Entra 使用者作為群組。

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

GO

您也可以從群組的 Microsoft Entra 登入建立 Microsoft Entra 使用者。

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

GO

J. 從 Microsoft Entra 主體建立自主資料庫使用者

下列語法會在資料庫中建立 Microsoft Entra 使用者 bob@contoso.com,而資料庫中沒有相關聯的登入 master

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

下一步

一旦建立使用者之後,請考慮使用 ALTER ROLE 陳述式,將使用者新增至資料庫角色。
您也可以將 GRANT 物件權限授與角色,以讓他們存取資料表。 如需 SQL Server 安全性模型的一般資訊,請參閱權限

建立資料庫使用者
sys.database_principals (Transact-SQL)
ALTER USER (Transact-SQL)
DROP USER (Transact-SQL)
CREATE LOGIN (Transact-SQL)
EVENTDATA (Transact-SQL)
自主資料庫
使用 Microsoft Entra 驗證 連線 至 SQL 資料庫
資料庫引擎權限使用者入門