数据库对象维护
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
早期版本可以查询这个视图:
select d.class,
d.class_desc, --引用类别描述
d.object_id, --引用对象id
d.column_id, --引用对象列id
d.referenced_major_id, --被引用的对象id和列id
d.referenced_minor_id,
d.is_selected,
d.is_updated,
d.is_select_all
from sys.sql_dependencies d