我们在工作中进行研究,每项研究都有自己的数据库。所有研究数据库都在同一台服务器上,eaxch有一个名为MAP_ALERT的表。
我需要为所有研究数据库找到所有不包含数据的MAP_ALERT表。我找到了这个页面,告诉我们如何在一个数据库中找到空表:Select all empty tables in SQL Server - 我如何调整它来查找给定服务器上所有数据库中名为MAP_ALERT的所有空表?
答案 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