这个select user返回的到底是什么啊。。我用一public角色的账号test登陆,访问一下数据库a,然后执行,返回的是当前的登陆名test。。这时数据为换到master,再执行,返回的是guest 。我将这个账号在a数据库里的数据库角色设置成为db_owner。再执行select user; 返回的仍然是test。。我以为会是dbo。如果用 sa登陆,不管在哪里 执行返回的都是dbo。。这东西返回的到底是什么呃。。

解决方案 »

  1.   

    当前数据库的前缀 ,即Scheme如[数据库名].[dbo].[表名]
    Select User 即返回 dbo
      

  2.   


    那为什么我到master里面执行一下会变成guest啊?我的用户名并不是guest啊。。
      

  3.   

    USER
    当未指定默认值时,允许将系统为当前用户的数据库用户名提供的值插入表内。 语法
    USER返回类型
    char注释
    USER 提供与 USER_NAME 系统函数相同的功能。在 CREATE TABLE 或 ALTER TABLE 语句中将 USER 和 DEFAULT 约束一起使用,或者将 USER 作为任何标准函数使用。示例
    A. 使用 USER 返回当前用户的数据库用户名
    本示例声明一个 char 类型的变量,将 USER 的当前值赋给它,然后打印该变量以及文本说明。DECLARE @usr char(30)
    SET @usr = user
    SELECT 'The current user's database username is: '+ @usr
    GO下面是结果集:----------------------------------------------------------------------- 
    The current user's database username is: dbo                            (1 row(s) affected)
      

  4.   

    我新建了一个账号啊。。 然后use master;select user;返回的是guest
      

  5.   


    因为master数据库中没有该用户的映射
      

  6.   


    那为什么我将新建的用户在设置为a数据库的db_owner,然后执行select user;返回的不是dbo仍然是当前的用户名呢? 明明已经是db_owner了嘛。