Technical Article

sp_utilityFindObjectModifying

,

@_ObjectName = name of the object
@_ObjectType = type of the object
@_TableRelated = table
@_Detailed = if 0 it will show you only the tables. if 1 it will show you also the columns

USE [IaafHDBDev]
GO
/****** Object:  StoredProcedure [dbo].[sp_utilityFindObjectModifying]    Script Date: 05/21/2008 12:26:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Christian
-- Create date: 21/05/2008
-- Description:	Find object that modify tables
-- =============================================
ALTER PROCEDURE [dbo].[sp_utilityFindObjectModifying] 
	-- Add the parameters for the stored procedure here
	@_ObjectName varchar(100) = null,
	@_ObjectType varchar(2) = null, 
	@_TableRelated varchar(100) = null,
	@_Detailed int = 0
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	
    -- Insert statements for procedure here
IF @_Detailed = 0 
	BEGIN
		select sys.objects.name as [OBJECT],sys.objects.type as [TYPE]
		, sys.tables.name AS TABLE_MODIFIED
		from sys.tables
		left join sys.syscomments
		on sys.syscomments.text like'%'+sys.tables.name+'.%'
		inner join sys.objects on
		sys.syscomments.id = sys.objects.object_id
		WHERE sys.tables.name LIKE isnull(@_TableRelated,'%')
		AND sys.objects.type LIKE isnull(@_ObjectType,'%')
		AND sys.objects.name LIKE isnull(@_ObjectName,'%')
		group by sys.objects.name,sys.objects.type, sys.tables.name
		order by sys.objects.name
	END
ELSE IF @_Detailed = 1
	BEGIN
		select sys.objects.name as [OBJECT],sys.objects.type as [TYPE],
		case
			when sys.syscomments.text like '%INSERT%.'+sys.columns.name+'%' then 'I'
			when sys.syscomments.text like '%DELETE%.'+sys.columns.name+'%' then 'D'
			when sys.syscomments.text like '%UPDATE%.'+sys.columns.name+'%' then 'U'
			when sys.syscomments.text like '%SELECT%.'+sys.columns.name+'%' then 'S'
			when sys.syscomments.text like '%GROUP%.'+sys.columns.name+'%' then 'GR'	
		end AS [ACTION]
		, sys.tables.name AS TABLE_MODIFIED, sys.columns.name as [COLUMNS]
		from sys.tables
		left join sys.columns
		on sys.columns.object_id = sys.tables.object_id
		left join sys.syscomments
		on sys.syscomments.text like'%'+sys.tables.name+'.%'
		and sys.syscomments.text like '%.'+sys.columns.name+'%'
		inner join sys.objects on
		sys.syscomments.id = sys.objects.object_id
		WHERE sys.tables.name LIKE isnull(@_TableRelated,'%')
		AND sys.objects.type LIKE isnull(@_ObjectType,'%')
		AND sys.objects.name LIKE isnull(@_ObjectName,'%')
		group by sys.syscomments.text,sys.objects.name,sys.objects.type, sys.tables.name,sys.columns.name
		order by sys.objects.name
	END 
END

Rate

3 (2)

You rated this post out of 5. Change rating

Share

Share

Rate

3 (2)

You rated this post out of 5. Change rating