原文出处:http://blog.csdn.net/dba_huangzj/article/details/39496517,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349

未经作者同意,任何人不得以“原创”形式发布,也不得已用于商业用途,本人不负责任何法律责任。

前一篇:http://blog.csdn.net/dba_huangzj/article/details/39473895

前言:

如果你把非包含数据库从一个服务器移到另外一个服务器,不管是备份还原还是分离附加,都有可能导致SQL用户变成孤立用户,意味着他们没有对应的登录关联。因为登录名和用户之间的映射是基于SID的,即使新服务器上有相同的登录名,但是由于SID不同,也会使得用户无法被识别,从而形成孤立用户。

如果在同一个域中迁移,那么映射问题仅会影响SQL登录,因为域账号(Windows身份验证)的SID在活动目录中是相同的。

实现:

可以用下面步骤来检查和修复通过还原或附加的形式把数据库迁移到新服务器后的孤立问题:

1.识别:

SELECT  dp.name ,
        dp.sid
FROM    sys.database_principals dp
        LEFT JOIN sys.server_principals sp ON dp.sid = sp.sid
WHERE   sp.sid IS NULL
        AND dp.type_desc = 'SQL_USER'
        AND dp.principal_id > 4;

2.修复:

ALTER USER Fred WITH LOGIN = Fred

原理:

在不涉及包含数据库时,有几种方法可以避免或者修正孤立问题,对于SQL Server 2005 SP2之前的版本,可以使用系统存储过程:sp_change_users_login。实现,如:

USE marketing;
exec sp_change_users_login @Action='Report';

如果存在孤立帐号,将会列出这些帐号的名字和SID出来,可以使用update_one或者auto_fix来修复:

EXEC sp_change_users_login @Action = 'update_one', @UserNamePattern ='fred', @LoginName = 'fred';
EXEC sp_change_users_login @Action = 'Auto_fix', @UserNamePattern = 'fred', @Password = 'I am s3cr3t !';
EXEC sp_change_users_login @Action = 'Auto_fix', @UserNamePattern = 'fred';

其中auto_fix会自动映射到相同的登录名中,如果登录名不存在,将会创建,并以你定义在@password中的值作为新的密码。

更多:

在很多情况下,数据库的onwer可能也会变成孤立,可以用下面语句检查:

SELECT SUSER_SNAME(owner_sid), name FROM sys.databases;

如果返回的结果中第一行为null,意味着数据库的onwer也是孤立,需要使用下面语句修复:

ALTER AUTHORIZATION ON DATABASE::marketing TO sa;

下一篇:http://blog.csdn.net/dba_huangzj/article/details/39548665

Chapter 2 User Authentication, Authorization, and Security(11):在已还原的数据库中修正登录映射错误的更多相关文章

  1. Chapter 2 User Authentication, Authorization, and Security(10):创建包含数据库

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/39473895,专题目录:http://blog.csdn.net/dba_huangzj ...

  2. Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/39003679,专题目录:http://blog.csdn.net/dba_huangzj ...

  3. Chapter 2 User Authentication, Authorization, and Security(8):创建映射到登录名的数据库用户

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38944121,专题目录:http://blog.csdn.net/dba_huangzj ...

  4. Chapter 2 User Authentication, Authorization, and Security(3):保server避免暴力袭击

    原版的:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题文件夹:http://blog.csdn.net/dba_huangzj ...

  5. Chapter 2 User Authentication, Authorization, and Security(3):保护服务器避免暴力攻击

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题目录:http://blog.csdn.net/dba_huangzj ...

  6. Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐户管理权限

    原版的:http://blog.csdn.net/dba_huangzj/article/details/38817915,专题文件夹:http://blog.csdn.net/dba_huangzj ...

  7. Chapter 2 User Authentication, Authorization, and Security(7):创建和使用用户自定义服务器角色

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38895357,专题目录:http://blog.csdn.net/dba_huangzj ...

  8. Chapter 2 User Authentication, Authorization, and Security(6):服务器权限授予粒度

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38867489,专题目录:http://blog.csdn.net/dba_huangzj ...

  9. Chapter 2 User Authentication, Authorization, and Security(5):使用固定服务器角色

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38844999,专题目录:http://blog.csdn.net/dba_huangzj ...

随机推荐

  1. Spring cloud 学习资料整理

    推荐博客 纯洁的微笑 程序猿DD liaokailin的专栏 周立 Spring Cloud 方志朋 Spring Cloud 专栏 许进 跟我学Spring Cloud 推荐网站 Spring Cl ...

  2. javascript templating

    JavaScript Micro-Templating I’ve had a little utility that I’ve been kicking around for some time no ...

  3. Lintcode393 Best Time to Buy and Sell Stock IV solution 题解

    [题目描述] Say you have an array for which the i th element is the price of a given stock on day i. Desi ...

  4. 托管C++、C++/CLI、CLR

    1.什么是托管C++? 在回答这个问题,首先要搞清楚什么是"托管"(Managed).托管是.NET的一个专门概念,它是融于通用语言运行时(CLR)中的一种新的编程理念,因此我们完 ...

  5. linux下的静态库与动态库详解

    静态库 先说说我们为什么需要库? 当有些代码我们大量会在程序中使用比如(scanf,printf等)这些函数我们需要在程序中频繁使用,于是我们就把这些代码编译为库文件,在需要使用时我们直接链接即可. ...

  6. Android源码解析——Toast

    简介 Toast是一种向用户快速展示少量信息的视图.当它显示时,它会浮在整个应用层的上面,并且不会获取到焦点.它的设计思想是能够向用户展示些信息,但又能尽量不显得唐突.本篇我们来研读一下Toast的源 ...

  7. 20160213.CCPP体系详解(0023天)

    程序片段(01):全排列.c 内容概要:全排列密码库 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <std ...

  8. ScrollView嵌套ListView后,进入页面不从顶部开始显示的问题解决

    ScrollView嵌套ListView后,进入页面不从顶部开始显示的问题解决 首先,正常情况下,如果在ScrollView里嵌套ListView后,会发现ListView只显示1条数据 那么,为了解 ...

  9. Swift中的可选协议和方法的历史渊源

    @objc protocol Transaction { func commit() -> Bool optional func isComplete() -> Bool } 以上协议被标 ...

  10. Linux 环境下一些常用命令(四)

    转自 http://www.oschina.net/translate/20-advanced-commands-for-middle-level-linux-users 31. 命令: rm 'rm ...