我对旧的 ASP Web 应用程序有一些恐惧。有没有人有任何简单的方法可以找到不再需要的脚本、页面和存储过程?(除了“old___code”、“delete_this”等中的内容;-)
2 回答
如果存储的过程无法运行,则可能不会使用它,因为当其他东西发生变化时,没有人会费心去更新它。每条记录都为空的表列可能没有被使用。
如果您在源代码控制中有您的 sp 和数据库对象(如果您没有,为什么不呢?),您可能能够找到并找到将其移至生产环境的其他代码,这些代码应该会给您一个线索至于什么叫它。您还可以查看最后触摸它的人,并且该人可能知道是否仍然需要它。
我通常通过首先列出所有 proc(您可以从系统表中获取)然后将我知道正在使用的那些从列表中标记出来来解决这个问题。Profiler 可以在这里为您提供帮助,因为您可以看到通常被调用的内容。(但不要假设因为 profiler 没有向 proc 显示它没有被使用,那只会给你一个要研究的列表。)这使得需要重新构建的列表要小得多。根据您的命名约定,查看代码的哪一部分应该使用它们可能相对容易。研究时不要忘记在应用程序以外的地方调用 procs,因此您需要检查作业、DTS 或 SSIS 包、SSRS 报告、其他应用程序、触发器等,以确保没有使用某些东西。
一旦您确定了您认为不需要的列表,请与其他开发人员分享并询问是否有人知道是否需要 proc。通过这种方式,您可能会从列表中删除更多用于专门的东西。然后,当您拥有该列表时,将名称更改为某种约定,以便您将它们标识为删除的候选者。同时设置一个删除日期(该日期有多远取决于可能调用某些内容的频率,如果它被称为AnnualXYZReport之类的东西,则将该日期设为一年)。如果在删除日期之前没有人抱怨,请删除 proc(当然,如果它处于源代码控制中,您即使在那时也可以将其取回)。
一旦你经历了识别坏进程的地狱,那么是时候意识到你需要培训人们开发过程的一部分是识别不再使用的进程并将它们作为更改的一部分删除到一段代码。取决于代码重用,这可能意味着搜索代码库以查看代码库的其他部分是否使用它,然后执行与上面讨论的相同的事情,让所有人知道它将在该日期被删除,更改名称以便任何引用它的代码会中断,然后在删除的日期删除它。或者也许你可以有一个元数据表,当你知道你已经停止使用某些东西时,你可以在其中放置要删除的候选者,并每月左右向每个人发送一次报告,以确定其他人是否需要它。
我想不出任何简单的方法来做到这一点,这只是确定哪些可能不会被使用并艰难通过的问题。
仅对于 SQL Server,我能想到的 3 个选项:
- 修改存储的过程以记录使用情况
- 检查代码是否没有设置权限
- 运行分析器
当然,删除访问权限或删除它,看看谁打电话...