如何查找包含 UNION 关键字的所有 View 和 SP?
(另一个问题:SP和 View 的文本存储在哪个系统表中)
谢谢
最佳答案
这是一个有点幼稚但可行的示例:(在 SQL Server 2005 和 2008 R2 上测试)
use msdb;
SElECT * FROM sys.all_sql_modules
WHERE
(definition LIKE '%CREATE VIEW%' OR
definition LIKE '%CREATE PROCEDURE%')
AND definition LIKE '%UNION%'
要巩固它,只需通过 object_id 链接加入并按对象类型过滤 View 和存储过程,而不是使用 LIKE。
更简单:
SElECT * FROM sys.all_sql_modules
WHERE definition LIKE '%UNION%'
警告:由于我们正在对每个对象的创建脚本执行 LIKE 比较,因此如果/当它出现在注释中时,我们也会选择 UNION 一词。这对您来说可能没问题,但如果您需要结果更具确定性并避免这种情况,您的 WHERE 子句将需要更复杂,可能使用正则表达式来优化结果。
关于sql-server - 如何查找数据库中使用 UNION 的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7741301/