我继承了一个有 400 个表并且只注册了 150 个外键约束的数据库。了解我对应用程序所做的工作并查看表格列,很容易说应该有更多。
如果我开始添加缺失的 FK,我担心当前的应用程序软件会崩溃,因为开发人员可能已经开始依赖这种“自由”,但解决问题的第一步是提出缺失的 FK 列表,所以我们可以将他们作为一个团队进行评估。
更糟糕的是,引用列不共享命名约定。
这些关系被非正式地编码到数百个临时查询和存储过程中,因此我希望以编程方式解析这些文件以查找实际表(但不是表变量等)之间的 JOINS。
我预见到这种方法的挑战是:换行符、可选别名和表提示、别名解析。
- 有更好的主意吗?(除了放弃)
- 是否有任何预构建的工具可以解决这个问题?
- 我不认为正则表达式可以处理这个。你不同意吗?
- SQL 解析器?我尝试使用 Microsoft.SqlServer.Management.SqlParser.Parser 但所有公开的都是词法分析器 - 无法从中获取 AST - 所有这些都是内部的。