在我们的一个 SQL Server 中,我们连接了多个数据库,其中大多数包含一个小表,比如说 dbo.DBType,该表将始终包含 1 条记录和两列,第一列告诉我数据库是类型 A 还是 B (只允许 A 和 B)。
有没有办法可以查询 SQL Server 的主数据库并检索 A 类型或 B 类型的所有数据库的列表?
我知道我可以在一个循环内连接到它们中的每一个并检查包含的 DBType 表,但我在想
Aar*_*and 10
我在猜测第一列 - 用ColumnName
实际的列名替换下面。此外,指定您正在使用的 SQL Server 版本总是很有用的 - 我假设是 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;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2377 次 |
最近记录: |