如何全面了解遗留SQL数据库?

时间:2012-08-07 12:35:06

标签: sql-server

我希望对Microsoft SQL Server 2008上的旧SQL应用程序进行(小)更改。它使用多个数据库,许多存储过程,函数和一些CLR程序集。

周围人群中没有大图片文档,只有一些常识

当您搜索说所有存储过程称为的地方时,您使用了哪些工具?我不是经验丰富的SQL开发人员。我的经验更适合编程语言,其中源代码存储在文本文件中而不是数据库中。

您建议使用哪些工具来学习旧SQL应用程序的内容?

谢谢,彼得

1 个答案:

答案 0 :(得分:3)

针对具体问题:

  

调用存储过程的所有地方?

你可以使用蛮力,虽然这会导致一些误报,其中程序名称很简单并且可能自然地出现在代码中(甚至作为另一个对象名称的一部分),或者在注释中:

SELECT OBJECT_SCHEMA_NAME([object_id]), OBJECT_NAME([object_id])
  FROM sys.sql_modules
  WHERE definition LIKE '%your_procedure_name%';

这也不会捕获对使用动态SQL构建的过程的调用,但我认为无论如何都不存在针对此问题的完美无所不包的解决方案。您还可以发现作业调用存储过程的情况:

SELECT j.name FROM msdb.dbo.sysjobs AS j
  INNER JOIN msdb.dbo.sysjobsteps AS s
  ON j.job_id = s.job_id
  WHERE s.command LIKE '%your_procedure_name%';

(对于误报和动态SQL存在相同的警告,以及嵌套的过程调用,即使它们是相关的也不会被捕获。)

其他一些想法: