桦仔 笔记6-徐 检测孤立用户并恢复孤立用户到新的服务器 解决数据库镜像孤立用户问题

1 --检测孤立用户并恢复孤立用户到新的服务器 解决数据库镜像孤立用户问题

 2 --注意:重新链接只能链接SQL登录帐号,不能链接Windows登录帐号

 3 --如果不选择重新链接可以使用备份master数据库的方法还原到新的服务器上,可以避免一个数据库有

 4 --成千上百个数据库用户的情况

 5 SELECT * FROM sys.server_principals

 6 SELECT  * FROM sys.database_principals

 7 

 8 --检测孤立用户

 9 USE GPOSDB     --要建立镜像的数据库

10 EXEC sys.sp_change_users_login @Action = 'report', -- varchar(10)

11     @UserNamePattern = NULL, -- sysname

12     @LoginName = NULL, -- sysname

13     @Password = NULL -- sysname

14 GO

15 

16 --在服务器新建一个同名的登录帐号 ,例如hengshan,然后重新链接hengshan服务器登录帐户与数据库用户hengshan,将

17 --他们的SID改成一致的

18 USE GPOSDB

19 GO

20 EXEC sys.sp_change_users_login @Action = 'update_one', -- varchar(10)

21     @UserNamePattern = 'hengshan', -- sysname<database_user>

22     @LoginName = 'hengshan', -- sysname<login_name>

23     @Password = 'test' -- sysname 将数据库用户密码跟登录帐号密码都设置为test   这里主库的hengshan用户的密码也是test

24 

25 

26 

27 ---------------SQL2008 AUTO_FIX才有用----------------------------------------------

28    

29 USE GPOSDB

30 EXEC sys.sp_change_users_login @Action = 'AUTO_FIX', -- varchar(10)

31 @UserNamePattern =hengshan -- sysname

32 

33    

34 ------------------------解决数据库镜像孤立用户问题---------------------

35 --在主数据库中执行如下语句:

36 USE master;

37 select sid,name from syslogins;

38 

39 

40 --查找出相应的数据库用户名和sid,例如:上述的’myuser’

41 --

42 --在备数据库中执行如下语句:

43 

44 USE master;

45 exec sp_addlogin

46 @loginame = 'myuser',

47 @passwd = 'test',

48 @sid = 0x074477739DCA0E499C29394FFFC4ADE4

49 

50 --这里的’LoginName’即主数据库中的登录名,sid即是上述通过SQL语句查找出的sid。

51 --注意一下密码

52 

53 --到此为止可以认为备机数据库的环境已经与主机同步了,还差数据库内的数据未同步

你可能感兴趣的:(数据库)