我们在附加一个数据库到一个新的数据库服务器中的时候,数据库中用户的SID和服务器中用户的SID肯定是不一致的,即使他们的用户名相同,我们也不可能从外部用该用户名进行登录来访问新附加的数据库,这时候我们就说这个数据库中的用户是一个孤立用户,因为该用户没有在该服务器中进行登记。这里就存在着一个映射的关系,我们必须通过一些命令来建立这种关系。

  用来映射一个孤立用户的命令

sp_change_users_login @Action='update_one', 
@UserNamePattern='TestUser1', 
@LoginName='TestUser1' 
GO 

  或者如果你确定SQL Server 登录名和映射的数据库孤立用户名一样,那么接着你可以使用更短的命令,比如以下TestUser2的例子。

EXEC sp_change_users_login 'Auto_Fix', 'TestUser2' 
GO

  这两种命令都可以把用户映射到登录名,并且它们将不再是孤立的。

  如果一个登录名不存在,你必须在做映射之前先创建这个登录名。创建登录名的一种便捷方式是使用以下将会创建登录名接着把登录名映射到用户的命令。

  用来把一个孤立用户映射到一个还未出现但是将要创建的登录名的命令

EXEC sp_change_users_login 'Auto_Fix', 'TestUser3', null,'pwd' 
GO

总结应用的T-SQL

  在以上过程中,使用了存储过程sp_change_users_login。变量[ @Action ]指定了这个存储过程的准确用法。它接受像varchar(10)这样的参数并且有以下的一种值:

  l 如果参数是Auto_Fix,那么数据库用户从相同名称的SQL Server 登录名映射。如果这个登录名没有显示,它也可能会产生登录名。

  l 如果参数是Report,它列出孤立用户和它们的安全标识符(SID)。

  l 如果参数是Update_One,它从指定的数据库链接到现有的SQL Server 登录名。

  一些注意事项

  l sp_change_users_login要求是db_owner固定数据库角色的组成成员,只有成为db_owner固定数据库角色的组成成员才能指定Auto_Fix选项。

  l 当映射孤立用户时,主从数据库中的SID将分配给孤立用户,所以每次一个数据库备附加或者还原时,SID在SQL Server 登录名和数据库用户之间都存在差异。

  l 如果你有映射到一个数据库用户的不同的Server 登录名,那么不要使用Auto_Fix命令来链接。

  l 如果相应的SQL Server 登录名被删除,那么一个用户也可能成为孤立的。

  l 虽然这是很显而易见的,但是还是有必要提出来,在重新链接之后,SQL Server 登录名的密码可以由数据库用户所使用。

转载于:https://www.cnblogs.com/brusehht/archive/2010/11/25/1887920.html

如何对SQL Server数据库中的孤立用户和系统及用户建立映射相关推荐

  1. SQL Server 数据库中的 MD5 和 SHA1加密算法

    MD5 和 SHA1 是一种单向加密算法,常用于密码的验证等需要加密操作的场合,在一般情况下,开发人员可以通过 Delphi 或 PHP 这类语言自己编写相关函数或者使用自带的函数,然后将加密过的结果 ...

  2. 在ASP.NET中将图片存储到Sql Server数据库中

    在ASP.NET中将图片存储到Sql Server数据库中 http://hi.baidu.com/rayshow/blog/item/360e8ff9662c8b5a252df268.html 索引 ...

  3. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

  4. mysql raiserror_RAISERROR在SQL Server数据库中的用法

    raiserror  是由单词 raise error 组成 raise  增加; 提高; 提升 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql ser ...

  5. SQL Server数据库中、获得刚插入新记录的自动ID号

    以下的文章主要是介绍在SQL Server数据库中正确获得刚插入一条新记录的自动ID号的实际操作过程,下面就是文章对其的主要内容的具体描述,望大家在浏览之后会对其有更深的了解. 使用[IDENT_CU ...

  6. 从sqlserver中数据写入mysql_[SQL Server]SQL Server数据库中如何返回INSERT INTO语句插入/写入数据后的记录值(比如ID等)?...

    问题描述 SQL Server数据库中,有时候当我们使用INSERT INTO语句写入数据后,需要返回写入数据对应的自增ID或者GUID,以便根据此记录进行后续的操作.那么SQL语句如何实现返回记录值 ...

  7. SQL Server数据库中使用sql脚本删除指定表的列

    在SQL Server数据库中删除某一列,使用数据库管理工具直接可视化操作是很简单的,但是如果要用sql脚本呢?可能你会说很简单,直接用 ALTER TABLE [要删除的字段所在的表名] DROP ...

  8. 浅析SQL Server数据库中的伪列以及伪列的含义

    浅析SQL Server数据库中的伪列以及伪列的含义 原文:浅析SQL Server数据库中的伪列以及伪列的含义 本文出处:http://www.cnblogs.com/wy123/p/6833116 ...

  9. SQL Server数据库中批量导入数据的四种方法总结

    在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题.其实,在SQL Server中集成了很多成批导入数据的方法.有些项目实施顾问头疼的问题,在我们数据库管理员眼中,是小菜一碟.现在的重点就是, ...

最新文章

  1. 关于 @ngrx/Store 下 obj 的扩展问题
  2. golang 接口格式
  3. python学习笔记(五)——函数基础和函数参数
  4. 分页请求json数据_pyspider抓取虎嗅网文章数据
  5. 2020-2-15技术积累-时间插件-前端获取后端数据生成表格
  6. r语言 面板数据回归_R语言——伍德里奇计量经济导论案例实践 第十三章 横截面与面板数据(一)...
  7. 晶振,数字电路的心脏~
  8. 【2018.3.31】模拟赛之三-ssl2408 比萨【搜索,dfs】
  9. ZooKeeper,策展人以及微服务负载平衡的工作方式
  10. leetcode620. 有趣的电影(SQL)
  11. HackRF 无线门铃信号录制与重放
  12. sql配置管理器服务是空的_PostgreSQL 12 安装和配置
  13. 小白设计模式:装饰者模式
  14. 数据挖掘实践(金融风控)——task5:模型融合
  15. 1. OpenMAX系列 —— ACodec和OMX的联系
  16. 我的.emacs(Ubuntu版)
  17. CSS像素(px)、物理像素(pt)、rem、em、rpx
  18. 计算机组成原理运算器设计实验之8位可控加减法电路设计
  19. B - Distributing Ballot Boxes
  20. MySQL中 begin 事务 begin ,第二个begin带自动提交功能???

热门文章

  1. 如何快速增加网站收录?
  2. LINUx设置ip导致内核挂死,Linux之TCPIP内核参数优化
  3. java git subtree_Git subtree使用
  4. mac bash 下使用vi 快捷方式——因为没有alt键 所以没有办法 用vi模式也非常方便的...
  5. 启明星辰泰合发布新一代日志分析系统
  6. IJ 自动生成构造方法
  7. angular指令:tm.tags添加/删除标签
  8. 手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(二)
  9. 在离线环境中安装Visual Stuido 2017
  10. Spark 1.6.2 + Beam 2.0.0读取Mongodb数据进行相应逻辑处理