Sql server 如何在Sql Server 2008 R2存储过程中搜索字符串?
我正在将一个旧式SQLS2k迁移到2008R2,似乎所有的数据访问都是通过存储的进程完成的,任何自定义查询都使用旧式的Sql server 如何在Sql Server 2008 R2存储过程中搜索字符串?,sql-server,sql-server-2008,join,sql-server-2000,outer-join,Sql Server,Sql Server 2008,Join,Sql Server 2000,Outer Join,我正在将一个旧式SQLS2k迁移到2008R2,似乎所有的数据访问都是通过存储的进程完成的,任何自定义查询都使用旧式的*==*外部联接语法。有上百个进程,所以我不想单独打开每个进程来查看它是否使用了这种语法(大多数不会),有没有办法查询元数据以获得进程/函数/视图/触发器列表,然后循环搜索*=或=*字符串,打印出有问题对象的名称 我的背景是oracle,我知道如何在那里找到元数据视图,但我对Sql Server有点陌生。降级兼容版本不是一个选项 谢谢 或查询 注意:信息\u架构视图和系统注释截
*=
=*
外部联接语法。有上百个进程,所以我不想单独打开每个进程来查看它是否使用了这种语法(大多数不会),有没有办法查询元数据以获得进程/函数/视图/触发器列表,然后循环搜索*=
或=*
字符串,打印出有问题对象的名称
我的背景是oracle,我知道如何在那里找到元数据视图,但我对Sql Server有点陌生。降级兼容版本不是一个选项
谢谢
或查询
注意:信息\u架构视图和系统注释截断了定义,因此不可靠。使用查询的问题是,除非运行DAC连接类型,否则如果存储过程是加密的,则这些查询不起作用
这是第三方工具派上用场的地方,因为它们可以帮助您轻松完成这项工作。我使用的是免费的,但我想你不会错用红门或任何其他工具。+1 for Red Gate SQL Search-对于DB程序员(和DBA)来说绝对是不可或缺的免费工具!完美的已接受:)唯一的问题是它告诉我所有日志触发器都使用旧语法。。。FML!另外,刚刚安装了红门工具,非常棒,谢谢!很高兴您能解决这个问题,即使在SQl sserver 2000中也不应该使用该代码,因为它不可靠,并且不总是进行外部连接,有时它会进行交叉连接。希望同时删除这些查询中的所有其他隐式连接,因为混合隐式连接和显式连接也可能导致问题。隐式联接无论如何都是SQL反模式,不应在任何数据库中使用。有关示例,请参见链接:
SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE definition LIKE '%=*%' OR definition LIKE '%*=%'