惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
量子位
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
B
Blog
U
Unit 42
C
Check Point Blog
I
InfoQ
aimingoo的专栏
aimingoo的专栏
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
云风的 BLOG
云风的 BLOG
宝玉的分享
宝玉的分享
爱范儿
爱范儿

博客园 - lwjacky

SQL提高查询效益之in、not in、between、like等条件讲述 sqlserver查询数据的所有表名和行数 Extjs4---Cannot read property 'addCls' of null ExtJs4.1实现数据缓存 Sql 脚本文件太大 系统操作日志设计 一种简单的直观的高效的权限设计 ExtJs 常用方法 属性 C#农历类 通过C#使用googleAPI HTML特殊转义字符列表 - lwjacky - 博客园 extjs3.0 修正 ie 与 firefox字体显示差异的补丁 C#实现QQ接口软件--QQ的HTTP接口协议探究 二次开发WinWebMail邮件系统接口 C#实现汉字转换为拼音缩写的代码 C#实现将汉字转化为拼音的代码 extjs IE8下datefield的width问题 ExtJS中如何给Label添加click事件 自己的工具箱(Toolkit)
SQL SERVER 如何批量修改表和存储过程的架构
lwjacky · 2011-01-05 · via 博客园 - lwjacky

SQL 2005 如何批量修改表和存储过程的架构
***首先需要在要修改的库的安全选择中对其中的架构项添加一个新的架构所有者
1。先说说如何在SQL 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 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

方法二:使用系统存储过程sp_MSforeachtable 
EXEC   sp_MSforeachtable   @command1= "EXEC   SP_ChangeObjectOwner   '? ', '新架构名 ' "

注:需要先删除该用户所拥有的架构或更改此架构的所有者。否则会提示“数据库主体在该数据库中拥有架构,无法删除”;
每一个数据库用户对应于一个系统登陆帐号,并且每一个架构只能赋予一个用户,所以直接删除用户的架构是不可以的;
可以在用户映射里面将db_owner架构付给dbo(或者执行ALTER   AUTHORIZATION   ON   SCHEMA::db_owner   TO   dbo);
然后就可以删除之前的用户了。