执行exec sp_change_users_login 'REPORT' 列出当前数据库的孤立用户
结果:
...
050801 0xABFAC315ECB8F34F8C4FECE3E8E36F72
051025 0xF108CF3A9E9BB44CB9D23617BDBB5407
051161 0xE5CAB2935CF19541835B0E07CB4B4A8C
060101 0xD3DA6B3497EDAA4CB21F4EE823B516DA
060227 0xE7FA28BF6BC89C4C8B7BBB0EF68DC610
060303 0xD8227FFE86C2A04F97E053B1779FC603
060314 0x84012AB2BF93BC499C7598D919CB2F5E
060316 0x884B2C31FACA8E489A72DB5F7DF5B050
...第二个语句:
exec sp_change_users_login 'AUTO_FIX','060303'  可以自动将用户名所对应的同名登录添加到syslogins中
报错:
消息 15600,级别 15,状态 1,过程 sp_change_users_login,第 207 行
为过程 'sys.sp_change_users_login' 指定的参数或选项无效。
第三个语句:将用户名映射为指定的登录名
使用Use navision_gulf
go
sp_change_users_login 'update_one', '060303', '060303'
或exec sp_change_users_login 'UPDATE_ONE','060303','060303'报错:
[color=#FF0000]消息 15291,级别 16,状态 1,过程 sp_change_users_login,第 131 行
正在终止此过程。缺少 Login 名称 '060303' 或该名称无效。[/color]

解决方案 »

  1.   

    sp_change_users_login 'update_one', 'username', 'loginname'
      

  2.   

    exec sp_change_users_login 'AUTO_FIX','user_name',null,'password'Auto_Fix 将现有用户映射到同名的登录名,以及如何在不存在登录名 user_name 的情况下,创建密码为 password的 SQL Server 登录名 user_name。
      

  3.   


    ----提示很明确,try
    将数据库用户映射到新的 SQL Server 登录名
    在以下示例中,数据库用户与新的 SQL Server 登录名关联。数据库用户 MB-Sales 首先映射到另一个登录名,然后重新映射到登录名 MaryB。--Create the new login.
    CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';
    GO
    --Map database user MB-Sales to login MaryB.
    USE AdventureWorks;
    GO
    EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
    GO
     
      

  4.   

    Hi, 
      
    0)关于User和Login
    use Test_Shen
    go
    create table #temp1(idx int identity,UserName sysname,UserSid varbinary(85),flag int default(0))
    insert #temp1(UserName,UserSid) exec sp_change_users_login 'report'
    -- produces a report of the users in the current database and their security identifiers (SIDs).
    declare @i        int
    declare @j        int
    declare @UserName sysname
    declare @s        varchar(8000)
    select @i=min(idx),@j=max(idx) from #temp1
    while @i<=@j
       begin
          select @UserName=UserName from #temp1 where idx=@i
          if exists (select * from master.sys.syslogins where name=@UserName)
             begin
                update #temp1 set flag=1 where idx=@i
                set @s='sp_change_users_login ''Update_One'','''+@UserName+''','''+@UserName+''''
                print (@s)
                exec (@s)
             end
          set @i=@i+1
       end
    select * from #temp1
    drop table #temp1
      

  5.   


    -- AUTO_FIX 需要指定密码
    exec sp_change_users_login 'AUTO_FIX','060303',null,'password';-- UPDATE_ONE 需要登陆帐户事先存在
    create login [060303] with password='password';
    go
    exec sp_change_users_login 'UPDATE_ONE','060303','060303';
    go
      

  6.   


    成功步骤:
    一.
    create login [060303] with password='password02';设定密码
    二.
    -- AUTO_FIX 需要指定密码
    exec sp_change_users_login 'AUTO_FIX','060303',null,'password';
    将修复用户 '060303' 的行,方法是将其登录名链接更新为某个已经存在的登录名。
    通过更新用户,共修复了 1 个孤立用户。
    通过添加新的登录名并更新用户,共修复了 0 个孤立用户。三.
    exec sp_change_users_login 'UPDATE_ONE','080581','080581';
    go
    不过密码被换成了password2
    要是可以延用以前的密码就好了
      

  7.   

    Hi0)--列出当前数据库的孤立(Orphan User(s))用户
    EXEC sp_change_users_login 'REPORT' --列出当前数据库的孤立用户1)--生成和User同名的Login并初始化密码
    EXEC sp_change_users_login 'Auto_Fix', 'liang', NULL ,'2wsx3edc@$24';
    GO2)--执行删除loginname
    DROP LOGIN liang
    GO3)--欲重用之前密码,可执行2) 再执行1)即可
      

  8.   

    折腾了一上午,总算明白点了。
    EXEC sp_change_users_login 'Report'显示登录映射的当前用户的报告EXEC sp_addlogin 'NewMary'
    goEXEC sp_change_users_login 'Update_One', 'Mary', 'NewMary'我的问题是换了电脑,缺少了login名,只有user名。呃 这样添加login,就等于重新加了个,原数据库的登陆密码就没有了。
    看来只能这样了。
    谢谢各位!