sync
This commit is contained in:
143
find scalar usage.sql
Normal file
143
find scalar usage.sql
Normal file
@@ -0,0 +1,143 @@
|
||||
USE master
|
||||
|
||||
--#region fetch list of scalar functions
|
||||
IF OBJECT_ID('tempdb..#scalar')IS NOT NULL BEGIN;
|
||||
DROP TABLE #scalar;
|
||||
END;
|
||||
|
||||
CREATE TABLE #scalar(
|
||||
id INT NOT NULL IDENTITY
|
||||
,schemaName VARCHAR(MAX) NOT NULL
|
||||
,objectName VARCHAR(MAX) NOT NULL
|
||||
,dbSource VARCHAR(MAX) NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO #scalar ([schemaName],
|
||||
[objectName],
|
||||
[dbSource])
|
||||
SELECT s.[name] AS objectName, o.[name] AS objectSchema, 'arizona' AS dbSrc
|
||||
FROM arizona.sys.[objects] o
|
||||
JOIN arizona.sys.[schemas] s ON s.[schema_id] = o.[schema_id]
|
||||
WHERE o.[type_desc] LIKE 'SQL_SCALAR_FUNCTION';
|
||||
|
||||
INSERT INTO #scalar ([schemaName],
|
||||
[objectName],
|
||||
[dbSource])
|
||||
SELECT s.[name] AS objectName, o.[name] AS objectSchema, 'apos_Read' AS dbSrc
|
||||
FROM [ActivePos_read].sys.[objects] o
|
||||
JOIN [ActivePos_read].sys.[schemas] s ON s.[schema_id] = o.[schema_id]
|
||||
WHERE o.[type_desc] LIKE 'SQL_SCALAR_FUNCTION';
|
||||
|
||||
INSERT INTO #scalar ([schemaName],
|
||||
[objectName],
|
||||
[dbSource])
|
||||
SELECT s.[name] AS objectName, o.[name] AS objectSchema, 'apos_write' AS dbSrc
|
||||
FROM [ActivePos_write].sys.[objects] o
|
||||
JOIN [ActivePos_write].sys.[schemas] s ON s.[schema_id] = o.[schema_id]
|
||||
WHERE o.[type_desc] LIKE 'SQL_SCALAR_FUNCTION';
|
||||
|
||||
INSERT INTO #scalar ([schemaName],
|
||||
[objectName],
|
||||
[dbSource])
|
||||
SELECT s.[name] AS objectName, o.[name] AS objectSchema, 'apos_server' AS dbSrc
|
||||
FROM [ActivePos_server].sys.[objects] o
|
||||
JOIN [ActivePos_server].sys.[schemas] s ON s.[schema_id] = o.[schema_id]
|
||||
WHERE o.[type_desc] LIKE 'SQL_SCALAR_FUNCTION';
|
||||
|
||||
|
||||
INSERT INTO #scalar ([schemaName],
|
||||
[objectName],
|
||||
[dbSource])
|
||||
SELECT s.[name] AS objectName, o.[name] AS objectSchema, 'ActiveSystemClient' AS dbSrc
|
||||
FROM [ActiveSystemClient].sys.[objects] o
|
||||
JOIN [ActiveSystemClient].sys.[schemas] s ON s.[schema_id] = o.[schema_id]
|
||||
WHERE o.[type_desc] LIKE 'SQL_SCALAR_FUNCTION';
|
||||
|
||||
INSERT INTO #scalar ([schemaName],
|
||||
[objectName],
|
||||
[dbSource])
|
||||
SELECT s.[name] AS objectName, o.[name] AS objectSchema, 'ActiveSystemServer' AS dbSrc
|
||||
FROM [ActiveSystemServer].sys.[objects] o
|
||||
JOIN [ActiveSystemServer].sys.[schemas] s ON s.[schema_id] = o.[schema_id]
|
||||
WHERE o.[type_desc] LIKE 'SQL_SCALAR_FUNCTION';
|
||||
|
||||
--#endregion fetch list of scalar functions
|
||||
|
||||
/* declare variables */
|
||||
IF OBJECT_ID('tempdb..#res')IS NOT NULL BEGIN;
|
||||
DROP TABLE #res;
|
||||
END;
|
||||
|
||||
CREATE TABLE #res(
|
||||
[db_name] VARCHAR(MAX) NOT NULL
|
||||
,[schema_name] VARCHAR(MAX) NOT NULL
|
||||
,[object_name] VARCHAR(MAX) NOT NULL
|
||||
,[matching_scalar_term] VARCHAR(MAX) NOT NULL
|
||||
);
|
||||
|
||||
DECLARE @q NVARCHAR(MAX)
|
||||
DECLARE @db_name VARCHAR(MAX);
|
||||
DECLARE @fx_name VARCHAR(MAX);
|
||||
DECLARE @tpl_search VARCHAR(MAX)='
|
||||
USE @db@
|
||||
|
||||
INSERT INTO #res([db_name],[schema_name],[object_name],[matching_scalar_term])
|
||||
SELECT DB_NAME() AS [db_name]
|
||||
,s.[name] AS [schema_name]
|
||||
,o.[name] AS [object_name]
|
||||
,''@term@'' AS [scalar_matching]
|
||||
FROM sys.objects o
|
||||
JOIN sys.sql_modules m
|
||||
ON m.[object_id] = o.[object_id]
|
||||
JOIN sys.schemas s
|
||||
ON s.[schema_id] = o.[schema_id]
|
||||
WHERE m.definition LIKE ''%@term@(%''
|
||||
AND s.[name]<>''@term@'';
|
||||
'
|
||||
|
||||
DECLARE csr_db CURSOR FAST_FORWARD READ_ONLY FOR
|
||||
SELECT name
|
||||
FROM sys.databases d
|
||||
WHERE [d].[database_id] > 4;
|
||||
|
||||
OPEN csr_db
|
||||
|
||||
FETCH NEXT FROM csr_db INTO @db_name
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
PRINT REPLICATE('-', 30);
|
||||
PRINT '--- Switching to '+@db_name;
|
||||
PRINT REPLICATE('-', 30);
|
||||
|
||||
|
||||
DECLARE csr_term CURSOR FAST_FORWARD READ_ONLY FOR
|
||||
SELECT [s].[objectName]
|
||||
FROM #scalar s
|
||||
WHERE s.[dbSource] = @db_name;
|
||||
OPEN [csr_term]
|
||||
FETCH NEXT FROM [csr_term] INTO @fx_name;
|
||||
WHILE @@FETCH_STATUS= 0
|
||||
BEGIN
|
||||
|
||||
SELECT @q = REPLACE(REPLACE(@tpl_search,'@db@', @db_name), '@term@', @fx_name);
|
||||
|
||||
--PRINT @q;
|
||||
EXEC [sys].[sp_executesql]
|
||||
@q
|
||||
,N''
|
||||
;
|
||||
FETCH NEXT FROM [csr_term] INTO @fx_name;
|
||||
END
|
||||
|
||||
CLOSE [csr_term];
|
||||
DEALLOCATE [csr_term];
|
||||
|
||||
FETCH NEXT FROM csr_db INTO @db_name
|
||||
END
|
||||
|
||||
CLOSE csr_db
|
||||
DEALLOCATE csr_db
|
||||
|
||||
SELECT *
|
||||
FROM [#res];
|
||||
Reference in New Issue
Block a user