修改当前数据库对象的所有者
只有SYSADMIN,DB_OWNER或(DB_DDLADMIN又是db_securyadmin)可以执行
SP_CHANGEOBJECTOWNER 

解决方案 »

  1.   

    楼上,我知道你的意思,问题是restore数据库后,只存在login,user已经不存在,但是数据库的某个对象的Owner还是以前的user,我以sa登录也不行
      

  2.   

    是啊,一般情况下,我都要sp_dropuser username,然后建立,但sp_dropuser的前提是该数据库中不存在其owner仍为username的对象,这时用sp_changeobjectowner也不大灵光!
      

  3.   

    sp_changeobjectowner
    更改当前数据库中 对象的 所有者。语法
    sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'参数
    [@objname =] 'object'
    当前数据库中现有的表、视图或存储过程的名称。object 的数据类型为 nvarchar(517),没有默认值。object 可用现有对象所有者限定,格式为 existing_owner.object。[@newowner =] 'owner'
    即将成为对象的新所有者的安全帐户的名称。owner 的数据类型为 sysname,没有默认值。owner 必须是当前数据库中有效的 Microsoft® SQL Server™ 用户或角色或 Microsoft Windows NT® 用户或组。指定 Windows NT 用户或组时,请指定 Windows NT 用户或组在数据库中已知的名称(用 sp_grantdbaccess 添加)。示例
    下面的示例将 authors 表的所有者改为 Corporate\GeorgeW。
    EXEC sp_changeobjectowner 'authors', 'Corporate\GeorgeW'