Files
sql-scripts/DELPHIX - count tables per schemas.sql
2024-01-31 14:50:39 +01:00

58 lines
1.3 KiB
PL/PgSQL

USE master;
IF OBJECT_ID('tempdb..#dbs')IS NOT NULL BEGIN;
DROP TABLE #dbs;
END;
SELECT [db].[name]
INTO #dbs
FROM sys.databases db
WHERE [db].[name] NOT IN ( 'master', 'msdb', 'tempdb', 'distribution', 'model', 'symbiose', 'arizonaCash', 'activerob', 'SSISDB' );
IF OBJECT_ID('tempdb..#TblCountBySchema')IS NOT NULL BEGIN;
DROP TABLE #TblCountBySchema;
END;
CREATE TABLE #TblCountBySchema(
[db_name] varchar(255) NOT NULL,
[schema_name] varchar(255) NOT NULL,
[tables_count] int NOT NULL
,CONSTRAINT pk_tblCountBySchema PRIMARY KEY ([db_name], [schema_name])
)
DECLARE @tpl VARCHAR(MAX)='
use @db@
INSERT INTO #TblCountBySchema([db_name], [schema_name], [tables_count])
SELECT
''@db@'' as [db_name],
[t].[TABLE_SCHEMA] as [schema_name],
COUNT(1) AS table_count
FROM [INFORMATION_SCHEMA].[TABLES] t
GROUP BY [t].[TABLE_SCHEMA];
'
/* declare variables */
DECLARE @dbName VARCHAR(255)
DECLARE csr_db CURSOR FAST_FORWARD READ_ONLY FOR SELECT name FROM [#dbs]
OPEN csr_db
FETCH NEXT FROM csr_db INTO @dbName
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @stmt NVARCHAR(MAX) = REPLACE(@tpl, '@db@', @dbName);
PRINT @stmt;
EXEC sp_executesql @stmt, N'';
FETCH NEXT FROM csr_db INTO @dbName
END
CLOSE csr_db
DEALLOCATE csr_db
SELECT *
FROM [#TblCountBySchema]