具体说吧,我想做的事情是这样的,
假设有我原来有一个数据库MYTEST,它是属于用户test的,后来数据库崩溃了,我想恢复这个数据库,采用的是附加数据库的方法,我的操作步骤是这样的,先建立一个test用户,然后在将数据文件*.mdf,附加上去,所属用户选择test,附加完成后,出现了一些问题,即访问数据库中的表必须要
select * from test.表名,如果只写select * from 表名,根本就不行,提示无此表,怎么才能去掉前面的test,如果不能实现这个效果的话,所有的程序几乎都要改,我应该怎么做

解决方案 »

  1.   

    EXEC sp_addrolemember 'db_owner', 'test'
      

  2.   

    执行上面的命令好象不行啊,test用户设置成dob角色是没错,但命令好象不对啊
      

  3.   

    在企业管理器中发现表的所有者都是test,是不是只要将所有者改为dbo.就可以了,怎么改,最好可以一次完,即将所有的用户表所有者改为dbo
      

  4.   

    最简单的办法就是你建一个test帐号,然后影射到你的数据库中,这样就可以不用加用户名称了.因为默认如果不加所有者的话,首先系统会以当前登陆用户作为表的所有者.如果没有,就会以dbo作为表的所有者.
      

  5.   

    在查询分析器里:
    1.
    CREATE PROCEDURE dbo.ChangeObjectOwner 
    @OldOwner as NVARCHAR(128),--参数原所有者 
    @NewOwner as NVARCHAR(128)--参数新所有者 
    AS DECLARE @Name   as NVARCHAR(128) 
    DECLARE @Owner  as NVARCHAR(128) 
    DECLARE @OwnerName as NVARCHAR(128) DECLARE curObject CURSOR FOR 
    select 'Name'   = name, 
     'Owner'   = user_name(uid) 
    from sysobjects 
    where user_name(uid)=@OldOwner 
    order by name OPEN  curObject 
    FETCH NEXT FROM curObject INTO @Name, @Owner 
    WHILE(@@FETCH_STATUS=0) 
    BEGIN      
    if @Owner=@OldOwner 
    begin 
     set @OwnerName = @OldOwner + '.' + rtrim(@Name) 
     exec sp_changeobjectowner @OwnerName, @NewOwner 
    end FETCH NEXT FROM curObject INTO @Name, @Owner 
    END close curObject 
    deallocate curObject 
    GO 这个不用任何改动
    2.
    exec ChangeObjectOwner '原所有者','目标所有者(test)' 我经常用的。
      

  6.   

    楼上的正解,我在恢复中出现下面的提示,说明了表恢复的正常吗注意: 更改对象名的任一部分都可能破坏脚本和存储过程。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_hahacorplist_hahaRegisterTime' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_hahacorplist_hahaStatus' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_hahalist_hahaStatus' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_hahalist_seeTimes' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_newsList_newsUpDate' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_onlinesavelist_processflag' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_orderList_deliverAreaType' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_orderList_orderDeliverStatus' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_orderList_orderPayStatus' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_orderList_orderType_1' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_orderList_timeflag' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_orderRecieverList_notifyStatus' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_orderRecieverList_orderPubFlag' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_orderRecieverList_recieverCountry' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_productorderlist_orderTime' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_submemberlist_regTime' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_submemberlist_subStatus' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_tmpagent_referenceDate' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_tmpagent_webID' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_tmpcustomer_loginDate' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_tmpcustomer_webID' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_tmpOrder_submitTime' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_weblist_webOrderCount' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_weblist_webReduce' 不存在或不是对此操作有效的对象。
    服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
    对象 'rose007.DF_weblist_webStatus' 不存在或不是对此操作有效的对象。
    注意: 更改对象名的任一部分都可能破坏脚本和存储过程。