sqlserver数据库关联孤立账号的方法

发布时间:2018年10月15日 阅读:61 次

重新安装mssql数据库后可能有这样的问题,在数据还原到其他服务器时,登录名会丢失,重建非常麻烦,特別是数据库用户较多的的情况,其实这个问题解决非常简单,sql server 2005 及以前的产品,sql server 提供了 sp_change_users_login存储过程,(sql server 2008 须用ALTER USER)

    sp_change_users_login有三种动作:report,update_one和auto_fix

    具体用法:*/

/*1.列出当前数据库中的孤立用戶*/

    exec  sp_change_users_login 'report'

/*2.如果已有登录用戶,将用戶名映射为指定的登录名*/

    exec sp_change_users_login 'UPDATE_ONE','用戶名','登录名'

    or

    exec sp_change_users_login 'AUTO_FIX','用戶名'

/*3.如果沒有建立登录用戶*/

    exec sp_change_users_login 'Auto_Fix', '登录名', NULL, '登录密码'

/*--相同名字可以使用,处理孤立用户

--在单个数据库上执行*/

    exec sp_change_users_login 'AUTO_FIX','db_writer'

    exec sp_change_users_login 'AUTO_FIX','db_reader'


1、登录名:服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源。每个登录名的定义存放在master数据库的syslogins表中。


2、用户名:一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。用户定义信息存放在每个数据库的sysusers表中。


3、SQLSERVER把登录名与用户名的关系称为映射。用登录名登录SQLSERVER后,在访问各个数据库时,SQLSERVER会自动查询此数据库中是否存在与此登录名关联的用户名,若存在就使用此用户的权限访问此数据库,若不存在就是用guest用户访问此数据库。


4、一个登录名可以被授权访问多个数据库,但一个登录名在每个数据库中只能映射一次。即一个登录可对应多个用户,一个用户也可以被多个登录使用。好比SQLSERVER就象一栋大楼,里面的每个房间都是一个数据库.登录名只是进入大楼的钥匙,而用户名则是进入房间的钥匙.一个登录名可以有多个房间的钥匙,但一个登录名在一个房间只能拥有此房间的一把钥匙。


5、链接或登录Sql Server服务器时是用的登录名而非用户名登录的,程序里面的链接字符串中的用户名也是指登录名。


6、我们常见的dbo(用户名)是指以sa(登录名)或windows   administration(Windows集成验证登录方式)登录的用户,也就是说数据库管理员在SQLSERVER中的用户名就叫dbo,而不叫 sa,这一点看起来有点蹊跷,因为通常用户名与登录名相同(不是强制相同,但为了一目了然通常都在创建用户名时使用与登录名相同的名字),例如创建了一个登录名称为me,那么可以为该登录名me在指定的数据库中添加一个同名用户,使登录名me能够访问该数据库中的数据.当在数据库中添加了一个用户me 后,之后以me登录名登录时在该数据库中创建的一切对象(表,函数,存储过程等)的所有者都为me,如me.table1,me.fn_test(),而不是dbo.table1,dbo.fn_test().


7、SQL Server中还有一个特殊的数据库角色public,它存在于每一个数据库中,包括系统数据库,如master、msdb、model和用户数据库,数据库的所有用户都属于public角色,并且不能从public角色中删除。


登录名是进入数据库时用的名字啊···主要是进行管理数据库的···
用户名···当权限足够的时候也可以算是登录名哦···也指连入数据库的用户端的名字哦

本文标题:sqlserver数据库关联孤立账号的方法
本文链接:https://malonghua.com/post/17.html
作者授权:除特别说明外,本文由 SylarM 原创编译并授权 猪逻辑公园工作室 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。
Tag:sqlserver 数据库 关联 孤立账号
相关文章

发表评论: