我有一个分布式应用程序,在多个服务器上有多个进程连接到SQL Server数据库。
我需要在首次启动时在代码中迁移数据库模式,因为升级部署可以在没有数据库访问权限的情况下完成(我们使用计算机对象数据库访问)。
目前,这是通过提供带有语句的sql文件来完成的,然后具有db访问权限的用户(但可能没有应用程序访问权限)将独立运行。
因为应用程序不相互通信(防火墙,不同的DC等)我认为我必须将一台服务器指定为“主机”,所有其他服务器指定为“从机”,然后在主机上指定第一个进程那个开始会获得互斥并进行模式迁移;所有其他人都可以等到他们可以看到模式被迁移。
然而,这对我有一定的代码味道。
我尝试研究实体框架如何在代码优先迁移中处理此问题,而且似乎没有(例如,如果两个进程在同一时间开始,它们都会尝试迁移模式)。
还有其他方法吗?