怎样将表的所有者由普通用户改为DBO?
在创建表时指定表的所有者是user,怎样将所有者是改为dbo,请教各位高手!有100多张表!
问题点数:20、回复次数:9Top
1 楼l_xiaofeng(行到水窮處,坐看雲起時!)回复于 2004-12-02 12:45:34 得分 4
sp_changedbowner [ @loginame = ] 'login'
[ , [ @map = ] remap_alias_flag ]Top
2 楼hillgdcn(山人妙计)回复于 2004-12-02 13:02:06 得分 0
sp_changedbowner 只能改变数据库的所有者,而不能改变表的哦!Top
3 楼yesyesyes()回复于 2004-12-02 13:12:25 得分 4
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'
Top
4 楼ljial(数据库还真是越搞越不懂,越搞越有味道)回复于 2004-12-02 13:23:25 得分 4
update sysobjects
set uid=b.uid
from sysobjects a,sysusers b
where a.uid=b.uid and and a.name="要改的表名" and b.name="要改的用户名'Top
5 楼hillgdcn(山人妙计)回复于 2004-12-02 13:28:45 得分 0
由所有者dbo 改普通用户,没问题:sp_changeobjectowner 'tb1','CITYRAY'
由普通用户的所有者,改为DBO所有者,不行:sp_changeobjectowner 'tb1','dbo'(服务器: 消息 15001,级别 16,状态 1,过程 sp_changeobjectowner,行 38
对象 'tb1' 不存在或不是对此操作有效的对象。)Top
6 楼l_xiaofeng(行到水窮處,坐看雲起時!)回复于 2004-12-02 13:43:00 得分 4
只有 sysadmin 伺服器的固定角色成員、db_owner 資料庫的固定角色,或是同時為 db_ddladmin 及 db_securityadmin 資料庫的固定角色成員才可執行 sp_changeobjectowner。Top
7 楼hillgdcn(山人妙计)回复于 2004-12-02 13:49:01 得分 0
update sysobjects
set uid=b.uid
from sysobjects a,sysusers b
where a.uid=b.uid and and a.name="要改的表名" and b.name="要改的用户名'
此法行!但出错!(服务器: 消息 259,级别 16,状态 2,行 1
未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。)
请问如何配置,才能启用对系统目录的特殊更新?Top
8 楼vinsonshen(为了明天)回复于 2004-12-02 14:03:30 得分 4
--假如你的用户帐号是“user1”
USE 你的数据库名
GO
set nocount on
declare @objectname sysname,@username varchar(50),@str varchar(1000)
declare #cursor cursor for select o.name,u.name from sysobjects o join sysusers u on u.uid=o.uid where u.name='user1'
open #cursor
fetch next from #cursor into @objectname,@username
while @@fetch_status=0
begin
set @str=''''+@username+'.'+@objectname+''''
exec sp_changeobjectowner @str, 'dbo'
fetch next from #cursor into @objectname,@username
end
close #cursor
deallocate #cursor
set nocount offTop
9 楼hillgdcn(山人妙计)回复于 2004-12-02 14:21:14 得分 0
谢谢各位大侠!Top




