功能说明成批更改数据库对象的所有者
作者不详
用法exec ChangeObjectOwner vsdbo
即可将所有vs所有者的对象改为dbo所有
运行成功后将提示注意: 更改对象名的任一部分都可能破坏脚本和存储过程
Create proc ChangeObjectOwner
@OldOwner as NVARCHAR()参数原所有者
@NewOwner as NVARCHAR()参数新所有者
AS
DECLARE @Name as NVARCHAR()
DECLARE @Owner as NVARCHAR()
DECLARE @OwnerName as NVARCHAR()
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=)
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