如何处理具有不同 SQL 数据库的多个客户

How to handle multiple customers with different SQL databases

总结

我有一个包含多个现有 MSSQL 数据库的项目,我已经创建了一个 Azure 分析服务,并在其中部署了我的第一个表格多维数据集。我已经测试过可以访问分析服务,效果很好。 最后,我必须为 ~90 个数据库(90 个不同的客户)复制上述内容。 我不确定如何组织这个项目,我不确定我拥有的可能性。

我做了什么

我已经上网找了一些资料,但我只找到一个 source 那里有人问了类似的问题,第一个回答是我已经在想的,如下所述。 最后一个回复我不是很懂,他的one solution是什么意思,是不是在项目之上还有层级?

问题

一种可能是将每个数据库作为同一项目中的源导入,但我认为这意味着我必须从该源导入每个 table,最终意味着 5*90 = 450 tables,我认为这很快就会失控?

我还考虑过为每个客户复制整个 Visual Studio 项目文件夹约 90 次,但目前我找不到所有参考来更改名称,但我认为这不会很难。

有没有更简单的方法来实现我的目标?特别是关于可维护性。

解决方案

我将创建一个包含所有需要的 table 的全新数据库。在那些 table 中,我使用新列 customerId 从所有客户复制数据库。我将通过循环作业传输数据,周期性来定义。我使用触发器处理的客户数据库中已有行的更新。

只需为所有客户使用一个数据库,并用 customer_id 列区分每个客户。

为此,最好的方法是创建一个暂存数据库并从其他数据库导入数据,这样您的表格模型就可以从中读取数据。

处理 90 多个数据库将是一项巨大的管理开销,而让多维数据集有效地加载它们将是一个问题。使用 SSIS/Data 工厂移动数据,因为您将能够更好地协调数据移动和增量加载。这样,如果您需要 add/remove/update 数据源,它不会在 Cube 中完成,而是在 database/data 工厂级别完成。