patternsqlModerate
List all database containing table and value
Viewed 0 times
containingallvaluedatabaseandlisttable
Problem
in one of our SQL Servers we have several databases attached and most of them contain a little table, let's say dbo.DBType and that table will always contain 1 record with two columns, first column tells me if the DB is of type A or B (only A and B are allowed).
is there a way I can query the master db of SQL Server and retrieve a list of all databases of type A or type B ?
I know I could connect inside a loop to each of them and check the containewd DBType table but was thinking
is there a way I can query the master db of SQL Server and retrieve a list of all databases of type A or type B ?
I know I could connect inside a loop to each of them and check the containewd DBType table but was thinking
Solution
I'm guessing on the first column - replace
ColumnName below with the actual column name. Also it's always useful to specify which version of SQL Server you are using - I've assumed 2005.DECLARE @DBType CHAR(1);
SET @DBType = 'A'; -- or 'B';
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'';
CREATE TABLE #x(DB SYSNAME);
SELECT @sql = @sql + 'IF EXISTS (SELECT 1 FROM '
+ QUOTENAME(name) + '.sys.tables WHERE name = ''DBType'')
INSERT #x SELECT ''' + name + '''
FROM ' + QUOTENAME(name) + '.dbo.DBType
WHERE ColumnName = ''' + @DBType + ''';'
FROM sys.databases;
EXEC sp_executesql @sql;
SELECT DB FROM #x;
DROP TABLE #x;Code Snippets
DECLARE @DBType CHAR(1);
SET @DBType = 'A'; -- or 'B';
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'';
CREATE TABLE #x(DB SYSNAME);
SELECT @sql = @sql + 'IF EXISTS (SELECT 1 FROM '
+ QUOTENAME(name) + '.sys.tables WHERE name = ''DBType'')
INSERT #x SELECT ''' + name + '''
FROM ' + QUOTENAME(name) + '.dbo.DBType
WHERE ColumnName = ''' + @DBType + ''';'
FROM sys.databases;
EXEC sp_executesql @sql;
SELECT DB FROM #x;
DROP TABLE #x;Context
StackExchange Database Administrators Q#16850, answer score: 10
Revisions (0)
No revisions yet.