我们有一个SQL服务器,每个客户端都有一个数据库,我们有数百个客户端.想象一下:database001,database002,database003,...,database999.我们希望将所有这些数据库组合到一个数据库中.
我们的想法是添加一个siteId列,001,002,003,...,999.
我们正在探索使这种过渡尽可能顺利的选择.我们很乐意听到您的任何想法.它被证明是一个非常具有挑战性的问题.
我听说过一种技术可以创建一个匹配然后过滤的视图.
有什么想法吗?
为每个客户端数据库创建客户端数据库ID.您将使用此id来保持数据在逻辑上分开.这是"站点ID"概念,但您可以使用派生密钥(标识字段)而不是手动创建这些数字.创建一个具有数据库名称和标识的表,以及您需要的任何其他元数据.
下一步是创建一个SSIS包,该包获取相关数据库的ID,并将其添加到必须将其数据逻辑分离的表中.然后,您可以在每个数据库上运行相同的包,并查找相关数据库的ID.
如果您拥有唯一且唯一且已导入数据的ID,则必须更改您的应用以适应新架构(实际上之前,或者您几乎搞砸了).
如果要逐步执行此操作,可以在不同的"数据库"中创建视图或函数,以便旧客户端仍然可以访问客户端的数据,即使它已被移动.如果部署一些停机时间,则可能不需要此步骤.
我建议的方法相当灵活,可以一次应用于一个客户端,具体取决于您的客户端应用程序部署方法.