SETUSER SETUSER - 北京怡康軟件科技有限公司 資源網(wǎng) "/>
允許 sysadmin 固定服務(wù)器角色成員或 db_owner 固定數(shù)據(jù)庫角色成員模擬其他用戶。
重要 在 Microsoft® SQL Server™ 2000 中包含 SETUSER 僅為保持向后兼容性,不推薦使用該語句。在以后的 SQL Server 版本中可能不再支持 SETUSER。
SETUSER [ 'username' [ WITH NORESET ] ]
'username'
是所模擬的當(dāng)前數(shù)據(jù)庫中的 SQL Server 或 Microsoft Windows NT® 用戶名。如果未指定 username,將重新建立模擬用戶的系統(tǒng)管理員或數(shù)據(jù)庫所有者的原始標(biāo)識。
WITH NORESET
指定后續(xù) SETUSER 語句(未指定 username)不重置為系統(tǒng)管理員或數(shù)據(jù)庫所有者。
為測試其他用戶的權(quán)限,sysadmin 或 db_owner 角色成員可以通過 SETUSER 采用另一個用戶的標(biāo)識。
僅對 SQL Server 用戶使用 SETUSER。不支持 Windows 用戶使用 SETUSER。如果使用 SETUSER 采用了其他用戶的標(biāo)識,則創(chuàng)建的任何對象均由所模擬的用戶所有。例如,如果數(shù)據(jù)庫所有者采用用戶 Margaret 的標(biāo)識并創(chuàng)建一個名為 orders 的表,則 orders 表由 Margaret 而非系統(tǒng)管理員所有。
創(chuàng)建由其他用戶所有的對象不需要 SETUSER,因為創(chuàng)建對象時可以使用合法名稱將其他用戶指定為新對象的所有者。例如,如果用戶 Andrew(db_owner 數(shù)據(jù)庫角色成員)創(chuàng)建表 Margaret.customers,則 customers 由用戶 Margaret 而非用戶 Andrew 所有。
SETUSER 一直保持有效,直到發(fā)出其它 SETUSER 語句或用 USE 語句更改當(dāng)前數(shù)據(jù)庫為止。
SETUSER 權(quán)限默認授予 sysadmin 固定服務(wù)器角色成員且不可轉(zhuǎn)讓。
下例顯示數(shù)據(jù)庫所有者如何采用其他用戶的標(biāo)識。用戶 mary 創(chuàng)建了一個名為 computer_types 的表。數(shù)據(jù)庫所有者使用 SETUSER 模擬用戶 mary 授予用戶 joe 訪問 computer_types 表的權(quán)限。
SETUSER 'mary'
go
GRANT SELECT ON computer_types TO joe
go
SETUSER
下例顯示數(shù)據(jù)庫所有者必須如何創(chuàng)建某些對象,然后使用最小權(quán)限測試它們的可用性。為簡化起見,數(shù)據(jù)庫所有者只想在整個會話期間維護授予 mary 的權(quán)限。
SETUSER 'mary' WITH NORESET
go
CREATE TABLE computer_types2
.
.
.
GRANT ...
go
SETUSER /* This statement has no effect. */
說明 如果使用 SETUSER WITH NORESET,數(shù)據(jù)庫所有者或系統(tǒng)管理員必須注銷然后重新登錄,才能重新建立自己的權(quán)限。
相關(guān)文章