SETUSER (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

允許 sysadmin 固定伺服器角色的成員或資料庫的擁有者,模擬其他使用者。

重要

包括 SETUSER 的目的,只是為了與舊版相容。 未來的 SQL Server 版本可能不支援 SETUSER。 我們建議您改用 EXECUTE AS

Transact-SQL 語法慣例

Syntax

  
SETUSER [ 'username' [ WITH NORESET ] ]   

注意

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

引數

'username'
這是在模擬的目前資料庫中 SQL Server 或 Windows 使用者的名稱。 當未指定 username 時,會重設摸擬使用者的系統管理員或資料庫擁有者的原始識別。

WITH NORESET
指定後續的 SETUSER 陳述式 (不含指定的 username) 不應將使用者識別重設為系統管理員或資料庫擁有者。

備註

sysadmin 固定伺服器角色的成員或資料庫的擁有者,可以使用 SETUSER 來採用其他使用者的識別,以測試另一位使用者的權限。 db_owner 固定資料庫角色中的成員資格並不夠。

請只搭配 SQL Server 使用者使用 SETUSER。 不支援 Windows 使用者使用 SETUSER。 當利用 SETUSER 來假設使用另一位使用者的識別時,被模擬的使用者會擁有進行模擬的使用者所建立的任何物件。 例如,假設資料庫擁有者使用 Margaret 使用者的識別,並建立稱為 orders 的資料表,則 orders 資料表的擁有者即為 Margaret,而不是系統管理員。

SETUSER 會維持有效,直到發出另一個 SETUSER 陳述式,或直到利用 USE 陳述式來變更目前資料庫為止。

注意

如果使用 SETUSER WITH NORESET,資料庫擁有者或系統管理員必須登出,再重新登入,以便重新建立他們自己的權利。

權限

需要 sysadmin 固定伺服器角色的成員資格,或必須為資料庫的擁有者。 db_owner 固定資料庫角色中的成員資格不足

範例

下列範例會顯示資料庫擁有者可以如何採用另一位使用者的識別。 mary 使用者建立了稱為 computer_types 的資料表。 藉由使用 SETUSER,資料庫擁有者模擬 mary 來授與 joe 使用者存取 computer_types 資料表的權利,然後再重設他們自己的識別。

SETUSER 'mary';  
GO  
GRANT SELECT ON computer_types TO joe;  
GO  
--To revert to the original user  
SETUSER;  

另請參閱

DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
USE (Transact-SQL)