在SQL2005中有一非公开存储过程sp_msdependencies,可以用来查询表,试图,存储过程,触发器等直接的依赖关系,比使用存储过程sp_depends更强大好用。
sp_msdependencies
这一非公开存储过程,可以用来描述一个对象在Database中的依赖关系。
语法:代码sp_msdependencies [<object name> ] , [<object type>], [<Flags>], [<objlist>]
还有一个int类型的参数@intrans,没有任何意义,这个存储过程所有参数可以留为Null值,
如果想查看里面的代码内容可以使用命令:
代码Exec sp_helptext sp_msdependencies
如果想查看各个参数的使用方法,可以使用命令:
代码Exec sp_msdependencies '?'
下面测试几个例子来看看
创建test环境:
代码use Test
go
If OBJECT_ID('vSalaryPay') Is Not Null
Drop View vSalaryPay
If OBJECT_ID('SalaryPay') Is Not Null
Drop Table SalaryPay
If OBJECT_ID('Employee') Is Not Null
Drop Table Employee
Go
create table Employee(ID int Identity(1,1)Primary Key,
Code nvarchar(50),
LName nvarchar(50),
FName nvarchar(50),
Sex bit Constraint DF__Employee__Sex Default(1)
)
Create Table SalaryPay(ID int Identity(1,1) Primary Key,
EmployeeID int Not Null,
PayMonth datetime,
Amount money,
Constraint FK_SalaryPay_EmployeeID Foreign Key (EmployeeID) References Employee(ID)
)
Go
Create View vSalaryPay
As
Select a.Code,a.LName,a.FName,b.PayMonth,b.Amount
From Employee As a
Inner Join SalaryPay As b On b.EmployeeID=a.ID
Go
--1.查询所有user table依赖关系代码Exec sp_msdependencies Null,3
--2.查询所有view依赖关系代码Exec sp_msdependencies Null,2
--3查询表SalaryPay的依赖对象代码Exec sp_msdependencies 'SalaryPay'
--4.规则、默认值、数据类型是没有依赖关系的代码Exec sp_msdependencies null,6
会收到信息:Rules, defaults, and datatypes do not have dependencies.