sql-server - 如何查找数据库中使用 UNION 的所有对象

标签 sql-server sql-server-2005 sql-server-2008 union union-all

如何查找包含 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/

相关文章:

sql-server-2005 - IIF(IsNothing(Fields!field.value), "", Fields!.value.ToString)) 生成错误

sql-server - 删除表、重新创建表并重新索引是否比在 SQL Server 中简单地删除表中的所有行更快?

.net - 在 SQL Server 2005 上进行生产并针对 SQL Server 2008 进行开发的风险有多大

sql-server - SQL Server : check whether a Trigger is Enabled or Disabled?

c# - 将 TransactionScope TransactionInformation 事务标识符与 sql server 事务 ID 链接起来

python - Pandas.read_sql 失败,出现 DBAPIError 07002 : COUNT field incorrect or syntax error

sql-server - sql server 函数中的 newid()

c# - 连接 SQL 查询中一个字段的多个结果

sql - 用于将数据从一个表插入到具有相同列名的另一个表的存储过程

sql-server-2008 - 在存储过程中计算加权(贝叶斯)平均分数/索引?