我在Google上搜索,但找不到任何可以帮助我的东西。 我们正在使用SQL-Server 2008 R2,并且我们的政策是针对我们的所有数据库调用使用存储过程。这很好,但问题是现在我们的程序列表已经增长到600多个,我们正在重复其他人(有时候我们自己)编写的语法匹配查询。在SQL Server中查找语法上匹配的存储过程
现在我们搜索所有包含与我们想要创建的表和列相同的表和列的过程,然后看看我们是否可以重用它,但这会变成越来越耗时的活动。如果我们尝试任何比查询表/视图和列名更复杂的事情,那么我们可能会错过现有的proc,仅仅是因为它使用的语法。
是否有任何工具可以接受查询并告诉您哪些过程是或至少可以建议在语法上等于您的查询?或者,除此之外,您使用什么方法来确保您没有包含相同查询的多个特殊处理程序的写法稍有不同?
和SQL Server 2008这可能是最好使用sys.sql_dependencies,sys.sql_expression_dependencies,sys.dm_sql_referenced_entities,sys.dm_sql_referencing_entities。恕我直言,sp_depends是相当不可靠的。几年前我写过这篇文章:http://sqlblog.com/blogs/aaron_bertrand/archive/2008/09/09/keeping-sysdepends-up-to-date-in-sql-server-2008.aspx –
If存储过程的替代方法是adhoc SQL,它肯定不易管理?至少所有的存储过程都在一个地方,而不是分散在(可能是多个)代码库中。 –
是的,我还提出了关于可管理性评论的看法。如果你正确地使用它,任何技术都是可以管理的;反过来也是如此。 –