我把客户那里的一个数据库附加过来,在访问的时候必须加用户名才可以,比如我用aaa用户登录数据库,在select语句中必须用select * from aaa.表名才可以访问,用select * from 表名不可以,这是什么原因呢?

解决方案 »

  1.   

    因为你不是administrator用户! 
    权限问题
      

  2.   

    不是管理员身份登录的话,即使是自己的数据库也要加上用户名才可以用。mssql就是这样设计的。其实也没什么呀,把它当作表名的一部分吧。开发起来没什么影响。
      

  3.   

    在SQL Server中,每一个表、试图、存储过程都有自己的Owner。
    而每个用户都可以在同一个数据库中创建属于自己的表,即使表名一样。也就是说用户A和B都可以在数据库D里面创建一个名为T的表,而且表的字段都可以不一样。而且SQl Server中通用的访问表的格式是这样的:
    Select * From [ServerName].[DatabaseName].[Owner].[TableName]
    默认的如果不加前面的三个字段中的任何一个的话,就以当前Server的当前Database的当前User来取代相应的内容。对于sa创建的表来说,Owner是dbo,其他的用户创建的表的Owner是用户名!如果要访问其他用户创建的表的话,当然要加上相应的用户名!而且要确保你有权限!
      

  4.   

    我用aaa用户登录,查询aaa用户建立的表也要输入用户名阿?
      

  5.   

    只要aaa不是系统管理员身份就必须加用户名。
      

  6.   

    不需要!
    如果不加Owner,默認是以當前登錄的用戶名作為Owner。
    自己可以動手試一下的,光看理論沒有用。