数据库对象维护

CREATE TABLE T(vid int primary key,v varchar(100))  create index idx_v on T(v)  --改变表名 --注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。 EXEC sp_rename  	@objname = 'dbo.T',      --架构.表名 	@newname = 'TT', 	@objtype = 'object'      --类型为对象  	 --改变表的列名称 EXEC sp_rename 	@objname = 'dbo.TT.v',    --架构.表名.列名 	@newname = 'vv', 	@objtype = 'column'       --类型为列   --改变某个表中索引的名称	 exec sp_rename 	@objname ='dbo.TT.idx_v', --架构.表名.索引名 	@newname = 'idx_vv', 	@objtype = 'Index'        --类型为索引  --用户拥有架构,而架构拥有很多对象 --就是把老架构下面的某个对象,移动到新架构下面 ALTER SCHEMA 新架构名 Transfer 老架构.对象 

对象依赖

--对象依赖关系 CREATE DATABASE WCC go  CREATE DATABASE WCD go  USE WCC GO  CREATE TABLE DBO.C(VID INT NOT NULL,                    VV VARCHAR(10)) GO  USE WCD GO  CREATE PROCEDURE DBO.PROC_USE_C as  select VID,VV from WCC.DBO.C  GO                        SELECT referencing_id,        OBJECT_NAME(referencing_id) as objname,        referencing_class_desc,  --引用实体的类型                is_schema_bound_reference, --被引用实体是否绑定到架构        referenced_class_desc,     --被引用实体的类型        referenced_server_name,    --被引用服务器的名称        referenced_database_name,  --被引用数据库的名称        referenced_schema_name,    --被引用实体的架构                --如果是跨服务器数据库的则为NULL;对于非绑定架构的引用,        --如果被引用实体不存在或无法解析,则为null        --如果被引用实体的架构依赖于调用方架构,会在运行时解析,此时is_caller_dependent=1        referenced_id,        referenced_minor_id , --引用实体为列时被引用列的ID        is_caller_dependent , --被引用实体是否依赖于运行时的解析,                              --如果依赖那么referenced_id为null                                      is_ambiguous          --指出引用为不明确引用         FROM SYS.sql_expression_dependencies   use WCD go  create procedure dbo.proc_use_w as  select * from wcc.dbo.wccc  --注意:这个表还有没创建,在运行时会报错 go  --可以显示对不存在对象的引用 select * from sys.sql_expression_dependencies    --返回被引用的对象 select * from sys.dm_sql_referenced_entities('dbo.TT',   --返回被dbo.TT引用的对象                                     'Object')   --dbo.TT的类型  --返回引用的对象 select * from sys.dm_sql_referencing_entities('dbo.TT',  --引用dbo.TT的对象                                       'object')      /*========================================================== 对象定义:  返回用户定义和基于系统的约束、默认值、                       存储过程、函数、视图、                       角色、架构级DML、DDL触发器的T-SQL定义 ============================================================*/ select OBJECT_DEFINITION(object_id('dbo.proc_use_c'))  --对象id  --普通用户定义的 SELECT object_id,        definition  --T-SQL定义 FROM SYS.sql_modules WHERE object_id = object_id('dbo.proc_use_c')  --系统内部的T-SQL定义 select  object_id,         definition --T-SQL定义 from sys.system_sql_modules