【问题标题】:Search Code in Project for Stored Procedures in the Database在项目代码中搜索数据库中的存储过程
【发布时间】:2011-04-09 22:17:06
【问题描述】:

是否有一种简单的方法可以搜索数据库中的所有存储过程,以查看它们是否位于 Visual Studio 的 C# 代码中的任何位置?

我正在使用带有 SQL Server 2005 的 Visual Studio 2008 (C#)。我只想查询数据库并返回所有存储过程的列表(我可以轻松地做到这一点)。然后我想搜索整个项目,找出代码中使用了哪些存储过程,哪些没有。

(好吧,当我写下这个时,我有一个想法,但它涉及一次查看每个文件,这还不错,但我想知道是否有更好的解决方案)。

编辑:看来我的问题还不够清楚。我想获取数据库中未从代码调用的每个存储过程的列表。我正在尝试删除所有未使用的代码和数据库对象,所以我需要知道没有使用的内容,然后开始删除。

【问题讨论】:

  • 请记住,只是因为用户界面不使用 sp,并不意味着它没有被 SSIS 包或作业或不同的应用程序或 dba 使用.这为您提供了一个要检查的列表,而不是要消除的列表。
  • 哦,我知道了。这只是收集要删除的潜在数据库对象列表的第一步。

标签: c# sql-server visual-studio-2008 file search


【解决方案1】:

您可以在“在文件中查找”对话框中勾选“使用正则表达式”选项,然后用 | 分隔名称。字符。

要生成以管道分隔的过程名称列表以供您搜索,您可以使用

declare @list varchar(max)

select @list= isnull(@list + '|','') + name from sys.procedures

select @list AS [processing-instruction(x)] FOR XML PATH('')

要查找代码中根本没有引用的存储过程,您可以查看第三方工具来执行此操作,例如 Apex SQL Clean

您可能会发现在免费试用期内您现在可以做所有您需要的事情。

【讨论】:

  • 谢谢,我注册了试用版,等待欢迎邮件。
【解决方案2】:

使用一致的命名约定,例如 usp_

【讨论】:

  • 我们可以......但我需要一个 C# 代码中未使用的所有存储过程的列表
  • 所以你从 c# 代码中所有存储过程的列表开始。如果你真的想要,你可以编写一个应用程序来读取你的代码文件并提取对你想要匹配的模式的引用。
【解决方案3】:

我刚刚创建了一个程序来从数据库中获取所有存储过程名称。然后我手动阅读了项目中的所有文件,并检查它们是否包含存储过程名称。如果在任何文件中都找不到该名称,我将其添加到列表中。

我希望找到一种更简单的方法来做到这一点,但这可以满足我的需要。

【讨论】:

  • 请上传到 github 我也需要这样做! :D
  • 如果可能请上传
【解决方案4】:

取决于代码的编写方式。

您也许可以搜索.CommandText 之类的内容。

要搜索的其他内容可能只是 SqlCommand.CommandType = CommandType.StoredProcedure

希望您随后可以取出包含 SP 名称的所有行,然后您可以使用正则表达式或类似的方法从这些行中仅取出 SP 名称。

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 2020-09-04
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多