当前位置: 首页 > 图文教程 > 数据库 > MYSQL > 批量更改sql server数据库所有者的对象

MYSQL
预防性维护MySQL数据库服务器详解
MySQL服务器内部安全数据目录访问
如何使用MySQL系统的发布与安装
关于MySQL数据库的存储引擎详细介绍
通过数据库引擎来加速MySQL数据库
关于MySQL数据库的用户认证系统分析
在MySQL中获得更好的全文搜索结果
教你如何使用触发器管理MySQL数据库
保护MySQL数据库中重要的数据注意事项
用新的PHP插件实现MySQL为基础的事务
MySQL 4.1数据库中数据转换注意事项
优化MySQL数据库查询的三种方法简介
MySQL数据库批量导入脚本
MySQL中如何灵活运用tips功能
向你介绍MySQL数据库备份的简单知识
通过PHP连接My SQL的两种方法简介
MySQL数据库账户授权的相关管理解析
用Perl DBI连接MySQL数据库
MySQL数据库安全配置
快速修复mysql数据库

MYSQL 中的 批量更改sql server数据库所有者的对象


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 81 ::
收藏到网摘: n/a

  因为一些网站是使用虚拟主机。用sql-server导数据上去的话,数据库的用户默认是你登录的用户,不是dbo,有时就和本地产生不一致。


--功能说明:成批更改数据库所有者的对象


--作者:不详


--用法:exec ChangeObjectOwner 'nmkspro','dbo'


--即可将所有nmkspro所有者的对象改为dbo所有


--运行成功后将提示:"注意: 更改对象名的任一部分都可能破坏脚本和存储过程。"


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


批量修改:
EXEC sp_MSforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' '
单个修改:
exec sp_changeobjectowner '要改的表名','dbo'

 

方法一:直接点击该表-》设计-》属性-》更改上面的所有者。该方法针对于表少的情况下。

方法二:利用脚本直接执行,用系统帐号或者超户登陆到该数据库,然后执行下面语句:
sp_configure 'allow updates','1'
go
reconfigure with override
go
update sysobjects set uid=1 where uid<>1 --根据条件可以任意修改,在多用户之间切换。
go
sp_configure 'allow updates','0'
go
reconfigure with override

 

  请作者联系本站,及时附注您的姓名。联系邮箱:edu#ruanchen.com(把#改为@)。