是否有一个应用程序可以解析一组给定的存储过程(SQL Server 2000)并获取其中使用的所有表和关联列。
存储过程可以包含来自不同数据库的表。
输出应该是这样的
表AU 列A 列B 列S
表 列 列 列
我用Database Edition GDR编写了一个小应用程序任何有兴趣的人可以参考http://tsqlparsergdr.codeplex.com http://tsqlparsergdr.codeplex.com
-
更新 - 2009 年 1 月 20 日 *
- Visual Studio DB Professional Edition 附带完整的 T-SQL 脚本 DOM 解析器
-
http://blogs.msdn.com/gertd/archive/2008/08/21/getting-to-the-crown-jewels.aspx http://blogs.msdn.com/gertd/archive/2008/08/21/getting-to-the-crown-jewels.aspx
不是一个具体的解决方案,而是一个思路。
认为 sysdepends 是一个潜在的解决方案 - 但众所周知,它在包含all依赖对象信息。
但是 Lex/Yacc 派生的东西怎么样?有一些商业解析器,例如
http://www.sqlparser.com/download.php http://www.sqlparser.com/download.php
没有寻找开源实现,但我想我会寻找这条路线。我是这样开始搜索的:
可以在此处找到 ANSI SQL 的 BNF 语法:
http://savage.net.au/SQL/ http://savage.net.au/SQL/
通过选择 lex 实现,从这里看来,这似乎是一个相对简单的工程问题。 (尽管如果您想支持 MS SQL 扩展,则需要一些繁重的工作)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)