好的,这是给你们的挑战。
我的任务是为两家作为一家公司运营的公司设置报告。由于我不会深入的原因,它们被隐式拆分但(出于我们的目的)运行相同。他们每个人都有两个我可以访问数据库的软件实现。
目前正在做的是我们有一套查询输出到各种格式的报告,逻辑在两家公司之间复制,形成 4 组查询。
此图表示数据库摘要,并且每个摘要都有报告。我们正在使用 MS SQL Server。
我们可能会在未来添加额外的软件,将 4 套查询变成 6、8 等。我需要确保两家公司的查询逻辑没有差异,以最大限度地减少差异风险并便于开发。
所以这是问题:
是否可以在不使用动态 SQL 的情况下以某种方式在公司之间共享查询?
其他一些想法:
在部署更改后使用现成的工具比较两个数据库(您可能可以自动执行此操作,具体取决于您现有的部署过程),并同步它们
自动部署更改,以便始终针对两个数据库对过程进行更改(这同样取决于您当前的部署过程需要什么)
仔细实施动态 SQL ,以便根据连接的用户从正确的数据库中提取数据。
使用具有不同模式下的视图或同义词的中央数据库,每个集合指向两个不同的数据库。动态构建对过程的调用,或者省略模式前缀并为每个用户设置默认模式(您可以通过授予数据库 A 的用户访问 B 的模式来提高安全性,反之亦然)。
假设您可以对查询使用存储过程,您可以创建一个数据库来对相关查询进行版本控制。
然后每个存储过程可以检查版本控制数据库,以查看存储过程是否是最新版本,如果不是最新版本则拒绝运行。
就像是:
显然,这个系统存在一些缺陷。为了对查询进行版本控制,每次运行任何查询时都必须检查版本控制表。您必须准确更新版本控制表。每当您进行更改以查找新版本号时,您都必须更新每个存储过程....等等等等。
将其视为一个穷人的版本控制系统,如果您正确使用它也可以正常工作!