孤立用户(翻译)

1. 查看某个数据库的孤立用户:
   USE 库名
   EXEC sp_change_users_login 'Report'

2. 自动修复某个孤立用户:
   USE 库名
   EXEC sp_change_users_login 'Auto_Fix', '孤立用户名', NULL, '密码' 

     --密码指用户对应的登录不存在时, 系统自动建立登录, 为登录分配的密码
   报错:
      服务器: 消息 8144,级别 16,状态 2,过程 sp_change_users_login,行 0
     为过程或函数 sp_change_users_login 指定的参数太多。
     --报错时候, 可删除“,'密码'”部分(版本或者补丁问题)
3.表已经恢复完毕,有孤立用户 user1, 在登录中已建立登录用户 user2

  sp_change_users_login @Action = 'Update_One'
  , @UserNamePattern =  'user1'
  , @LoginName =  'user2'

可将 user1 与 user2(以user2用户名登录) 关联

翻译:

**************************************************************************************************
sp_change_users_login  
      新增信息   -   SQL   Server   2000   SP3。  
   
  将数据库中现有的用户映射到   Microsoft®   SQL   Server™   登录。  
   
  语法  
  sp_change_users_login   [   @Action   =   ]   'action'    
          [   ,   [   @UserNamePattern   =   ]   'user'   ]    
          [   ,   [   @LoginName   =   ]   'login'   ]  
          [   ,   [   @Password   =   ]   'password'   ]  
   
  参数  
  [   @Action   =   ]   'action'  
   
  描述此过程要执行的操作。action   的数据类型为   varchar(10),可以是下面的某个值。  
   
  值   描述    
  Auto_Fix   将当前数据库   sysusers   表中的用户条目链接到   sysxlogins   中同名的登录。应检查   Auto_Fix   语句的结果,确认实际中的链接正确。在对安全性较为敏感的情况下,要避免使用   Auto_Fix。    
  使用   Auto_Fix   时,必须指定   user   和   password;login   必须为   NULL。user   必须是当前数据库中的有效用户。  
     
  Report   列出当前数据库中未链接到任何登录的用户以及相应的安全标识符   (SID)。    
  user、login   和   password   必须为   NULL   或不指定。  
     
  Update_One   将当前数据库中指定的   user   链接到   login。login   必须已存在。必须指定   user   和   login。password   必须为   NULL   或不指定。    
   
   
  [@UserNamePattern   =]   'user'  
   
  是当前数据库中的   SQL   Server   用户的名称。user   的数据类型为   sysname,默认值为   NULL。    
   
  [@LoginName   =]   'login'  
   
  SQL   Server   登录的名称。login   的数据类型为   sysname,默认值为   NULL。    
   
  [@Password   =]   'password'  
   
  是指派给   Auto_Fix   创建的新   SQL   Server   登录的密码。如果已存在匹配的登录,将映射用户和登录并忽略   password。如果不存在匹配的登录,sp_change_users_login   将新建一个新的   SQL   Server   登录并将   password   指派为该新登录的密码。password   是   sysname,默认值为   NULL。  
   
  返回代码值  
  0(成功)或   1(失败)  
   
  结果集  
  列名   数据类型   描述    
  UserName   sysname   登录名。    
  UserSID   varbinary(85)   登录安全标识符。    
   
   
  注释  
  使用此过程将当前数据库中用户的安全帐户链接到登录。如果用户登录已更改,则使用   sp_change_users_login   将用户链接到新的登录,而不会丢失用户的权限。  
   
  sp_change_users_login   只能用于   SQL   Server   登录;它不能用于   Windows   登录。  
   
  login   不能为   sa,而   user   不能为   dbo、guest   或   INFORMATION_SCHEMA   用户。  
   
  不能在用户定义的事务中执行   sp_change_users_login。  
   
  权限  
  任何   public   角色的成员均可执行带有   Report   选项的   sp_change_users_login。只有   sysadmin   固定服务器角色的成员才能指定   Auto_Fix   选项。只有   sysadmin   或   db_owner   角色的成员才能指定   Update_One   选项。  
   
  示例  
  A.   显示登录映射的当前用户的报告  
  下面的示例生成当前数据库中的用户及其安全标识符的报告。  
   
  EXEC   sp_change_users_login   'Report'  
   
  B.   更改用户的登录  
  下面的示例更改   pubs   数据库中的用户   Mary   与现有登录之间的链接,链接到新的登录   NewMary   上(使用   sp_addlogin   添加)。  
   
  --Add   the   new   login.  
  USE   master  
  go  
  EXEC   sp_addlogin   'NewMary'  
  go  
   
  --Change   the   user   account   to   link   with   the   'NewMary'   login.  
  USE   pubs  
  go  
  EXEC   sp_change_users_login   'Update_One',   'Mary',   'NewMary'  
   
  C.   自动将用户映射到登录(必要时新建一个新登录)  
  下例显示如何使用   Auto_Fix   选项将现有的用户映射到同名的登录,或者如果不存在登录   Mary,则创建密码为   B3r12-36   的   SQL   Server   登录   Mary。  
   
  USE   pubs  
  go  
  EXEC   sp_change_users_login   'Auto_Fix',   'Mary',   NULL,   'B3r12-36'  
  go  

posted @ 2007-04-23 22:22  晓岚  阅读(703)  评论(1编辑  收藏  举报