最近有朋友的SQL server数据库意外中枪,几经周折,数据将数据库恢复到新环境。恢复后在数据库级别有用户名而实例级别则无相应的
最近有朋友的SQL server数据库意外中枪,几经周折,数据将数据库恢复到新环境。恢复后在数据库级别有用户名而实例级别则无相应的登陆用户。这在SQL server数据库中是一个比较普遍的情形。本文描述的是即是对这些孤立的账户通过系统过程sp_change_users_login来建立其映射关系。
1、sp_change_users_login的功能及其限制
使用 sp_change_users_login 将当前数据库中的数据库用户链接到 SQL Server 登录名。
如果用户登录名已更改,则使用 sp_change_users_login 将用户链接到新的登录,而不会丢失用户的权限。
新的 login 不能为 sa,,而 user 不能为 dbo、guest 或 INFORMATION_SCHEMA 用户。
sp_change_users_login 不能用于将数据库用户映射到 Windows 级主体、证书或非对称密钥。
sp_change_users_login 不能与通过 Windows 主体创建的 SQL Server 登录名一起使用,也不能与使用 CREATE USER WITHOUT LOGIN 创建的用户一起使用。
不能在用户定义的事务中执行 sp_change_users_login。
sp_change_users_login在后续的版本将会被ALTER USER取代。
2、sp_change_users_login语法参考
sp_change_users_login [ @Action = ] 'action'
[ , [ @UserNamePattern =