百科题库网 分享最新题库资源与答题解析


SQLServer的登录账户信息保存在哪个数据库中?()


A、model
B、msdb
C、master
D、tempdb

所属分类: 信息技术/IT (免费栏目) 浏览量: 263 次


官方参考资料:
返回用户名和用户 ID
的函数
有几个系统函数可返回用户名和用户 ID。要理解这些函数的参数和输出结果,首先必须理解 Microsoft® SQL Server™ 2000 中使用的名称和 ID 的类型。
登录到 SQL Server 的每个用户在 SQL Server 中都有两个级别的名称,每个名称都与一个唯一的 ID 相关联:
登录名。
被授权登录到 SQL Server 的每个用户都有一个登录名,使他们得以访问 SQL Server 实例。有两种类型的登录名:Microsoft Windows® 帐户名。
sysadmin 或 securityadmin 固定服务器角色成员可以使用
sp_grantlogin 对 Windows 组或 Windows 帐户的个别用户授权,使其可登录到 SQL Server
实例。于是,Windows 帐户所标识的用户或 Windows 组中的任何组员都可以使用 Windows 身份验证连接 SQL Server
实例。master.dbo.syslogins.loginname 中存储了所有 Windows 帐户名或组名。用于 Windows 帐户或组的
Windows security_identifier 存储在 syslogins.sid 中。SQL Server 登录名。
使用 SQL Server 身份验证登录时将用到这些登录名。SQL Server 登录名由 sysadmin 或
securityadmin 固定服务器角色的成员使用 sp_addlogin 进行定义。所有 SQL Server 登录名都存储在
master.dbo.syslogins.loginname 中。SQL Server 生成用作 security_identifier
的 GUID 并将其存储在 syslogins.sid 中。SQL Server 2000 将 master.dbo.syslogins.sid 作为登录名的
security_identifier。
数据库用户名。
所有 Windows 帐户或 SQL Server
登录都必须与已授权用户访问的每个数据库中的用户名相关联,或者该数据库必须已启用客户访问。数据库用户名由 db_owner 或
db_accessadmin 固定数据库角色的成员来定义,并存储在每个数据库所建的 sysusers
表中。每个数据库用户名都与存储在 sysusers.uid 中的一个数据库用户 ID 相关联。每个用户的 security_identifier 都存储在 sysusers.sid
中;因此,可将用户映射回他们相应的登录。如果使用同一数据库用户名作为 SQL Server 登录名或 Windows
帐户名,则可减少混淆;但是,不要求一定这样做。
有关登录和数据库用户帐户的更多信息,请参见登录、用户、角色和组。
获得登录帐户或 ID
连接到 SQL Server 2000 后,使用:
SUSER_SNAME,用来获得与 security_identifier 关联的 SQL Server 登录名或 Windows 帐户。
SUSER_SID,用来获得与 SQL Server 登录名或 Windows NT 帐户关联的 security_identifier。
SUSER_SID()(不带 login_account 参数的指定 SUSER_SID),用于获得当前连接的 security_identifier,不管是否使用 SQL Server 身份验证或 Windows 身份验证。
SQL-92 函数 SYSTEM_USER,以获得用于 Windows 身份验证连接的 Windows 帐户,或用于 SQL Server
身份验证连接的 SQL Server 登录名。在 Transact-SQL 中,SYSTEM_USER 实现为 SUSER_SNAME()(不指定
security_identifier 的 SUSER_SNAME)的同义词。
在 SQL Server 2000 中,返回登录名或帐户的函数以下面的方式操作:
SUSER_SNAME(security_identifier)
SUSER_SNAME 具有以下选项之一:用于 Windows 帐户或组的 security_identifier,这种情况下,该函数返回 Windows
帐户名或组名。为 SQL Server 登录生成的伪 security_identifier,这种情况下,函数返回 SQL Server 登录名。
如果没有为使用 Windows 身份验证进行的连接指定 security_identifier,则 SUSER_SNAME
将返回与该连接关联的 Windows 帐户名。如果是使用 SQL Server 身份验证进行的连接,SUSER_SNAME 将返回与该连接关联的 SQL
Server 登录。
SYSTEM_USER
此 SQL-92 函数在 Transact-SQL 中实现为 SUSER_SNAME()(不指定
security_identifier 参数的 SUSER_SNAME)的同义词。获得数据库用户名或用户 ID
连接到 SQL Server 2000 后,使用:
USER_ID,用来获得与数据库用户名关联的数据库用户 ID。
USER_ID(),用来获得与当前连接关联的数据库用户 ID。
USER_NAME,用来获得与数据库用户 ID 关联的数据库用户名。
SQL-92 CURRENT_USER 或 SESSION_USER 函数,都是用来获得与当前连接关联的数据库用户名。在 Transact-SQL
中,这些函数实现为 USER_NAME()(不指定 database_user_ID 参数的
USER_NAME)的同义词。Transact-SQL 函数 USER 也实现为 USER_NAME() 的同义词。
SQL-92 允许在这样的 SQL 模块中对 SQL 语句进行编码:该模块的授权标识符与已连接到 SQL
数据库的用户的授权标识符可以相互独立。SQL-92 指定 SESSION_USER 总是返回进行连接的用户的授权标识符。对于从 SQL
模块执行的任何语句,CURRENT_USER 返回 SQL 模块的授权标识符;如果 SQL 语句不是从 SQL
模块执行的,则返回进行连接的用户的授权标识符。如果 SQL 模块没有单独的授权标识符,则 SQL-92 指定 CURRENT_USER 返回与
SESSION_USER 相同的值。Microsoft SQL Server 没有单独用于 SQL 模块的授权标识符,因此,CURRENT_USER 和
SESSION_USER 总是返回相同的值。USER 函数是由 SQL-92 为向后兼容性而定义的函数,用于为早期版本的标准所编写的应用程序。USER
被指定为与 CURRENT_USER 返回相同的值。
在 SQL Server 中,返回登录名或帐户的函数以下面的方式操作:
USER_ID('database_user_name')
USER_ID 返回与指定数据库用户名关联的数据库用户 ID。如果未指定 database_user_name,则
USER_ID 返回与当前连接关联的数据库用户 ID。
USER_NAME(database_user_ID)
USER_NAME 返回与指定的数据库用户 ID 关联的数据库用户名。如果未指定 database_user_ID,则
USER_NAME 返回与当前连接关联的数据库用户名。
CURRENT_USER、SESSION_USER、USER
这些函数都是 USER_NAME()(不指定 database_user_ID 参数的 USER NAME)的同义词。

以上为百科题库网整理的关于"SQLServer的登录账户信息保存在哪个数据库中?()"试题答案及解析,如想学习更多信息技术/IT类竞赛题,欢迎访问www.baiketk.com查看搜索更多相关信息。

转载请注明:百科题库网https://www.baiketk.com/q_t5ff7d3831df43.html