ALTER USER (Transact-SQL)

重命名数据库用户或更改它的默认架构。

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

语法

ALTER USER user_name  
     WITH <set_item> [ ,...n ]
<set_item> ::= 
     NAME = new_user_name 
     | DEFAULT_SCHEMA = schema_name
     | LOGIN = login_name

参数

  • user_name
    指定在此数据库中用于识别该用户的名称。
  • LOGIN **=**login_name
    通过更改用户的安全标识符 (SID) 以匹配登录名的 SID,将用户重新映射到另一个登录名。
  • NAME **=**new_user_name
    指定此用户的新名称。new_user_name 不得已存在于当前数据库中。
  • DEFAULT_SCHEMA **=**schema_name
    指定服务器在解析此用户的对象名时将搜索的第一个架构。

备注

如果 DEFAULT_SCHEMA 保持未定义状态,则用户将以 dbo 作为其默认架构。 可以将 DEFAULT_SCHEMA 设置为数据库中当前不存在的架构。 因此,可以在创建架构之前将 DEFAULT_SCHEMA 分配给用户。 不能为被映射到 Windows 组、证书或不对称密钥的用户指定 DEFAULT_SCHEMA。

ms176060.note(zh-cn,SQL.90).gif重要提示:
如果用户是 sysadmin 固定服务器角色的成员,则忽略 DEFAULT_SCHEMA 的值。 sysadmin 固定服务器角色的所有成员都有默认架构 dbo

如果新用户名的 SID 与在数据库中记录的 SID 匹配,则只能更改被映射到 Windows 登录命或组的用户的名称。 此检查将帮助防止数据库中的 Windows 登录名欺骗。

利用 WITH LOGIN 子句可以将用户重新映射到不同的登录名。 没有登录名的用户、映射到证书的用户或映射到非对称密钥的用户不能通过该子句重新映射。 只有 SQL Server 用户和 Windows 用户(或组)才能进行重新映射。 WITH LOGIN 子句不能用于更改用户类型,如将 Windows 帐户改为 SQL Server 登录名。

如果用户为 Windows 用户、其名称为 Windows 名称(包含反斜杠)或者未指定其新名称并且其当前名称与登录名不同,则该用户名将自动重命名为登录名。 否则,除非调用方另外调用 NAME 子句才会重命名该用户。

ms176060.note(zh-cn,SQL.90).gif注意:
具有 ALTER ANY USER 权限的用户可以更改任何用户的默认架构。 其架构已更改的用户可能不知不觉地从错误表中选择数据,或从错误架构执行代码。

被映射到 SQL Server 登录名、证书或不对称密钥的用户名不能包含反斜杠字符 (\)。

ms176060.Caution(zh-cn,SQL.90).gif注意:
在 SQL Server 2005 中,架构的行为与早期版本的 SQL Server 中的行为不同。 假设架构与数据库用户等价的代码不能返回正确的结果。 旧目录视图(包括 sysobjects)不应在曾经使用过以下任何 DDL 语句的数据库中使用:CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION。 在曾经使用过这些语句中的任意一个语句的数据库中,必须使用新的目录视图。 新的目录视图将采用在 SQL Server 2005 中引入的主体和架构的分离。 有关目录视图的详细信息,请参阅目录视图 (Transact-SQL)

权限

若要更改用户名,需要对数据库的 ALTER ANY USER 权限。 若要更改默认架构,需要对用户的 ALTER 权限。 用户可以更改自己的默认架构。

需要对数据库拥有 CONTROL 权限以将用户重新映射到登录名。

示例

A. 更改数据库用户的名称

以下示例将数据库用户 Mary5 的名称更改为 Mary51

USE AdventureWorks;
ALTER USER Mary5 WITH NAME = Mary51;
GO 

B. 更改用户的默认架构

以下示例将用户 Mary51 的默认架构更改为 Purchasing

USE AdventureWorks;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

请参阅

参考

CREATE USER (Transact-SQL)
DROP USER (Transact-SQL)
EVENTDATA (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助