SETUSER (Transact-SQL)
只允許系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,能夠模擬另一位使用者。
重要事項 |
---|
包括 SETUSER 的目的,只是為了與舊版相容。未來的 SQL Server 版本可能不支援 SETUSER。我們建議您改用 EXECUTE AS。 |
語法
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