SETUSER (Transact-SQL)
只允許系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,能夠模擬另一位使用者。
重要事項: |
---|
Microsoft SQL Server 2005 包括 SETUSER 的目的,是為了與舊版相容。未來的 SQL Server 版本可能不支援 SETUSER。我們建議您改用 EXECUTE AS。 |
語法
SETUSER [ 'username' [ WITH NORESET ] ]
引數
'username'
這是在模擬的目前資料庫中之 SQL Server 或 Microsoft 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
請參閱
參考
DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
USE (Transact-SQL)