对所有表进行类似处理

发表于:2007-07-02来源:作者:点击数: 标签:
eg1: 大家知道,如果将一个表所有者改为dbo,只需 sp_changeobjectowner @#表名@#,@#dbo@#即可 但要将所有的表的所有者都改为dbo,可以用循环处理,此处略 其实用 SQL 的系统存储过程sp_ MSF orEachTable可以轻松搞定 只需exec sp_MSForEachTable @#sp_change

eg1:

大家知道,如果将一个表所有者改为dbo,只需

sp_changeobjectowner @#表名@#,@#dbo@#即可

但要将所有的表的所有者都改为dbo,可以用循环处理,此处略

其实用SQL的系统存储过程sp_MSForEachTable可以轻松搞定

只需exec sp_MSForEachTable @#sp_changeobjectowner @#@#?@#@#, @#@#dbo@#@#@#

当然,可能运行时会有错(比如有些表的所有者原先就是dbo),不用理它,运行一遍就行了。

 

eg2:

所有表都加上一个自增长的字段

大家知道对一个表加的话只需: alter table 表名 add iid int identity(1,1)

若需对所有的表都加的话只需: sp_MSForEachTable @#alter table ? add iid int identity(1,1)@#

同理,删除所有表中的iid字段只需 sp_MSForEachTable @#alter table ? drop column iid@#


当然,可能运行时会有错(比如加字段时该表中已有该字段,删除字段时没有该字段),不用理它,运行一遍就行了。

 

eg3:

对所有表中的num字段进行四舍五入处理

sp_MSForEachTable @#update ? set num = round(num,2)@#

当然,可能运行时会有错(比如有些表中没有num字段),不用理它,运行一遍就行了。

原文转自:http://www.ltesting.net