为什么在'dbo'上登录映射

时间:2012-09-29 19:56:40

标签: sql sql-server principal

在数据库设计中,用户“喂”'与登录' fed'相比。

USE [Design]
SELECT l.name AS login_name, p.name AS [user_name]
FROM sys.sql_logins l JOIN sys.database_principals p ON l.SID = p.SID
WHERE l.name = 'fed'

enter image description here

为什么登录时的请求被输入'在设计数据库中选择' dbo'

USE [Design]
SELECT USER AS user_name

enter image description here

1 个答案:

答案 0 :(得分:2)

首先阅读:CREATE USER

您将LOGIN与USER混淆。您的第一个查询是检查LOGIN信息,而第二个查询是查看USER。多个LOGIN可以映射到单个USER,这使得事情更容易管理,例如管理员全部映射到数据库所有者用户'dbo'。

修改 只是为了澄清,只是因为你将列命名为user_name p.name AS [user_name]并不意味着它。您通过sys.sql_logins进行链接,因此您要检索的“主体”是登录对象,name属性显然是登录名,而不是user