-search all databases
CREATE OR ALTER PROC tools.findInName
(@searchstring VARCHAR(200))
AS
BEGIN
SET NOCOUNT ON
DECLARE @results TABLE (
[search_term] VARCHAR(255),
[database_name] VARCHAR(255),
[schema_name] VARCHAR(255),
[object_Name] VARCHAR(255),
[type_desc] VARCHAR(255) )
DECLARE @dbname sysname;
DECLARE @actualsearchstring VARCHAR(200);
SET @actualsearchstring = REPLACE(@searchstring,'_','/_')
DECLARE @dsql nvarchar(max) = '
SELECT ''' +@searchstring + ''' AS [search_term]
,DB_NAME() AS [database_name]
,TABLE_SCHEMA
,TABLE_NAME
,TABLE_TYPE
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE ''%'+@actualsearchstring+'%'' ESCAPE ''/''
UNION ALL
SELECT ''' +@searchstring + ''' AS [search_term]
,DB_NAME() AS [database_name]
,ROUTINE_SCHEMA
,ROUTINE_NAME
,ROUTINE_TYPE
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME LIKE ''%'+@actualsearchstring+'%'' ESCAPE ''/''
';
DECLARE @execCommand nvarchar(max);
DECLARE dbs CURSOR STATIC LOCAL FORWARD_ONLY READ_ONLY
FOR
SELECT name FROM sys.databases (NOLOCK)
OPEN dbs;
FETCH NEXT FROM dbs INTO @dbname;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @execCommand = 'EXEC ' + QUOTENAME(@dbname) + '.sys.sp_executesql @dsql';
INSERT @results
EXEC sys.sp_executesql @execCommand, N'@dsql nvarchar(max)', @dsql
FETCH NEXT FROM dbs INTO @dbname;
END
CLOSE dbs;
DEALLOCATE dbs;
SELECT * FROM @results
END
GO
EXEC tools.findInName '_'
Tuesday, 31 July 2018
findInName - Stored Procedure to search all object names
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment