SETUSER (Transact-SQL)

允许 sysadmin 固定服务器角色的成员或 db_owner 固定数据库角色的成员模拟另一用户。

ms186297.note(zh-cn,SQL.90).gif重要提示:
在 Microsoft SQL Server 2005 中保留 SETUSER 仅为了保持向后兼容性。在以后的 SQL Server 版本中可能不再支持 SETUSER。我们建议您改用 EXECUTE AS

主题链接图标Transact-SQL 语法约定

语法

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 语句更改当前数据库为止。

ms186297.note(zh-cn,SQL.90).gif注意:
如果使用了 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)

帮助和信息

获取 SQL Server 2005 帮助