1. 程式人生 > >sp_addlogin 如果恢復的使用者ID已經存在,且SID號和已經存在的SID不一樣的兩種解決辦法

sp_addlogin 如果恢復的使用者ID已經存在,且SID號和已經存在的SID不一樣的兩種解決辦法

一般來說,當我們恢復一個數據庫時, 資料庫的登陸ID,需要用sp_addlogin ,重新新增一次即可。

  然後執行sql命令:select   sid   from  newdb..sysusers  where  name='wblUser',記下此sid數值.

    再執行sql 命令: sp_addlogin 'wblUser','wbl','newdb',null,@sid,null 。

但是有時候新恢復的新資料庫newdb , 對應的SID 和電腦上已經存在的oldDB 的 user對應的登陸id不一樣, 

這樣在恢復的時候會提示 user已經存在, 有兩種解決辦法

1. 新建一個登陸ID:  wblUser_new , 用新使用者wblUser_new登陸

sp_addlogin 'wblUser_new','wbl','newdb',null,@sid,null

2.還有另一種辦法,兩個資料庫共用wblUser.

      通過下面的SQL程式碼,可以將當前資料庫的引數做修改:
       Use Master
       GO
       sp_configure 'allow updates', 1
       reconfigure with override
      GO
   該語句將當前資料庫的引數“是否允許修改系統表”的值置1,即允許使用者修改系統表
   然後將該資料庫中sysusers這個表中 wblUser 的SID直接UPDATE成當前服務的SID。

  然後執行sql命令:select   sid   from  olddb..sysusers  where  name='wblUser',記下此sid數值.


      update newdb..sysusers  set sid = @SID where name = 'wblUser'


 這時,用wblUser登陸,就可以同時操作兩個已恢復的資料庫了。