CREATE USER (Transact-SQL)
適用於:Microsoft Fabric 中的 SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL Database
將使用者加入目前資料庫中。 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 資料庫 公開預覽狀態。
注意
Microsoft Fabric 中的 SQL 資料庫中不支援以登入為基礎的登入,因此不支援以登入為基礎的使用者。
在資料庫進行驗證的使用者 - 此選項有助於讓您的資料庫更具可攜性。
SQL Database 中一律允許。 只有 SQL Server 中的自主資料庫允許。
依據沒有登入之 Windows 使用者的使用者。
CREATE USER [Contoso\Fritz];
依據沒有登入之 Windows 群組的使用者。
CREATE USER [Contoso\Sales];
SQL 資料庫 或 Azure Synapse Analytics 中的使用者,以 Microsoft Entra 用戶為基礎。
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;
Syntax
SQL Server、Azure SQL Database、Azure SQL 受控執行個體的語法
-- 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 的語法
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 中 SQL 資料庫的語法
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 }
平行處理數據倉儲的語法
CREATE USER user_name
[ { { FOR | FROM }
{
LOGIN login_name
}
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
引數
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 資料庫、SQL 受管理執行個體、Azure Synapse Analytics、Microsoft Fabric 中的 SQL 資料庫
指定要建立資料庫使用者的Microsoft Entra 主體。 Microsoft_Entra_principal 可以是Microsoft Entra 使用者、Microsoft Entra 群組或 Microsoft Entra 應用程式。 (Microsoft Entra 使用者無法在 SQL 資料庫 中登入 Windows 驗證;只有資料庫使用者。連接字串 必須將自主資料庫指定為初始目錄。
針對Microsoft Entra 主體,CREATE USER 語法需要:
Microsoft Entra 使用者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];
Microsoft 2048 個以上的 Entra 使用者和服務主體(應用程式)不支援在 Azure Microsoft SQL 資料庫、Azure SQL 受控執行個體 或 Azure Synapse 中登入資料庫。
Microsoft Entra 群組和Microsoft Entra Applications 之 Microsoft Entra 物件的 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 資料庫、Microsoft Fabric 中的 SQL Database
指定目前建立之資料庫使用者的憑證。
ASYMMETRIC KEY asym_key_name
適用於:SQL Server 2008 (10.0.x) 和更新版本、SQL 資料庫、Microsoft Fabric 中的 SQL 資料庫
指定目前建立之資料庫使用者的非對稱金鑰。
DEFAULT_LANGUAGE = { NONE | <lcid> | <語言名稱> | <語言別名> }
適用於:SQL Server 2012 (11.x) 和更新版本,SQL 資料庫
指定新使用者的預設語言。 如果已指定使用者的預設語言,但稍後變更資料庫的預設語言,使用者預設語言會保持為指定值。 如果未指定預設語言,則使用者的預設語言將是資料庫的預設語言。 如果未指定使用者的預設語言,且稍後變更了資料庫的預設語言,使用者的預設語言將變更為資料庫的新預設語言。
重要
DEFAULT_LANGUAGE 只用於自主資料庫使用者。
SID = sid
適用於:SQL Server 2012 (11.x) 和更新版本,以及 Microsoft Fabric 中的 SQL 資料庫。
在 SQL Server 2012 (11.x) 和更新版本中,僅適用於自主資料庫中具有密碼 (SQL Server 驗證) 的使用者。 指定新資料庫使用者的 SID。 若未選取此選項,SQL Server 就會自動指派 SID。 使用 SID 參數即可在多個資料庫中建立具有相同識別 (SID) 的使用者。 當您在多個資料庫中建立使用者以準備 Always On 容錯移轉時,這會很有用。 若要判斷使用者的 SID,請查詢 sys.database_principals。
在 Microsoft Fabric 的 SQL 資料庫中, sid
應該是指定之Microsoft Entra 主體的有效標識符。 如果主體是使用者或群組,則標識符應該是使用者/群組的 Microsoft Entra 物件識別符。 如果Microsoft Entra 主體是服務主體(應用程式或受控識別),則標識符應該是應用程式標識碼(或用戶端標識符)。 指定的識別碼必須是 binary(16)
值。 資料庫引擎 不會在 Entra Microsoft 中驗證指定的標識碼。 SID
爭論者必須與一起使用TYPE
。
TYPE = [ E |X ]
適用於:Microsoft Fabric 中的 SQL 資料庫。
指定Microsoft Entra 主體的類型。 E
表示主體是用戶或服務主體(應用程式或受控識別)。 X
表示主體是群組。
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
適用於:SQL Server 2016 (13.x) 和更新版本,以及 SQL Database。
在大量複製作業時隱藏伺服器上的密碼編譯中繼資料檢查。 這會讓使用者得以在資料表或資料庫間大量複製加密資料,而無須解密資料。 預設值為 OFF。
警告
不當使用這個選項會導致資料損毀。 如需詳細資訊,請參閱移轉透過 Always Encrypted 保護的機密資料。
FROM EXTERNAL PROVIDER
適用於:SQL 資料庫、Azure SQL 受控執行個體、Microsoft Fabric 中的 SQL 資料庫
指定主體適用於Microsoft Entra 驗證。 SQL Server 會自動驗證Microsoft Entra 中提供的主體名稱。
如果發出語句的 CREATE USER
主體是Microsoft Entra 用戶主體,主體(或主體的群組)必須位於 Microsoft Entra 的目錄讀取者角色 中。
在 SQL 資料庫 和 Azure SQL 受控執行個體 中,如果發出CREATE USER
語句的主體是服務主體,則資料庫伺服器或受控實例的身分識別必須位於 entra Microsoft 的目錄讀取者角色中。
在 Microsoft Fabric 的 SQL 資料庫中,如果主體發行CREATE USER
是 entra Microsoft 中的服務主體,FROM EXTERNAL PROVIDER
則不允許。 服務主體必須使用 TYPE
和 SID
arugment 來建立Microsoft Entra 主體的使用者。
WITH OBJECT_ID = 'objectid'
適用於:SQL 資料庫、Azure SQL 受控執行個體、Microsoft Fabric 中的 SQL 資料庫
指定 entra 物件識別碼Microsoft。 OBJECT_ID
如果指定 ,則user_name可以是由原始主體顯示名稱所組成的使用者定義別名,後面加上後綴。 user_name在檢視中 sys.database_principals
必須是唯一的名稱,並遵守所有其他 sysname
限制。 如需使用 WITH OBJECT_ID
選項的詳細資訊,請參閱 Microsoft Entra 登入和具有非唯一顯示名稱的使用者。
注意
如果服務主體顯示名稱未重複,則應該使用預設的 CREATE LOGIN
或 CREATE 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 受管理執行個體 登入邏輯伺服器,SQL 受管理執行個體 中授sysadmin
與角色,或 loginmanager
SQL 資料庫 中的角色。 下列 T-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 時,請指定與 LOGIN 相同的login_name user_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
。 資料庫引擎 會驗證指定的使用者存在於 entra Microsoft。
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO
K. 從 Microsoft Entra 主體建立自主資料庫使用者,而不需驗證
適用於:Microsoft Fabric 中的 SQL 資料庫
本節中的範例會建立 Microsoft Entra 主體的資料庫使用者,而不驗證 entra Microsoft 中的主體名稱。
下列 T-SQL 範例會為名為 bob@contoso.com
的 Microsoft Entra 使用者建立資料庫使用者。 以新使用者的 SID 取代 <unique identifier sid>
為 Microsoft Entra 使用者的物件識別碼。
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);
下列範例會為名為 HRApp
的 Microsoft Entra 服務主體建立資料庫使用者。 將取代 <unique identifier sid>
為 Microsoft Entra 中服務主體用戶端識別碼的新使用者的 SID。
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);
下列範例會為名為 HR
的 Microsoft Entra 群組建立資料庫使用者。 以新使用者的 SID 取代 <unique identifier sid>
為群組的物件識別碼。
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);
下一步
一旦建立使用者之後,請考慮使用 ALTER ROLE 陳述式,將使用者新增至資料庫角色。
您也可以將 GRANT 物件權限授與角色,以讓他們存取資料表。 如需 SQL Server 安全性模型的一般資訊,請參閱權限。