修改sql2005数据库拥有者

来源:这里教程网 时间:2026-03-02 10:34:51 作者:

SQL Server 2000

 

exec sp_changeobjectowner '[bbsdb].[dv_style]',[dbo]

 

更改当前数据库中对象的所有者备份、恢复数据库时,往往会出现所有者是原来的用户,这样当你在新的系统中使用时,会出现表名无效的错误提示,而加入原来的用户名,又会出现用户已经存在的错误,

所以最好的方法就是修改成dbo:

 

怎么样把SQL Server 2000的用户表的所有者,改成dbo,而不是用户名?

 

(修改存储过程的方法,在查询器中执行:

EXEC sp_changeobjectowner 'usera.hishop_creatorder', 'dbo'),就把 usera的存储过程改为dbo所有了。

 

可以使用 sp_changedbowner 更改数据库的所有者。

 

 

方法一:右键点击该表 -》设计表,在上面的一排小图标中,点最后一个“条件约束”,点“表”页,在里面更改所有者。(若没有条件约束的小图标,可以点右键,能看到一个“check约束”的选项)

 

方法二:利用脚本直接执行,用系统帐号或者超户登陆到该数据库,然后执行下面语句:

 

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

 

第二种方法只能使用一次,第二次使用会出错。

 

如果是要用户表/存储过程/视图/触发器/自定义函数一齐改,则用游标(不要理会错误提示)
declare tb cursor local for
select 'sp_changeobjectowner ''['+replace(user_name(uid),']',']]')+'].['
+replace(name,']',']]')+']'',''dbo'''
from sysobjects
where xtype in('U','V','P','TR','FN','IF','TF') and status>=0
open tb
declare @s nvarchar(4000)
fetch tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch tb into @s
end
close tb
deallocate tb
go

 

SQL Server 2005

 

1。在SQL Server 2005中批量修改存储过程的架构,执行以下SQL,将执行结果拷贝出来,批量执行既可。

 

Select 'Alter SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name

FROM sys.Procedures p INNER JOIN sys.Schemas s on p.schema_id = s.schema_id

Where s.Name = '旧的架构名称'

 

2。在SQL Server 2005中批量修改表的架构,执行以下SQL,将执行结果拷贝出来,批量执行既可。

 

declare @name sysname

declare csr1 cursor

for

select TABLE_NAME from INFORMATION_SCHEMA.TABLES

open csr1

 

FETCH NEXT FROM csr1 INTO @name

while (@@FETCH_STATUS=0)

BEGIN

SET @name='旧的架构名称.' + @name

 

print 'Alter SCHEMA dbo TRANSFER ' + @name

fetch next from csr1 into @name

END

CLOSE csr1

DEALLOCATE csr1

 

------------执行结果如:----------

Alter SCHEMA dbo TRANSFER cwb4129.tbl_sellbuy2

Alter SCHEMA dbo TRANSFER cwb4129.tbl_outsourcing

Alter SCHEMA dbo TRANSFER cwb4129.tbl_sellbuy

Alter SCHEMA dbo TRANSFER cwb4129.tbl_directory

Alter SCHEMA dbo TRANSFER cwb4129.tbl_company2

Alter SCHEMA dbo TRANSFER cwb4129.tbl_count

Alter SCHEMA dbo TRANSFER cwb4129.tbl_company

Alter SCHEMA dbo TRANSFER cwb4129.tbl_code

Alter SCHEMA dbo TRANSFER cwb4129.tbl_ad

Alter SCHEMA dbo TRANSFER cwb4129.smt_xxnewssort_vip

Alter SCHEMA dbo TRANSFER cwb4129.SMT_xxnewssort

... ... ...

 

然后将这个结果在执行一遍即可。

<!-- 正文结束 -->

相关推荐