SETUSER (Transact-SQL)

只允許系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,能夠模擬另一位使用者。

重要注意事項重要事項

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

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

語法

SETUSER [ 'username' [ WITH NORESET ] ] 

引數

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

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

備註

系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,可以利用 SETUSER 來採用另一位使用者的識別,以測試其他使用者的權限。

請只搭配 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
SETUSER