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


    在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

    set @i = 20
    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' 

  • 相关阅读:
    POJ 2209
    POJ 2196
    POJ 2215
    POJ 2192
    POJ 2195
    POJ 2181
    POJ 2182
    POJ 2159
    POJ 2153
    字符设备驱动 —— 字符设备驱动框架
  • 原文地址:https://www.cnblogs.com/dsliang/p/1778632.html
Copyright © 2020-2023  润新知