sp_change_users_login (Transact-SQL)

適用範圍: 是SQL Server (所有支援的版本)

將現有的資料庫使用者對應至 SQL Server 登入。

重要

未來的 Microsoft SQL Server 版本將移除這項功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 ALTER USER

主題連結圖示 Transact-SQL 語法慣例

語法

  
sp_change_users_login [ @Action = ] 'action'   
    [ , [ @UserNamePattern = ] 'user' ]   
    [ , [ @LoginName = ] 'login' ]   
    [ , [ @Password = ] 'password' ]  
[;]  

引數

[ @Action =] 'action'
描述此程序所要執行的動作。 動作Varchar (10)動作 可以具有下列其中一個值。

描述
Auto_Fix 將目前資料庫中 sys.database_principals 系統目錄檢視的使用者項目連結到相同名稱的 SQL Server 登入。 如果沒有相同名稱的登入,則會建立一個。 檢查 Auto_Fix 語句的結果,以確認確實已進行正確的連結。 避免在安全性敏感的情況下使用 Auto_Fix

當您使用 Auto_Fix 時,如果登入不存在,您必須指定 [ 使用者 ] 和 [ 密碼 ],否則您必須指定 [ 使用者 ],否則會忽略 密碼 入必須是 Null。 使用者 必須是目前資料庫中的有效使用者。 不能有其他使用者對應至登入。
Report 列出目前資料庫中未連結至任何登入的使用者和對應的安全性識別碼 (SID)。 使用者 入和 密碼 必須是 Null 或未指定。

若要使用系統資料表來取代報表選項與查詢,請將 sys.server_prinicpals 中的專案與 sys.database_principals 中的專案進行比較。
Update_One 將目前資料庫中指定的 使用者 連結至現有的 SQL Server 入。 必須指定 使用者 入。 密碼 必須是 Null 或未指定。

[ @UserNamePattern =] '使用者'
這是目前資料庫中的使用者名稱。 使用者sysname,預設值是 Null。

[ @LoginName =] 'login'
這是 SQL Server 登入的名稱。 login 是預設值為 NULL 的 sysname

[ @Password =] 'password'
這是指派給藉 SQL Server 由指定 Auto_Fix 所建立之新登入的密碼。 如果符合的登入已存在,則會對應使用者和登入,並忽略 密碼 。 如果符合的登入不存在,sp_change_users_login 會建立新的登入, SQL Server 並將 密碼 指派為新登入的密碼。 密碼sysname,不能是 Null。

重要!! 請一律使用 強式密碼!

傳回碼值

0 (成功) 或 1 (失敗)

結果集

資料行名稱 資料類型 描述
UserName sysname 資料庫使用者名稱。
UserSID varbinary(85) 使用者的安全性識別碼。

備註

請使用 sp_change_users_login 將目前資料庫中的資料庫使用者與 SQL Server 登入連結。 如果使用者的登入變更,可利用 sp_change_users_login 將使用者連結至新的登入,此舉並不會遺失使用者權限。 新的 入不能是 sa,且 使用者 不能是 dbo、guest 或 INFORMATION_SCHEMA 使用者。

sp_change_users_login 不能用來將資料庫使用者對應至 Windows 層級的主體、憑證或非對稱金鑰。

sp_change_users_login 不能搭配從 Windows 主體建立的 SQL Server 登入使用,或是搭配 CREATE USER WITHOUT LOGIN 建立的使用者使用。

sp_change_users_login 無法在使用者定義的交易內執行。

權限

需要 db_owner 固定資料庫角色中的成員資格。 只有系統管理員(sysadmin)固定伺服器角色的成員,才能夠指定 Auto_Fix 選項。

範例

A. 顯示目前使用者與登入對應的報表

下列範例會產生目前資料庫中的使用者及其安全性識別碼 (SID) 的報表。

EXEC sp_change_users_login 'Report';  

B. 將資料庫使用者對應至新的 SQL Server 登入

下列範例中,資料庫使用者會與新的 SQL Server 登入建立關聯。 第一次對應至其他登入的資料庫使用者 MB-Sales,會重新對應至登入 MaryB

--Create the new login.  
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';  
GO  
--Map database user MB-Sales to login MaryB.  
USE AdventureWorks2012;  
GO  
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';  
GO  

C. 自動將使用者對應至登入,視需要建立新的登入

下列範例會顯示如何使用 Auto_Fix 將現有使用者對應至相同名稱的登入,或者如果登入 Mary 不存在的話,就會建立密碼為 B3r12-3x$098f6 的 SQL Server 登入 Mary

USE AdventureWorks2012;  
GO  
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';  
GO  

另請參閱

安全性預存程序 (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_adduser (Transact-SQL)
sp_helplogins (SQL transact-sql)
系統預存程序 (Transact-SQL)
sys.database_principals (Transact-SQL)