banner
ximalaya

ximalaya

这里是openkava 的blog,关注程序开发的一切技术。 ZZ 表示转载的文章,如涉及版权,请和我联系删除。 在这里你可以看到关于以下技术的文章: 移动开发技术,ANDROID ,IOS,WINDOWS PHONE平台开发,企业ERP开发,动态脚本PYTHON ,OPENGL ES 3D技术,游戏开发技术,HTML5 ,JAVASCRIPT ,MYSQL,AMAZON EC2 ,GOOGLE GAE ,GOOGLE CLOUD SQL 等 。 本站发展历程: 2010年,正式把所有的blog移到这里,租用godaddy的空间,记录生活和工作上的一些心得。 下面是关于我的个人介绍,写在这里权当凑字数啦。 职业:软件开发,开发经验6年,管理经验3年; 工作上使用的技术:C#, SQL SERVER 个人使用的技术:PYTHON,PHP, CSS, JAVA ,ANDROID ,object-c 等等 联系我请发邮件:<a href="http://blog.openkava.com/openkava@gmail.png"><img class="alignnone size-full wp-image-96" title="邮箱" src="http://blog.openkava.com/openkava@gmail.png" alt="" width="174" height="24" /></a>

zz 修改MS SQL2000数据库的所有者

http://www.cnblogs.com/wantingqiang/archive/2008/12/14/1354738.html

有些时候,一个数据库的管理员,需要将几个不同的数据库内的数据合并到一起,如果几个数据库的结构基本相同,只需新建一个数据库,将其它几个数据库内的对象复制并追加到新数据库内并做细微调整即可达到目的,但是,不同的数据库可能存在不同的用户账号,数据库对象 —— 譬如:表,存储过程及视图等 —— 的所有者也可能不同,这样,在倒入数据时,系统会将同名但不同所有者的数据库对象识别为不同的对象,会在目标库中新建对象而非追加,并且会因为目标库中没有相应的用户账号而报用户不存在的错,那么,统一数据库对象的所有者就狠必要了。

还是老习惯,下面给出更改数据库表,存储过程及视图所有者的 SQL 脚本,需要说明的是,这段脚本同样可以用于将数据库对象的所有者由 DBO 用户更改为其它指定的用户,使用的方法为:将 YourUserName 更改为 DBO,在原有 DBO 的位置输入想要指定的用户账号名称,执行即可,当然,这段脚本代码在使用的时候是狠灵活的,并非只针对关于 DBO 与其它指定账号之间的更改,实践一下就自然明白了

1. 修改表的所有者

declare @tn varchar(120)

declare table_cursor cursor for
Select '[' + sysusers.name + '].' + sysobjects.name AS table_name
FROM sysobjects INNER JOIN sysusers ON sysobjects.uid = sysusers.uid
Where sysusers.name = 'YourUserName' AND sysobjects.type = 'U'

open table_cursor
fetch next from table_cursor into @tn

while @@FETCH_STATUS = 0
begin
exec sp_changeobjectowner @tn, 'dbo'

fetch next from table_cursor into @tn
end

close table_cursor
deallocate table_cursor

2. 修改存储过程的所有者

declare @tn varchar(120)

declare procedure_cursor cursor for
Select '[' + sysusers.name + '].' + sysobjects.name AS procedure_name
FROM sysobjects INNER JOIN sysusers ON sysobjects.uid = sysusers.uid
Where sysusers.name = 'YourUserName' AND sysobjects.type = 'P'

open procedure_cursor
fetch next from procedure_cursor into @tn

while @@FETCH_STATUS = 0
begin
exec sp_changeobjectowner @tn, 'dbo'

fetch next from procedure_cursor into @tn
end

close procedure_cursor
deallocate procedure_cursor

3. 修改视图的所有者

declare @tn varchar(120)

declare view_cursor cursor for
Select '[' + sysusers.name + '].' + sysobjects.name AS view_name
FROM sysobjects INNER JOIN sysusers ON sysobjects.uid = sysusers.uid
Where sysusers.name = 'YourUserName' AND sysobjects.type = 'V'

open view_cursor
fetch next from view_cursor into @tn

while @@FETCH_STATUS = 0
begin
exec sp_changeobjectowner @tn, 'dbo'

fetch next from view_cursor into @tn
end

close view_cursor
deallocate view_cursor

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.