首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft SQL Server中的数据库级锁定:架构迁移

Microsoft SQL Server中的数据库级锁定:架构迁移
EN

Stack Overflow用户
提问于 2015-09-14 17:06:08
回答 1查看 118关注 0票数 0

我有一个分布式应用程序,其中多个服务器上的多个进程连接到SQL Server数据库。

我需要在第一次启动时迁移代码中的数据库模式,因为升级部署可以由没有数据库访问权限(我们使用计算机对象数据库访问权限)的用户完成。

目前,这是通过提供一个带有语句的sql文件来完成的,然后拥有db访问权限(但可能没有应用程序访问权限)的用户将独立运行它。

因为应用程序不能相互通信(防火墙、不同的DC等)我在想,我必须将一个服务器指定为“主”,所有其他服务器都指定为“从”,然后在主服务器上,启动的第一个进程将获得互斥并执行模式迁移;所有其他服务器可以简单地等待,直到它们可以看到模式被迁移。

然而,这对我来说有一种代码的味道。

我试图研究Entity Framework如何在代码优先迁移中处理这一点,但似乎不是这样(例如,如果两个进程同时启动,它们都会尝试迁移模式)。

还有其他方法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-09-14 17:37:16

您可以将数据库模式更改为单用户(其他连接)将被拒绝。进行更改,然后改回多用户模式。

编辑:

这里有一个技巧,如何获得“互斥”。您可以更新/删除记录。在事务打开之前,排它锁仍然保持不变。很可能,如果您从事务中的每个表中删除0条记录(带有表锁提示),您可能会为数据库用户实现与“全局互斥”相同的行为。但我不知道模式更改会有什么行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32560969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档