架构dbo的所有表
select t.[name] as tablename, s.[name] as [schema] from sys.tables as t,sys.schemas as s where t.schema_id = s.schema_id
and s.[name] = 'dbo'
架构dbo的所有视图
select v.[name] as viewname, s.[name] as [schema] from sys.views as v,sys.schemas as s where v.schema_id = s.schema_id
and s.[name] = 'dbo'

 

 

查询sqlserver所有表并改变其架构

查询所有的数据库

select [name] from [sysdatabases] order by [name] 

查询一个数据库中的所有表

select [id], [name] from [sysobjects] where [type] = 'u'

都知道[type] = 'u' 是用户表,[type] = 's'是系统表吧。

根据上个语句的查询结果然后再

查询一个表中的所有字段(我尝试不用[ID],而用[name]去查,结果报错了)

select [name] from [syscolumns] where [id] = 1931153925

以上是查询所有表:

以下是改变所有表架构:

 

在数据库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]

 

 

4、删除架构A。

如:ALTER SCHEMA dbo TRANSFER danxiao1.ds_city1