SQL:没有login名的名字

我注意到,当我打开SQL服务器企业pipe理器,并导航到特定的数据库下的用户列表,我发现用户与“名称”,但有些没有“login名”值。 这是什么意思? 这是否意味着

1)用户根本无法login服务器?

2)它的系统ID(或应用程序ID,所以没有用户将能够使用它login,只有应用程序可以使用它来访问数据库?)

3)有一个单一的login,所以一旦用户login到服务器,他们可以访问数据库而无需再次authentication?

我的第二个问题涉及到企业pipe理器中“安全”组下的用户。当说“a”在这里并且“a”也出现在db用户中时,这意味着“a”可以访问和更改数据db对不对? 但是,如果“b”在安全组中但不在db用户中,则意味着它不能login到数据库,只能对服务器进行更改?

我的第三个问题:如果默认数据库是master,那意味着用户可以对所有数据库进行更改?

非常感谢任何回答我的问题的人!

数据库login和数据库用户是不同的 。 基本上login被授予服务器的权限,用户被授予数据库的权限。 login被映射到数据库。

我猜你有没有映射到login数据库中的用户的原因是,你已经从另一个SQL Server还原数据库,而不是复制login。 基本上有两种方法来修复孤立的用户 。 您可以使用sp_change_users_login ,或者您可以在服务器之间复制login名,以便sid匹配。

如果你想使用单一的login方法,那么你可以通过创build一个Windowslogin,而不是使用SQLlogin与Active Directory集成来做到这一点。

是的,您可以将login映射到多个数据库。 您可以将访问每个数据库的不同对象的权限授予用户,也可以将用户添加到数据库angular色。 也有服务器范围的angular色,将提供一个数据库的login访问权限,这是sysadminangular色的一个很好的例子。 为login设置默认数据库不会赋予该login在数据库中的任何权限。 你会发现默认情况下login是在公共组中,这使得他们对master和tempdb的访问权限非常低。

您需要明确授予login数据库的访问权限。 你用sp_adduser做到这一点。 如果你在企业pipe理器中创build用户,那么是的,login名将与用户名相匹配,但是它并不是必须的,这个sproc允许你设置一个不同的用户名。
此代码示例演示了不同之处:

 SELECT USER --database user SELECT SYSTEM_USER --login 

我不了解DB2,但是Oracle没有login和用户的概念。