原文出处: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. java怎样获取CPU占用率和硬盘占用率

    通过jmx可以监控vm内存使用,系统内存使用等,以下是网上某博客代码,特点是通过window和linux命令获得CPU使用率. 利用java程序实现获取计算机cpu利用率和内存使用信息. packag ...

  2. hibernate实体对象的三种状态:自由状态,持久状态,游离状态.

    自由态与游离态的区别: 当一个持久化对象,脱离开Hibernate的缓存管理后,它就处于游离状态,游离对象和自由对象的最大区别在于,游离对象在数据库中可能还存在一条与它 对应的记录,只是现在这个游离对 ...

  3. Leetcode Scratching Recorder

    Author: Zhong-Liang Xiang Start from: August 7th, 2017 这个题为连滚带爬的Leetcode填坑记录就这么开始了. 网上看了看, 一堆小伙从2014 ...

  4. 关于html+ashx开发中几个问题的解决方法的感想和总结

    1.针对上篇文章中的服务端处理不敢苟同.仍然坚持使用反射,建立BaseHandler.ashx并在默认process方法中写上反射方法以及权限验证方法.针对具体的情况返回对应的值.服务端其他handl ...

  5. dubbo服务的发布和调用

    Dubbo是分布式服务架构,是一个优秀的开源服务型框架,使得应用可以通过高性能的rpc实现服务的输入和输出功能.其实dubbo就是资源调度和治理中心的管理工具. 发布dubbo服务:在提供服务的应用中 ...

  6. os和sys模块的区别及其常用方法总结

    官方解释:os: This module provides a portable way of using operating system dependent functionality. 翻译:提 ...

  7. ABP文档笔记 - 通知

    基础概念 两种通知发送方式 直接发送给目标用户 用户订阅某类通知,发送这类通知时直接分发给它们. 两种通知类型 一般通知:任意的通知类型 "如果一个用户发送一个好友请求,那么通知我" ...

  8. MyBatis 查询映射自定义枚举

    背景                  MyBatis查询若想映射枚举类型,则需要从 EnumTypeHandler 或者 EnumOrdinalTypeHandler 中选一个来使用         ...

  9. jboss规则引擎KIE Drools 6.3.0 Final 教程(2)

    使用JAVA程序调用规则-运行KIE-DROOLS上的规则 第一步:建立一个MAVEN的Java工程 POM.XML 给出pom.xml文件 <project xmlns="http: ...

  10. Swift:一个简单的货币转换器App在iOS10中的分析和完善

    这本不算是一个完整的货币转换App,只不过是一个小巧的学习性质的程序.该App覆盖了如下几个知识点: 多国语言的支持 通过网络Api接口读取数据 最后我们来修复一个原来代码中的一个小错误作为完美的收尾 ...