数据库所有者 (dbo)
dbo 是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。例如,如果用户 Andrew 是固定服务器角色 sysadmin 的成员,并创建表 T1,则表 T1 属于 dbo,并以 dbo.T1 而不是 Andrew.T1 进行限定。相反,如果 Andrew 不是固定服务器角色 sysadmin 的成员,而只是固定数据库角色 db_owner 的成员,并创建表 T1,则 T1 属于 Andrew,并限定为 Andrew.T1。该表属于 Andrew,因为该成员没有将表限定为 dbo.T1。无法删除 dbo 用户,且此用户始终出现在每个数据库中。只有由 sysadmin 固定服务器角色成员(或 dbo 用户)创建的对象才属于 dbo。由任何其他也不是 syadmin 固定服务器角色成员的用户(包括 db_owner 固定数据库角色成员)创建的对象: 属于创建该对象的用户,而不是 dbo。
用创建该对象的用户名限定。

解决方案 »

  1.   

    在你的查询分析器
    加入一句 use YouDataBase,这可能是你没有引用你的数据库
      

  2.   

    用sa登录,建立登录test,然后建立数据库czzh,在czzh数据库中建立用户test,
    运行以下脚本建立act_bal表CREATE TABLE [test].[act_bal] (
    [act_id] [char] (30) COLLATE Chinese_PRC_CI_AS NULL ,
    [bank_code] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [act_qua_code] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [act_name_code] [char] (4) COLLATE Chinese_PRC_CI_AS NULL ,
    [act_no] [int] NULL ,
    [act_bank_no] [char] (30) COLLATE Chinese_PRC_CI_AS NULL ,
    [act_old_bal] [char] (16) COLLATE Chinese_PRC_CI_AS NULL ,
    [act_cur_bal] [char] (16) COLLATE Chinese_PRC_CI_AS NULL ,
    [act_bank_code] [int] NULL ,
    [act_dep] [char] (30) COLLATE Chinese_PRC_CI_AS NULL ,
    [act_date] [datetime] NULL 
    ) ON [PRIMARY]
    GO然后在分析器中用test 用户登录,
    执行 Select * from act_bal,出错,提示无该对象;
    运行 select * from test.act_bal 则正常
    把test用户在czzh中的角色加入db_owner中即可。
    这个时候 select * form act_bal就等于select * form test.act_bal
      

  3.   

    把test用户在czzh中的角色加入db_owner中即可。
      

  4.   

    不管我用什么用户登录,都是这样的。
    如何将一个表格的所有者变成另一个人。
    如将表格tblType的所有者从myname变成dbo???
      

  5.   

    exec sp_changeobjectowner 'tablename','dbo'
      

  6.   

    如何修改所有myname所有和表格的拥用者改成dbo。
    谢谢了,“大力”
      

  7.   

    或将所有表格的拥有者改为dbo
      

  8.   

    try:
    declare  cursor1 cursor for select name from sysobjects where xtype='u'
    declare
    @i varchar(1000)
    open cursor1
    fetch cursor1 into @i
    while @@fetch_status=0
    begin
      exec sp_changeobjectowner @i,'dbo'
      fetch cursor1 into @i
    end
    close cursor1
    deallocate cursor1
      

  9.   

    还是报错,需要在每个表格前加上一个用户名,如:
    exec spchangeobjectowner 'myname.'+@i,'dbo'
    就行了,但我改了不行,该如何改?????
      

  10.   

    set @i='myname.'+@i
    exec sp_changeobjectowner @i,'dbo'