您的位置:首页 > 数据库 > SQL

在SQL Server 2005数据库中更改数据架构

2009-05-19 10:52 806 查看
在SQL Server 2005数据库中更改数据架构

当只更改的表或存储过程少时,可以采用网上的的方法:

在数据库testDB中存在架构A及用户A,现将testDB数据库所属的用户由A改为B,同时删除用户A;架构也由A改为B,删除架构A,操作如下:

1、创建用户B,再创建架构B;

2、将架构A的权限赋给用户B,取消用户A拥有架构A的权限,删除用户A;

3、将数据库的所有属于架构A的对象改为架构B,代码如下:

ALTER SCHEMA [新架构名] TRANSFER 旧架构名.[数据库中的对象表或视图或存储过程]

ALTER SCHEMA [B] TRANSFER A.[对象1]

ALTER SCHEMA [B] TRANSFER A.[对象2]

ALTER SCHEMA [B] TRANSFER A.[对象n]

而当要更改一个数据库中全部的表或存储过程时,用上面的方法是可以实现,但是速度太慢了,所以写了一个存储过程批量修改:

改存储过程:

USE [testDemo]

--

--ALTER SCHEMA slqwell TRANSFER

create table #t (

ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1

procName varchar(100),

)

insert into #t(procName)

select 'dbo.' +name from sysobjects

where xtype='P' and status>=0

select * from #t

declare @i int

declare @j int

set @j = 1

declare @procName varchar(100)

declare @SchemaTable varchar(200)

while(@j < (@i + 1))

begin

select @procName=procName from #t where ID=@j

set @j = @j + 1

set @SchemaTable = 'ALTER SCHEMA sqlwell TRANSFER ' + @procName

exec (@SchemaTable)

end

drop table #t

其中原来的架构为代表dbo,先的为sqlwell

要修改表的架构时,只要修改上面的xtype='P' 为xtype='U'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐