sp_MSForEachTable 'EXEC sp_changeobjectowner ''?'',''stp'''

解决方案 »

  1.   

    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 添加)。返回代码值
    0(成功)或 1(失败)示例
    下面的示例将 authors 表的所有者改为 Corporate\GeorgeW。EXEC sp_changeobjectowner 'authors', 'Corporate\GeorgeW'sp_changedbowner
    更改当前数据库的所有者。语法
    sp_changedbowner [ @loginame = ] 'login'
        [ , [ @map = ] remap_alias_flag ]参数
    [@loginame =] 'login'当前数据库新所有者的登录 ID。login 的数据类型为 sysname,没有默认值。login 必须是已存在的 Microsoft? SQL Server? 登录或 Microsoft Windows NT? 用户。如果 login 通过当前数据库内的现有别名或用户安全帐户已拥有访问该数据库的权限,则不能成为该数据库的所有者。为了避免这种情况,应先除去当前数据库中的别名或用户。[@map =] remap_alias_flag值为 true 或 false,表示旧数据库所有者 (dbo) 的现有别名是映射到当前数据库的新所有者还是要除去。remap_alias_flag 的数据类型为 varchar(5),默认值为 NULL,表示旧 dbo 的任何现有别名均映射到当前数据库的新所有者。false 表示除去旧数据库所有者的现有别名。返回代码值
    0(成功)或 1(失败)示例
    下面的示例使用户 Albert 成为当前数据库的所有者,并将旧数据库所有者的现有别名映射到 Albert。EXEC sp_changedbowner 'Albert'