【SQL Server学习笔记】数据库对象维护、对象依赖

数据库对象维护

 

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


 

转载于:https://www.cnblogs.com/momogua/archive/2012/07/31/8304624.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值