先理解以下概念:
sysadmin服务器角色的成员可以在服务器上执行任何活动。默认情况下,windows/administraters组(本地管理员组)的所有成员都是sysadmin固定服务器角色的成员。
public 服务器角色不是固定服务器角色,因为可以更改这些权限。public 服务器角色被授予 VIEW ANY DATABASE 权限
什么是VIEW ANY DATABASE ?
只能查看服务器里有什么数据库,而不能查看每个数据库里有什么表,视图等。
在sql server中,用只有public角色的root登录名登录后,能看到服务器里的数据库如下:
但当你点击其中一个数据库,想访问里面的表时,发现不能访问。
登录名的用户映射
登录名映射到某个数据库中,则会在该数据库中创建与登录名同名的用户名。
db_owner数据库角色
如果登录名root只有public角色权限,那么映射到数据库中的用户名同样不能访问数据库里的表等,这时,将该用户赋予db_owner数据库角色,即可访问该数据库。
进入正题:
1.先采用windows认证,创建登录名root并将他映射到你所需的数据库中。此时默认的服务器角色是public。
2.
方法一:将登录名root赋予sysadmin服务器角色,这样root就能访问所有数据库,当然也包括映射的数据库。
方法二:在映射的数据库下将用户名root赋予db_owner数据库角色,这样就能访问映射的数据库。方法二较好。