This is a rad sproc to find dependencies from Brett. Sometimes I come across a sproc that I *think* I can delete but you never can be too sure. This makes that process A LOT easier. I am reposting it here for my own benefit with some slight formatting differences to make it easier for me to read:
/* testing...
exec usp_depends2 ‘tblCustomers’
*/
CREATE procedure usp_depends2
@objname nvarchar(776) –the object we want to check
as
declare @objid int –the id of the object we want
,@found_some bit –flag for dependencies found
,@dbname sysname
–Make sure the @objname is local to the current database.
DECLARE @sp_depends_xref table (
reftype char(2)
, dep_name nvarchar(256)
, type char(16)
, updated char(7)
, selected char(8)
, [column] nvarchar(128)
)
select @dbname = parsename(@objname,3)
if @dbname is not null and @dbname <> db_name()
begin
raiserror(15250,-1,-1)
return (1)
end
–See if @objname exists.
select @objid = object_id(@objname)
if @objid is null
begin
select @dbname = db_name()
raiserror(15009,-1,-1,@objname,@dbname)
return (1)
end
–Initialize @found_some to indicate that we haven’t seen any dependencies.
select @found_some = 0
set nocount on
–Print out the particulars about the local dependencies.
if exists (select * from sysdepends where id = @objid)
begin
raiserror(15459,-1,-1)
INSERT INTO @sp_depends_xref (
refType
,dep_name
,type
,updated
,selected
,[column]
)
SELECT
‘TO’
,’name’ = (s6.name+ ‘.’ + o1.name)
,type = substring(v2.name, 5, 16)
,updated = substring(u4.name, 1, 7)
,selected = substring(w5.name, 1, ![]()
,’column’ = col_name(d3.depid, d3.depnumber)
FROM
sysobjects o1
,master.dbo.spt_values v2
,sysdepends d3
,master.dbo.spt_values u4
,master.dbo.spt_values w5
,sysusers s6
WHERE
o1.id = d3.depid
and o1.xtype = substring(v2.name,1,2) collate database_default and v2.type = ‘O9T’
and u4.type = ‘B’ and u4.number = d3.resultobj
and w5.type = ‘B’ and w5.number = d3.readobj|d3.selall
and d3.id = @objid
and o1.uid = s6.uid
and deptype < 2
select @found_some = 1
end
–Now check for things that depend on the object.
if exists (select * from sysdepends where depid = @objid)
begin
raiserror(15460,-1,-1)
INSERT INTO @sp_depends_xref (
RefType
,dep_name
,type
)
SELECT DISTINCT
‘BY’
,’name’ = (s.name + ‘.’ + o.name)
,type = substring(v.name, 5, 16)
FROM
sysobjects o
,master.dbo.spt_values v
,sysdepends d
,sysusers s
WHERE
o.id = d.id
and o.xtype = substring(v.name,1,2) collate database_default and v.type = ‘O9T’
and d.depid = @objid
and o.uid = s.uid
and deptype < 2
select @found_some = 1
end
–Did we find anything in sysdepends?
if @found_some = 0
raiserror(15461,-1,-1)
SELECT
reftype
,dep_name
,type
,updated
,selected
,[column]
FROM
@sp_depends_xref
set nocount off
return (0)











One Response
+
#