Azure站点SQL数据库迁移异常:登录触发SqlException问题排查
问题原因分析
- EF迁移配置不一致:本地开发时的Entity Framework迁移配置(比如
AutomaticMigrationsEnabled、ContextKey等)和线上部署的web.config里的配置不匹配。线上应用自动重建__MigrationHistory表时,会基于自身的配置生成迁移记录,和数据库实际结构不兼容,触发SqlException;而本地用的是正确的配置,所以能正常登录。 - 部署代码与本地代码不同步:本地已经更新了迁移文件或项目程序集,但部署到Azure时没同步最新版本。线上应用用旧的迁移逻辑重建
__MigrationHistory表,和当前数据库结构冲突;本地用最新的迁移文件,自然能正常连接数据库。 - Azure应用服务缓存残留:Azure应用服务会缓存旧的应用文件,哪怕重新部署,部分旧的DLL或配置可能还在运行。这就导致线上用的是旧的EF迁移逻辑,和本地最新代码的逻辑不一致,引发错误。
- 数据库账号权限差异:线上应用服务使用的数据库访问账号,和本地连接用的账号权限不一样。比如线上账号没有足够权限执行某些迁移相关的数据库操作,重建表后执行迁移逻辑时出错;本地账号权限充足,能顺利完成登录相关的数据库操作。
内容的提问来源于stack exchange,提问作者Arsalan Qaiser
相关产品推荐
相关产品推荐

