如何在 Sql Server 2008 R2 存储过程中搜索字符串?

问题描述 投票:0回答:2

我正在将旧版 SQLS2k 迁移到 2008R2,似乎所有数据访问都是通过存储过程完成的,并且任何自定义查询都使用旧版

*=
=*
外连接语法。有超过一百个过程,所以我不想单独打开每个过程来查看它是否使用该语法(大多数不会),有没有一种方法可以查询元数据以获取过程/函数/视图列表/triggers,然后循环搜索
*=
=*
字符串,打印出有问题的对象的名称?

我的背景是oracle,我知道如何找到那里的元数据视图,但我对Sql Server有点陌生。无法降级兼容版本。

谢谢!

sql-server sql-server-2008 join sql-server-2000 outer-join
2个回答
29
投票

免费 Red Gate SQL 搜索?

或者查询sys.sql_modules

SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE definition LIKE '%=*%' OR definition LIKE '%*=%'

注意:INFORMATION_SCHEMA 视图和系统注释会截断定义,因此不可靠。


2
投票

使用查询的问题是,如果存储过程已加密,则这些查询将不起作用,除非您正在运行 DAC 连接类型。

这就是第三方工具派上用场的地方,因为它们可以帮助您轻松完成此操作。我正在使用免费的ApexSQL Search,但我想使用 Red Gate 或任何其他工具都不会出错。

© www.soinside.com 2019 - 2024. All rights reserved.