如何获取所有具有“ SELECT * FROM ...”的SQL Server视图名称

时间:2018-08-08 16:56:57

标签: sql sql-server views

为了在对基础表进行更改时识别高风险视图并能够进行sp_refreshview,我想获取查询表中所有(*)列的所有视图的名称。使用SELECT *

例如,查找具有以下情况的视图:

SELECT *
SELECT SomeAlias.*

注意: 我了解SELECT *是一种不好的做法,强烈建议不要recommended

1 个答案:

答案 0 :(得分:1)

这是我的方法:

SELECT DISTINCT
       o.name AS ObjectName,
       o.type_desc ObjectType,
       SUBSTRING (m.definition, PATINDEX ( '%[.][*]%' , m.definition )-4, 20) MatchedPattern
  FROM sys.sql_modules m
       INNER JOIN
       sys.objects o
         ON m.object_id = o.object_id
 WHERE  m.definition Like '%[.][*]%'
 AND o.type_desc  IN ('VIEW')