ALTER USER (Transact-SQL)
重新命名資料庫使用者或變更其預設結構描述。
注意
Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。
選取產品
在以下資料列中,選取您感興趣的產品名稱,隨即只會顯示該產品的資訊。
* SQL Server *
SQL Server
語法
-- Syntax for SQL Server
ALTER USER user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
引數
user_name
指定在這個資料庫內用來識別使用者的名稱。
LOGIN = login_name
將使用者的安全性識別碼 (SID) 變更為符合登入的 SID,將使用者重新對應至另一個登入。
NAME = new_user_name
指定這個使用者的新名稱。 new_user_name 目前資料庫中不能已經存在。
DEFAULT_SCHEMA = { schema_name |NULL }
指定伺服器解析此用戶物件名稱時,伺服器將會搜尋的第一個架構。 當預設結構描述設為 NULL 時,會從 Windows 群組移除預設結構描述。 NULL 選項不可用於 Windows 使用者。
PASSWORD = 'password'
適用於:SQL Server 2012 (11.x) 和更新版本 Azure SQL Database。
指定正在變更之使用者的密碼。 密碼會區分大小寫。
注意
只有包含的使用者能夠使用此選項。 如需詳細資訊,請參閱自主資料庫和 sp_migrate_user_to_contained (Transact-SQL)。
OLD_PASSWORD ='oldpassword'
適用於:SQL Server 2012 (11.x) 和更新版本 Azure SQL Database。
目前的使用者密碼,將由 'password' 取代。 密碼會區分大小寫。 密碼區分大小寫。除非您有 ALTER ANY USER 權限,否則需要 OLD_PASSWORD 才能變更密碼。 需要 OLD_PASSWORD 可防止具有 IMPERSONATION 權限的使用者變更密碼。
注意
只有包含的使用者能夠使用此選項。
DEFAULT_LANGUAGE ={ NONE | <lcid> | <語言名稱> | <語言別名> }
適用於:SQL Server 2012 (11.x) 和更新版本。
指定要指派給使用者的預設語言。 如果這個選項設為 NONE,預設語言將設為資料庫的目前預設語言。 如果資料庫的默認語言稍後變更,則使用者的默認語言會保持不變。 DEFAULT_LANGUAGE 可以是本機識別碼 (lcid)、語言名稱或語言別名。
注意
此選項只能在自主資料庫中指定,而且只能指定給自主使用者。
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON |OFF ]
適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL Database。
在大量複製作業時隱藏伺服器上的密碼編譯中繼資料檢查。 這會讓使用者得以在資料表或資料庫間大量複製加密資料,而無須解密資料。 預設值為 OFF。
警告
不當使用這個選項會導致資料損毀。 如需詳細資訊,請參閱 使用 Always Encrypted將數據大量載入數據行。
備註
預設結構描述是伺服器在解析這個資料庫使用者之物件名稱時,所搜尋到的第一個結構描述。 除非另有指定,否則預設結構描述是此資料庫使用者建立之物件的擁有者。
如果使用者有預設結構描述,則將會使用預設結構描述。 如果使用者沒有預設結構描述,但使用者是具有預設結構描述群組的成員,則會使用群組的預設結構描述。 如果使用者沒有預設結構描述,且是具有一個以上群組的成員,則使用者預設結構描述將會是具有最低 principle_id 且明確設定預設結構描述 Windows 群組的結構描述。 如果無法判斷使用者的預設架構,則會使用 dbo
架構。
DEFAULT_SCHEMA 可設為目前不存在於資料庫中的結構描述。 因此,您可以在建立該結構描述之前,先將 DEFAULT_SCHEMA 指派給使用者。
DEFAULT_SCHEMA 不能指定給對應至憑證或非對稱金鑰的使用者。
重要
如果使用者是 sysadmin 固定伺服器角色的成員,則會忽略 DEFAULT_SCHEMA 的值。
sysadmin 固定伺服器角色的所有成員都有預設的 dbo
結構描述。
當新使用者名稱的 SID 符合資料庫所記錄的 SID 時,您可以變更對應至 Windows 登入或群組的使用者名稱。 這項檢查可防止資料庫中詐騙的 Windows 登入。
WITH LOGIN
子句可讓使用者重新對應至不同的登入。 沒有登入的使用者、對應至憑證或對應至非對稱金鑰的使用者,都無法使用這個子句來重新對應。 只有 SQL 使用者和 Windows 使用者 (或群組) 才能重新對應。
WITH LOGIN
子句無法用來變更使用者類型,例如將 Windows 帳戶變更為 SQL Server 登入。
當您從另一部伺服器還原資料庫,並讓資料庫使用者對應至 SQL Server 登入時,可能會發生不相符的 SID。 您可以使用 WITH LOGIN
子句來修正這種情況,方法是將資料庫中的使用者 SID 取代為伺服器的登入 SID。
如果下列條件成立,使用者的名稱將會自動重新命名為登入名稱。
使用者是 Windows 使用者。
名稱是 Windows 名稱 (包含反斜線)。
沒有指定任何新的名稱。
目前的名稱不同於登入名稱。
否則,除非呼叫端另外叫用 NAME
子句,否則不會重新命名使用者。
對應至 SQL Server 登入、憑證或非對稱密鑰的使用者名稱不能包含反斜杠字元 (\
)。
警告
從 SQL Server 2005 開始,結構描述的行為已經變更。 結果是,假設結構描述相當於資料庫使用者的程式碼可能不會傳回正確的結果。 不應該在曾經使用下列任何一個 DDL 陳述式的資料庫中使用舊的目錄檢視 (包括 sysobjects):CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION。 在此類資料庫中,必須改用新的目錄檢視。 新的目錄檢視會考量 SQL Server 2005 中所導入的主體和結構描述的分隔。 如需目錄檢視的詳細資訊,請參閱目錄檢視 (Transact-SQL)。
安全性
注意
具有 ALTER ANY USER 權限的使用者可以變更任何使用者的預設結構描述。 結構描述變更過的使用者可能會在不知情的情況下,從錯誤的資料表選取資料或從錯誤的結構描述執行程式碼。
權限
若要變更使用者的名稱,需要具有 ALTER ANY USER 權限。
若要變更使用者的目標登入,則需要資料庫的 CONTROL 權限。
若要變更擁有資料庫 CONTROL 權限之使用者的使用者名稱,則需要資料庫的 CONTROL 權限。
若要變更預設結構描述或語言,需要使用者的 ALTER 權限。 使用者能夠變更他們自己的預設結構描述或語言。
範例
所有的範例會在使用者資料庫中執行。
A. 變更資料庫用戶的名稱
下列範例會將資料庫使用者名稱 Mary5
變更為 Mary51
。
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. 變更使用者的默認架構
下列範例會將使用者 Mary51
的預設結構描述變更為 Purchasing
。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. 一次變更數個選項
適用於:SQL Server 2012 (11.x) 和更新版本。
下列範例會在一個陳述式中變更自主資料庫使用者的數個選項。 將<new strong password here>
和 <old strong password here>
取代為您自己的值。
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, DEFAULT_LANGUAGE= French ;
GO
D. 更正不相符的 SID
下列範例會更正資料庫中的使用者 SID,以符合伺服器上已驗證登入 SQL Server SID。
ALTER USER Mai
WITH LOGIN = Mai;
GO
相關內容
* Azure SQL Database 和 Microsoft Fabric *
Azure SQL Database 和 Microsoft Fabric
語法
Azure SQL Database 的語法
-- Syntax for Azure SQL Database
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = schema_name
| LOGIN = login_name
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]
-- Azure SQL Database Update Syntax
ALTER USER user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
WITH <set_item> [ ,... n ]
[;]
<set_item> ::=
NAME = new_user_name
Microsoft Fabric 中 SQL 資料庫的語法
ALTER USER
{
Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
}
[ ; ]
-- Users that cannot authenticate
ALTER USER user_name
{
{ FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<options_list> ::=
DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
[;]
Microsoft網狀架構倉儲的語法
-- Syntax for Fabric Data Warehouse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
| DEFAULT_SCHEMA = schema_name
[;]
引數
user_name
指定在這個資料庫內用來識別使用者的名稱。
LOGIN = login_name
將使用者的安全性識別碼 (SID) 變更為符合登入的 SID,將使用者重新對應至另一個登入。
如果 ALTER USER 語句是 SQL 批次中唯一的語句,Azure SQL Database 支援 WITH LOGIN
子句。 如果 ALTER USER 語句不是 SQL 批次中唯一的語句,或是在動態 SQL 中執行,則不支援 WITH LOGIN
子句。
NAME = new_user_name
指定這個使用者的新名稱。 new_user_name 目前資料庫中不能已經存在。
DEFAULT_SCHEMA = { schema_name |NULL }
指定伺服器解析此用戶物件名稱時,伺服器將會搜尋的第一個架構。
將預設架構設定為 NULL
會從為 Microsoft Entra ID 群組建立的使用者移除預設架構。 NULL 選項無法與任何其他類型的使用者搭配使用。
PASSWORD = 'password'
適用於:Azure SQL Database。
指定正在變更之使用者的密碼。 密碼會區分大小寫。
注意
只有包含的使用者能夠使用此選項。 如需詳細資訊,請參閱自主資料庫和 sp_migrate_user_to_contained (Transact-SQL)。
OLD_PASSWORD ='oldpassword'
適用於:Azure SQL Database。
目前的使用者密碼,將由 'password' 取代。 密碼會區分大小寫。 密碼區分大小寫。除非您有 ALTER ANY USER 權限,否則需要 OLD_PASSWORD 才能變更密碼。 需要 OLD_PASSWORD 可防止具有 IMPERSONATION 權限的使用者變更密碼。
注意
只有包含的使用者能夠使用此選項。
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON |OFF ]
適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL Database。
在大量複製作業時隱藏伺服器上的密碼編譯中繼資料檢查。 這會讓使用者得以在資料表或資料庫間大量複製加密資料,而無須解密資料。 預設值為 OFF。
警告
不當使用這個選項會導致資料損毀。 如需詳細資訊,請參閱 使用 Always Encrypted將數據大量載入數據行。
備註
預設結構描述是伺服器在解析這個資料庫使用者之物件名稱時,所搜尋到的第一個結構描述。 除非另有指定,否則預設結構描述是此資料庫使用者建立之物件的擁有者。
如果使用者有默認架構,則會使用該預設架構。 如果使用者沒有預設結構描述,但使用者是具有預設結構描述群組的成員,則會使用群組的預設結構描述。 如果使用者沒有默認架構,而且是多個群組的成員,則使用者的預設架構會是具有最低 principal_id
且明確設定預設架構的群組。 如果無法判斷使用者的預設架構,則會使用 dbo
架構。
DEFAULT_SCHEMA 可設為目前不存在於資料庫中的結構描述。 因此,您可以在建立該結構描述之前,先將 DEFAULT_SCHEMA 指派給使用者。
DEFAULT_SCHEMA 不能指定給對應至憑證或非對稱金鑰的使用者。
重要
如果使用者是 sysadmin 固定伺服器角色的成員,則會忽略 DEFAULT_SCHEMA 的值。
sysadmin 固定伺服器角色的所有成員都有預設的 dbo
結構描述。
WITH LOGIN
子句可讓使用者重新對應至不同的登入。 沒有登入的使用者、對應至憑證或對應至非對稱金鑰的使用者,都無法使用這個子句來重新對應。 只能重新對應 SQL 使用者。
WITH LOGIN
子句無法用來變更用戶類型。
如果下列條件成立,使用者的名稱將會自動重新命名為登入名稱。
沒有指定任何新的名稱。
目前的名稱不同於登入名稱。
否則,除非呼叫端另外叫用 NAME
子句,否則不會重新命名使用者。
對應至 SQL Server 登入、憑證或非對稱密鑰的使用者名稱不能包含反斜杠字元 (\
)。
警告
從 SQL Server 2005 開始,結構描述的行為已經變更。 結果是,假設結構描述相當於資料庫使用者的程式碼可能不會傳回正確的結果。 不應該在曾經使用下列任何一個 DDL 陳述式的資料庫中使用舊的目錄檢視 (包括 sysobjects):CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION。 在此類資料庫中,必須改用新的目錄檢視。 新的目錄檢視會考量 SQL Server 2005 中所導入的主體和結構描述的分隔。 如需目錄檢視的詳細資訊,請參閱目錄檢視 (Transact-SQL)。
網狀架構 SQL 資料庫
如需詳細資訊,請參閱:
Fabric Warehouse
在Microsoft網狀架構倉儲中,ALTER USER 僅限於設定默認架構。 SQL 或其他產品中通常與 ALTER USER 相關聯的任何其他自變數都不受支援,而且會傳回錯誤。
在Microsoft網狀架構倉儲中,定序名稱會區分大小寫。
預設結構描述是伺服器在解析這個資料庫使用者之物件名稱時,所搜尋到的第一個結構描述。 除非另有指定,否則預設結構描述是此資料庫使用者建立之物件的擁有者。
如果使用者有默認架構,則會使用該架構。 如果未指定預設架構,則會套用 dbo 架構。 資料庫引擎會先嘗試解析用戶預設架構中的物件。 如果找不到相符的物件,則會檢查 dbo 架構。
DEFAULT_SCHEMA可以設定為資料庫中目前不存在的架構。 因此,您可以在建立該結構描述之前,先將 DEFAULT_SCHEMA 指派給使用者。
如需詳細資訊,請參閱:
- 在網狀架構倉儲中 SQL 細微許可權
- Microsoft Fabric 中的資料倉儲安全性
安全性
注意
具有 ALTER ANY USER 權限的使用者可以變更任何使用者的預設結構描述。 結構描述變更過的使用者可能會在不知情的情況下,從錯誤的資料表選取資料或從錯誤的結構描述執行程式碼。
權限
若要變更使用者的名稱,需要具有 ALTER ANY USER 權限。
若要變更使用者的目標登入,則需要資料庫的 CONTROL 權限。
若要變更擁有資料庫 CONTROL 權限之使用者的使用者名稱,則需要資料庫的 CONTROL 權限。
若要變更預設結構描述或語言,需要使用者的 ALTER 權限。 使用者能夠變更他們自己的預設結構描述或語言。
網狀架構倉儲角色許可權
工作區中參與者角色成員資格下限的用戶能夠變更網狀架構數據倉儲上任何使用者的默認架構。
具有工作區中 VIEWER 角色成員資格的使用者無法變更自己的預設架構,除非具有提升許可權的使用者授與此許可權。
工作區層級的 VIEWER 角色中包含的使用者需要 ALTER ANY USER 許可權,才能變更其他使用者的默認架構。
範例
所有的範例會在使用者資料庫中執行。
A. 變更資料庫用戶的名稱
下列範例會將資料庫使用者名稱 Mary5
變更為 Mary51
。
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. 變更使用者的默認架構
下列範例會將使用者 Mary51
的預設結構描述變更為 Purchasing
。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. 一次變更數個選項
下列範例會在一個陳述式中變更自主資料庫使用者的數個選項。 將<new strong password here>
和 <old strong password here>
取代為您自己的值。
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>';
GO
D. 變更使用者的默認架構
下列範例會將使用者 Mary51
的預設結構描述變更為 Purchasing
。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
相關內容
- CREATE USER (Transact-SQL)
- DROP USER (Transact-SQL)
- 自主資料庫
- sp_migrate_user_to_contained (Transact-SQL)
- Microsoft網狀架構數據倉儲 中的 數據表
- Microsoft Fabric SQL 資料庫中的 驗證
* SQL 受控執行個體 *
Azure SQL 受控執行個體
語法
重要
在套用至具有 Microsoft Entra 登入的使用者時,僅 Azure SQL 受控執行個體 支援下列選項:DEFAULT_SCHEMA = { schema_name | NULL }
而且DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
新增了新的語法延伸模組,以協助重新對應移轉至 Azure SQL 受控執行個體 的資料庫中的使用者。 ALTER USER 語法可協助將同盟和同步網域中的資料庫使用者與 Microsoft Entra 標識符對應至 Microsoft Entra 登入。
-- Syntax for SQL Managed Instance
ALTER USER user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- Users or groups that are migrated as federated and synchronized with Azure AD have the following syntax:
/** Applies to Windows users that were migrated and have the following user names:
- Windows user <domain\user>
- Windows group <domain\MyWindowsGroup>
- Windows alias <MyWindowsAlias>
**/
ALTER USER user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
引數
user_name
指定在這個資料庫內用來識別使用者的名稱。
LOGIN = login_name
將使用者的安全性識別碼 (SID) 變更為符合登入的 SID,將使用者重新對應至另一個登入。
如果 ALTER USER 語句是 SQL 批次中唯一的語句,Azure SQL Database 支援 WITH LOGIN
子句。 如果 ALTER USER 語句不是 SQL 批次中唯一的語句,或是在動態 SQL 中執行,則不支援 WITH LOGIN
子句。
NAME = new_user_name
指定這個使用者的新名稱。 new_user_name 目前資料庫中不能已經存在。
DEFAULT_SCHEMA = { schema_name |NULL }
指定伺服器解析此用戶物件名稱時,伺服器將會搜尋的第一個架構。 當預設結構描述設為 NULL 時,會從 Windows 群組移除預設結構描述。 NULL 選項不可用於 Windows 使用者。
PASSWORD = 'password'
指定正在變更之使用者的密碼。 密碼會區分大小寫。
注意
只有包含的使用者能夠使用此選項。 如需詳細資訊,請參閱自主資料庫和 sp_migrate_user_to_contained (Transact-SQL)。
OLD_PASSWORD = 'oldpassword'
目前的使用者密碼,將由 'password' 取代。 密碼會區分大小寫。 密碼區分大小寫。除非您有 ALTER ANY USER 權限,否則需要 OLD_PASSWORD 才能變更密碼。 需要 OLD_PASSWORD 可防止具有 IMPERSONATION 權限的使用者變更密碼。
注意
只有包含的使用者能夠使用此選項。
DEFAULT_LANGUAGE ={ NONE | <lcid> | <語言名稱> | <語言別名> }
指定要指派給使用者的預設語言。 如果這個選項設為 NONE,預設語言將設為資料庫的目前預設語言。 如果稍後變更了資料庫的預設語言,使用者的預設語言會保持不變。 DEFAULT_LANGUAGE 可以是本機識別碼 (lcid)、語言名稱或語言別名。
注意
此選項只能在自主資料庫中指定,而且只能指定給自主使用者。
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON |OFF ]
在大量複製作業時隱藏伺服器上的密碼編譯中繼資料檢查。 這會讓使用者得以在資料表或資料庫間大量複製加密資料,而無須解密資料。 預設值為 OFF。
警告
不當使用這個選項會導致資料損毀。 如需詳細資訊,請參閱 使用 Always Encrypted將數據大量載入數據行。
備註
預設結構描述是伺服器在解析這個資料庫使用者之物件名稱時,所搜尋到的第一個結構描述。 除非另有指定,否則預設結構描述是此資料庫使用者建立之物件的擁有者。
如果使用者有默認架構,則會使用該預設架構。 如果使用者沒有預設結構描述,但使用者是具有預設結構描述群組的成員,則會使用群組的預設結構描述。 如果使用者沒有預設結構描述,且是具有一個以上群組的成員,則使用者預設結構描述將會是具有最低 principle_id 且明確設定預設結構描述 Windows 群組的結構描述。 如果無法判斷使用者的預設架構,則會使用 dbo
架構。
DEFAULT_SCHEMA 可設為目前不存在於資料庫中的結構描述。 因此,您可以在建立該結構描述之前,先將 DEFAULT_SCHEMA 指派給使用者。
DEFAULT_SCHEMA 不能指定給對應至憑證或非對稱金鑰的使用者。
重要
如果使用者是 sysadmin 固定伺服器角色的成員,則會忽略 DEFAULT_SCHEMA 的值。
sysadmin 固定伺服器角色的所有成員都有預設的 dbo
結構描述。
當新使用者名稱的 SID 符合資料庫所記錄的 SID 時,您可以變更對應至 Windows 登入或群組的使用者名稱。 這項檢查可防止資料庫中詐騙的 Windows 登入。
WITH LOGIN
子句可讓使用者重新對應至不同的登入。 沒有登入的使用者、對應至憑證或對應至非對稱金鑰的使用者,都無法使用這個子句來重新對應。 只有 SQL 使用者和 Windows 使用者 (或群組) 才能重新對應。
WITH LOGIN
子句無法用來變更使用者類型,例如將 Windows 帳戶變更為 SQL Server 登入。 唯一的例外狀況是將 Windows 用戶變更為 Microsoft Entra 使用者。
注意
下列規則不適用於 Azure SQL 受控執行個體上的 Windows 使用者,因為不支援在 Azure SQL 受控執行個體上建立 Windows 登入。 只有在Microsoft Entra 登入存在時,才能使用WITH LOGIN 選項。
如果下列條件成立,使用者的名稱將會自動重新命名為登入名稱。
使用者是 Windows 使用者。
名稱是 Windows 名稱 (包含反斜線)。
沒有指定任何新的名稱。
目前的名稱不同於登入名稱。
否則,除非呼叫端另外叫用 NAME
子句,否則不會重新命名使用者。
對應至 SQL Server 登入、憑證或非對稱密鑰的使用者名稱不能包含反斜杠字元 (\
)。
警告
從 SQL Server 2005 開始,結構描述的行為已經變更。 結果是,假設結構描述相當於資料庫使用者的程式碼可能不會傳回正確的結果。 不應該在曾經使用下列任何一個 DDL 陳述式的資料庫中使用舊的目錄檢視 (包括 sysobjects):CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION。 在此類資料庫中,必須改用新的目錄檢視。 新的目錄檢視會考量 SQL Server 2005 中所導入的主體和結構描述的分隔。 如需目錄檢視的詳細資訊,請參閱目錄檢視 (Transact-SQL)。
將 SQL 內部部署中的 Windows 使用者移轉到 Azure SQL 受控執行個體的備註
這些備註適用於驗證身為已同盟且與 Microsoft Entra 識別子同步處理的 Windows 使用者。
- 在用於移轉用途的所有 ALTER USER 語法版本中,預設會透過 Graph API 來驗證對應至 Microsoft Entra ID 的 Windows 使用者或群組。
- 已建立別名 (使用與原始 Windows 帳戶不同的名稱) 的內部部署使用者會保留其別名。
- 對於Microsoft Entra 驗證,LOGIN 參數僅適用於 Azure SQL 受控執行個體,且無法與 SQL 資料庫 搭配使用。
- 若要檢視Microsoft Entra 主體的登入,請使用下列命令:
SELECT * FROM sys.server_principals;
。 - 檢查登入的指定類型為
E
或X
。 - PASSWORD 選項不能用於Microsoft Entra 使用者。
- 在所有移轉案例中,Windows 使用者或群組的角色和許可權都會自動轉移至新的Microsoft Entra 使用者或群組。
-
FROM EXTERNAL PROVIDER
是將 Windows 使用者和群組從 SQL 內部部署變更為Microsoft Entra 使用者和群組。 Windows 網域必須與 Microsoft Entra ID 同盟,而且在使用此延伸模組時,所有 Windows 網域成員必須存在於Microsoft Entra ID 中。FROM EXTERNAL PROVIDER
語法適用於 Azure SQL 受控實例,而且應該用於 Windows 用戶沒有原始 SQL 實例的登入,而且必須對應至獨立Microsoft Entra 資料庫使用者。 - 在此情況下,允許的
user_name
可以是: - Windows 使用者 (
domain\user
)。 - Windows 群組 (
MyWindowsGroup
)。 - Windows 別名 (
MyWindowsAlias
)。 - ALTER 命令的結果會根據舊
user_name
的原始 SID,將舊user_name
取代為在 Microsoft Entra 識別碼中找到的對應名稱。 更改後名稱會遭到替換並儲存在資料庫的中繼資料內: - (
domain\user
)將取代為Microsoft Entrauser@domain.com
。 - (
domain\MyWindowsGroup
) 將取代為Microsoft Entra 群組。 - (
MyWindowsAlias
) 會維持不變,但此使用者的 SID 將會簽入Microsoft Entra ID。
注意
如果在 Microsoft Entra ID 租使用者中找不到轉換成 object_ID
的原始使用者的 SID,ALTER USER
命令將會失敗。
- 若要檢視更改後的使用者,請使用下列命令:
SELECT * FROM sys.database_principals;
- 檢查使用者的指定類型是
E
或X
。 - 當 NAME 用來將 Windows 使用者移轉至 Microsoft Entra 使用者時,適用下列限制:
- 必須指定有效的 LOGIN。
- NAME 將會簽入Microsoft Entra ID 租使用者,而且只能:
- LOGIN 的名稱。
- 別名 - 名稱不能存在於Microsoft Entra ID 中。
- 在其他所有情況下,語法都會失敗。
安全性
注意
具有 ALTER ANY USER 權限的使用者可以變更任何使用者的預設結構描述。 結構描述變更過的使用者可能會在不知情的情況下,從錯誤的資料表選取資料或從錯誤的結構描述執行程式碼。
權限
若要變更使用者的名稱,需要具有 ALTER ANY USER 權限。
若要變更使用者的目標登入,則需要資料庫的 CONTROL 權限。
若要變更擁有資料庫 CONTROL 權限之使用者的使用者名稱,則需要資料庫的 CONTROL 權限。
若要變更預設結構描述或語言,需要使用者的 ALTER 權限。 使用者能夠變更他們自己的預設結構描述或語言。
範例
所有的範例會在使用者資料庫中執行。
A. 變更資料庫用戶的名稱
下列範例會將資料庫使用者名稱 Mary5
變更為 Mary51
。
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. 變更使用者的默認架構
下列範例會將使用者 Mary51
的預設結構描述變更為 Purchasing
。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. 一次變更數個選項
下列範例會在一個陳述式中變更自主資料庫使用者的數個選項。 將<new strong password here>
和 <old strong password here>
取代為您自己的值。
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, DEFAULT_LANGUAGE= French ;
GO
D. 將資料庫中的用戶對應至移轉后Microsoft Entra 登入
下列範例會將使用者重新westus/joe
對應至 Microsoft Entra 使用者。 joe@westus.com
此範例適用於已存在於受控執行個體中的登入。 完成資料庫移轉至 Azure SQL 受控執行個體 之後,必須執行此動作,並想要使用 Microsoft Entra 登入進行驗證。
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com]
E. 將資料庫中的舊 Windows 用戶對應至 Microsoft Entra 使用者,而不需登入 Azure SQL 受控執行個體
下列範例會將沒有登入的使用者westus/joe
重新對應至 Microsoft Entra 使用者。 joe@westus.com
同盟用戶必須存在於Microsoft Entra ID 中。
ALTER USER [westus/joe] FROM EXTERNAL PROVIDER
F. 將用戶別名對應至現有的 Microsoft Entra 登入
下列範例會將使用者名稱 westus\joe
重新對應到 joe_alias
。 在這裡情況下,對應的Microsoft Entra 登入為 joe@westus.com
。
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com], name= joe_alias
G. 將 Azure SQL 受控執行個體 中移轉至Microsoft Entra 群組的 Windows 群組
下列範例會將舊的內部部署群組 westus\mygroup
重新對應至受控實例中的 Microsoft Entra 群組 mygroup
。 群組必須存在於Microsoft Entra ID 中。
ALTER USER [westus\mygroup] WITH LOGIN = mygroup;
相關內容
* Azure Synapse
Analytics *
Azure Synapse Analytics
語法
-- Syntax for Azure Synapse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
引數
user_name
指定在這個資料庫內用來識別使用者的名稱。
LOGIN = login_name
將使用者的安全性識別碼 (SID) 變更為符合登入的 SID,將使用者重新對應至另一個登入。
如果 ALTER USER 語句是 SQL 批次中唯一的語句,Azure SQL Database 支援 WITH LOGIN
子句。 如果 ALTER USER 語句不是 SQL 批次中唯一的語句,或是在動態 SQL 中執行,則不支援 WITH LOGIN
子句。
NAME = new_user_name
指定這個使用者的新名稱。 new_user_name 目前資料庫中不能已經存在。
DEFAULT_SCHEMA = { schema_name |NULL }
指定伺服器解析此用戶物件名稱時,伺服器將會搜尋的第一個架構。 當預設結構描述設為 NULL 時,會從 Windows 群組移除預設結構描述。 NULL 選項不可用於 Windows 使用者。
備註
預設結構描述是伺服器在解析這個資料庫使用者之物件名稱時,所搜尋到的第一個結構描述。 除非另有指定,否則預設結構描述是此資料庫使用者建立之物件的擁有者。
如果使用者有默認架構,則會使用該預設架構。 如果使用者沒有預設結構描述,但使用者是具有預設結構描述群組的成員,則會使用群組的預設結構描述。 如果使用者沒有預設結構描述,且是具有一個以上群組的成員,則使用者預設結構描述將會是具有最低 principle_id 且明確設定預設結構描述 Windows 群組的結構描述。 如果無法判斷使用者的預設架構,則會使用 dbo
架構。
DEFAULT_SCHEMA 可設為目前不存在於資料庫中的結構描述。 因此,您可以在建立該結構描述之前,先將 DEFAULT_SCHEMA 指派給使用者。
DEFAULT_SCHEMA 不能指定給對應至憑證或非對稱金鑰的使用者。
重要
如果使用者是 sysadmin 固定伺服器角色的成員,則會忽略 DEFAULT_SCHEMA 的值。
sysadmin 固定伺服器角色的所有成員都有預設的 dbo
結構描述。
WITH LOGIN
子句可讓使用者重新對應至不同的登入。 沒有登入的使用者、對應至憑證或對應至非對稱金鑰的使用者,都無法使用這個子句來重新對應。 只有 SQL 使用者和 Windows 使用者 (或群組) 才能重新對應。
WITH LOGIN
子句無法用來變更使用者類型,例如將 Windows 帳戶變更為 SQL Server 登入。
如果下列條件成立,使用者的名稱將會自動重新命名為登入名稱。
沒有指定任何新的名稱。
目前的名稱不同於登入名稱。
否則,除非呼叫端另外叫用 NAME
子句,否則不會重新命名使用者。
對應至 SQL Server 登入、憑證或非對稱密鑰的使用者名稱不能包含反斜杠字元 (\
)。
警告
從 SQL Server 2005 開始,結構描述的行為已經變更。 結果是,假設結構描述相當於資料庫使用者的程式碼可能不會傳回正確的結果。 不應該在曾經使用下列任何一個 DDL 陳述式的資料庫中使用舊的目錄檢視 (包括 sysobjects):CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION。 在此類資料庫中,必須改用新的目錄檢視。 新的目錄檢視會考量 SQL Server 2005 中所導入的主體和結構描述的分隔。 如需目錄檢視的詳細資訊,請參閱目錄檢視 (Transact-SQL)。
安全性
注意
具有 ALTER ANY USER 權限的使用者可以變更任何使用者的預設結構描述。 結構描述變更過的使用者可能會在不知情的情況下,從錯誤的資料表選取資料或從錯誤的結構描述執行程式碼。
權限
若要變更使用者的名稱,需要具有 ALTER ANY USER 權限。
若要變更使用者的目標登入,則需要資料庫的 CONTROL 權限。
若要變更擁有資料庫 CONTROL 權限之使用者的使用者名稱,則需要資料庫的 CONTROL 權限。
若要變更預設結構描述或語言,需要使用者的 ALTER 權限。 使用者能夠變更他們自己的預設結構描述或語言。
範例
所有的範例會在使用者資料庫中執行。
A. 變更資料庫用戶的名稱
下列範例會將資料庫使用者名稱 Mary5
變更為 Mary51
。
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. 變更使用者的默認架構
下列範例會將使用者 Mary51
的預設結構描述變更為 Purchasing
。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
相關內容
* Analytics
Platform System (PDW) *
分析平台系統
語法
-- Syntax for Analytics Platform System
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
引數
user_name
指定在這個資料庫內用來識別使用者的名稱。
LOGIN = login_name
將使用者的安全性識別碼 (SID) 變更為符合登入的 SID,將使用者重新對應至另一個登入。
如果 ALTER USER 語句是 SQL 批次中唯一的語句,Azure SQL Database 支援 WITH LOGIN
子句。 如果 ALTER USER 語句不是 SQL 批次中唯一的語句,或是在動態 SQL 中執行,則不支援 WITH LOGIN
子句。
NAME = new_user_name
指定這個使用者的新名稱。 new_user_name 目前資料庫中不能已經存在。
DEFAULT_SCHEMA = { schema_name |NULL }
指定伺服器解析此用戶物件名稱時,伺服器將會搜尋的第一個架構。 當預設結構描述設為 NULL 時,會從 Windows 群組移除預設結構描述。 NULL 選項不可用於 Windows 使用者。
備註
預設結構描述是伺服器在解析這個資料庫使用者之物件名稱時,所搜尋到的第一個結構描述。 除非另有指定,否則預設結構描述是此資料庫使用者建立之物件的擁有者。
如果使用者有默認架構,則會使用該預設架構。 如果使用者沒有預設結構描述,但使用者是具有預設結構描述群組的成員,則會使用群組的預設結構描述。 如果使用者沒有預設結構描述,且是具有一個以上群組的成員,則使用者預設結構描述將會是具有最低 principle_id 且明確設定預設結構描述 Windows 群組的結構描述。 如果無法判斷使用者的預設架構,則會使用 dbo
架構。
DEFAULT_SCHEMA 可設為目前不存在於資料庫中的結構描述。 因此,您可以在建立該結構描述之前,先將 DEFAULT_SCHEMA 指派給使用者。
DEFAULT_SCHEMA 不能指定給對應至憑證或非對稱金鑰的使用者。
重要
如果使用者是 sysadmin 固定伺服器角色的成員,則會忽略 DEFAULT_SCHEMA 的值。
sysadmin 固定伺服器角色的所有成員都有預設的 dbo
結構描述。
WITH LOGIN
子句可讓使用者重新對應至不同的登入。 沒有登入的使用者、對應至憑證或對應至非對稱金鑰的使用者,都無法使用這個子句來重新對應。 只有 SQL 使用者和 Windows 使用者 (或群組) 才能重新對應。
WITH LOGIN
子句無法用來變更使用者類型,例如將 Windows 帳戶變更為 SQL Server 登入。
如果下列條件成立,使用者的名稱將會自動重新命名為登入名稱。
沒有指定任何新的名稱。
目前的名稱不同於登入名稱。
否則,除非呼叫端另外叫用 NAME
子句,否則不會重新命名使用者。
對應至 SQL Server 登入、憑證或非對稱密鑰的使用者名稱不能包含反斜杠字元 (\
)。
警告
從 SQL Server 2005 開始,結構描述的行為已經變更。 結果是,假設結構描述相當於資料庫使用者的程式碼可能不會傳回正確的結果。 不應該在曾經使用下列任何一個 DDL 陳述式的資料庫中使用舊的目錄檢視 (包括 sysobjects):CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION。 在此類資料庫中,必須改用新的目錄檢視。 新的目錄檢視會考量 SQL Server 2005 中所導入的主體和結構描述的分隔。 如需目錄檢視的詳細資訊,請參閱目錄檢視 (Transact-SQL)。
安全性
注意
具有 ALTER ANY USER 權限的使用者可以變更任何使用者的預設結構描述。 結構描述變更過的使用者可能會在不知情的情況下,從錯誤的資料表選取資料或從錯誤的結構描述執行程式碼。
權限
若要變更使用者的名稱,需要具有 ALTER ANY USER 權限。
若要變更使用者的目標登入,則需要資料庫的 CONTROL 權限。
若要變更擁有資料庫 CONTROL 權限之使用者的使用者名稱,則需要資料庫的 CONTROL 權限。
若要變更預設結構描述或語言,需要使用者的 ALTER 權限。 使用者能夠變更他們自己的預設結構描述或語言。
範例
所有的範例會在使用者資料庫中執行。
A. 變更資料庫用戶的名稱
下列範例會將資料庫使用者名稱 Mary5
變更為 Mary51
。
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. 變更使用者的默認架構
下列範例會將使用者 Mary51
的預設結構描述變更為 Purchasing
。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO