SETUSER
  新增信息 - SQL Server 2000 SP3。允许 sysadmin 固定服务器角色的成员模拟另一用户。重要  在 Microsoft® SQL Server™ 2000 中包含 SETUSER 仅为保持向后兼容性,不推荐使用该语句。在以后的 SQL Server 版本中可能不再支持 SETUSER。
语法
SETUSER [ 'username' [ WITH NORESET ] ] 参数
'username'是当前数据库中所模拟的 SQL Server 或 Microsoft Windows NT® 用户名。如果未指定 username,将重新建立模拟用户的系统管理员的原始标识。WITH NORESET指定后续 SETUSER 语句(未指定 username)不重置为系统管理员。注释
为测试其他用户的权限,sysadmin 固定服务器角色的成员可以通过 SETUSER 采用另一个用户的标识。仅对 SQL Server 用户使用 SETUSER。不支持 Windows 用户使用 SETUSER。如果使用 SETUSER 采用了其他用户的标识,则创建的任何对象均由所模拟的用户所有。例如,如果系统管理员采用用户 Margaret 的标识并创建一个名为 orders 的表,则 orders 表由 Margaret 而非系统管理员所有。创建由其他用户所有的对象不需要 SETUSER,因为创建对象时可以使用合法名称将其他用户指定为新对象的所有者。例如,如果用户 Andrew(db_owner 数据库角色成员)创建表 Margaret.customers,则 customers 由用户 Margaret 而非用户 Andrew 所有。SETUSER 一直保持有效,直到发出其它 SETUSER 语句或用 USE 语句更改当前数据库为止。权限
SETUSER 权限默认授予 sysadmin 固定服务器角色成员且不可转让。示例
A. 使用 SETUSER
下例显示系统管理员如何采用其他用户的标识。用户 mary 创建了一个名为 computer_types 的表。系统管理员使用 SETUSER 模拟用户 mary 授予用户 joe 访问 computer_types 表的权限。SETUSER 'mary'
go
GRANT SELECT ON computer_types TO joe
go
SETUSERB. 使用 NORESET 选项
下例显示系统管理员必须如何创建某些对象,然后使用最小权限测试它们的可用性。为简化起见,系统管理员只想在整个会话期间维护授予 mary 的权限。SETUSER 'mary' WITH NORESET
go
CREATE TABLE computer_types2
.
.
.
GRANT ...
go
SETUSER      /* This statement has no effect. */说明  如果使用 SETUSER WITH NORESET,系统管理员必须注销然后重新登录,才能重新建立自己的权限。