日期:2014-05-18  浏览次数:20365 次

不明白为什么要既有登录名,又有数据库用户名,谢谢
不明白为什么要既有登录名,又有数据库用户名 

因为数据库用户名是关联到登录名的
只要登录了,如果这个登录名有一个数据库用户名与之关联,那么也就自动连接到数据库了

别的数据库如oracle,mysql都只有一个数据库用户名的,不存在登录名的概念

SQL SERVER从概念上似乎到先登录到实例,再登录到数据库
而实际上这两步是自动同时完成的,感觉多此一举


------解决方案--------------------
登陆名就是登陆到SqlServer用的帐户,数据库用户名就是说这个数据库那些人可以用,一个SqlServer下面可以建N多个数据库,难道你登陆了所有的数据库都要给你用吗?这样似乎很不安全,我有一个数据库挂在服务器上面,你也有一个挂在服务器上面,我的数据库凭什么给你看,你的数据同样也不希望我看到吧

当然如果登陆名是sysadmin组的是可以使用全部的数据库,可是一般的开发人员不会给这么大的权限,这样的结构更安全一些
------解决方案--------------------
2005中,一个客户端可连接多个服务器

那连接某个服务器的时候需要验证,这是一定的

一个服务器里可能会有多个数据库,每个数据库有一个单独的验证,就保证了不同的角色管理不同的数据库
------解决方案--------------------
举个简单的例子:

有一个Test1数据库放在A服务器上面,Test1数据库有两个用户叫T1,T2,分别有不同的权限,还有一个数据库Test2,上面有个用户叫T1,T3

T1,T2,T3分别对应登陆名T1,T2,T3

那么你用T1,可以访问系统库和Test1、Test2数据库
T2,T3只能访问系统库和各自的数据库,这样是不是更安全一点


下面继续:

现在服务器升级了,更换了一个新的服务器B,需要把Test1数据库从A转到B上去,那么只需要简单的在A上分离,附加到B上,然后用sa用户在B服务器上执行修复独立用户T1,T2,那么现在看看T1,T2的权限是不是和以前一模一样了,非常的方便

如果没有这个数据库用户只有登陆名是不是很麻烦,反之只有数据库用户,那么一个数据库可以使用几个数据库?怎么限制不能访问其他数据库?