如何查找服务器中缺失etl前缀表的数据库?SQL查询问题求助
问题分析与修正方案
你的查询逻辑存在偏差:当前语句会返回每个数据库中所有名称不包含etl的表,哪怕该数据库实际存在以etl开头的表,只要有符合NOT LIKE '%etl%'条件的表,就会被列出来,这就是为什么你会得到包含目标表的数据库结果。
要定位完全没有任何表名以etl开头的数据库,正确的思路是:逐个检查每个数据库是否存在符合Name LIKE 'etl%'的表,仅输出那些不存在这类表的数据库名称。
修正后的查询语句如下:
EXEC sys.sp_msforeachdb ' IF NOT EXISTS (SELECT 1 FROM [?].sys.Tables WHERE Name LIKE ''etl%'') SELECT ''?'' AS DatabaseName '
逻辑说明
IF NOT EXISTS (...):对当前遍历的数据库([?]代表当前数据库名),检查是否存在以etl开头的表。- 如果不存在这类表,就输出该数据库的名称,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者flea02
相关产品推荐
相关产品推荐

