查找所有空表在服务器上的所有数据库中命名为MAP_ALERT

时间:2015-11-19 16:46:54

标签: sql-server

我们在工作中进行研究,每项研究都有自己的数据库。所有研究数据库都在同一台服务器上,eaxch有一个名为MAP_ALERT的表。

我需要为所有研究数据库找到所有不包含数据的MAP_ALERT表。我找到了这个页面,告诉我们如何在一个数据库中找到空表:Select all empty tables in SQL Server - 我如何调整它来查找给定服务器上所有数据库中名为MAP_ALERT的所有空表?

1 个答案:

答案 0 :(得分:2)

您可以在此处使用动态SQL来帮助您。这是查询每个数据库的系统表。这甚至可以正确处理没有该表的数据库。

declare @SQL nvarchar(MAX)
set @SQL = '';

create table #Results
(
    DBName sysname
)

select @SQL = @SQL + 'if exists(select * from ' + name + '.sys.tables where name = ''MAP_ALERT'') insert #results (DBNAME) select ''' + name + ''' from ' + name + '.dbo.MAP_ALERT having count(*) > 0;'
from sys.databases

--select @SQL
--uncomment the following when you have evaluated the dynamic sql and understand what query is going to run on your system
exec sp_executesql @SQL

select * from #Results