成批更改sql server数据库所有者的对象

[ 2007-06-10 19:40:34 | 作者: admin ]
字号: | |
因为一些网站是使用虚拟主机.用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
[最后修改由 admin, 于 2007-06-10 19:50:00]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=921

这篇日志没有评论。

此日志不可发表评论。