entity-framework - SQL Server 2017 - EF 正在尝试访问与连接字符串不同的数据库
问题描述
我有一个非常尴尬的情况,我不知道如何解决它。
这是详细信息。
我有三个 SQL Server 2017 实例,它们与配置了高可用性的生产数据库一起使用。
服务器是 SRV1、SRV2 和 SRV3
我有一个名为 DB1 的生产数据库,其高可用性配置如下: - SRV1 上的主节点 (r/w) - SRV2 和 SRV3 上的辅助节点 (r/o)
同样在 SRV3 上,我有一个名为 DB1_DEMO 的数据库的临时副本
我们有时会在 DB1_DEMO 中恢复生产数据,以获取新的测试数据。
我还在本地开发机器上保留了数据库的本地开发副本,也称为 DB1,我用它来刷新 EF 模型。
该应用程序使用 EF6 和 db-first 方法。当我们对数据库进行一些更改时,我们会刷新 EF 模型 (edmx)。
最近开始出现的问题如下:
即使在应用程序的暂存副本上我有正确的连接字符串(指向 SRV3 和 DB1_DEMO),当我运行一些 SP(使用 ADO.NET 或 EF)时,我也会收到以下错误:
The target database ('DB1') is in an availability group and is currently
accessible for connections when the application intent is set to read only.
For more information about application intent, see SQL Server Books Online.
但是代码访问的不是数据库DB1,而是DB1_DEMO。
连接字符串清楚地指向 DB1_DEMO。
<add name="MpnModelDC" connectionString="metadata=res://*/Model.MpnModel.csdl|res://*/Model.MpnModel.ssdl|res://*/Model.MpnModel.msl;provider=System.Data.SqlClient;provider connection string="Server=SRV3;Database=DB1_DEMO;MultipleActiveResultSets=True;"" providerName="System.Data.EntityClient" />
实际上,在 SRV3 上还有生产数据库 DB1 的只读/只读副本,但仅作为辅助 r/o 节点。
并且阶段应用程序中没有任何内容指向 DB1 数据库名称。
这并不是在每个 SP 上都会发生,而只是发生在其中的少数人身上。
知道发生了什么吗?
谢谢
解决方案
知道发生了什么吗?
这是我的猜测:您有一些代码使用 3 部分名称来引用对象。例如,DB1_DEMO 中的存储过程有如下内容:
SELECT ... FROM DB1.DBO.SOMETABLE
推荐阅读
- react-native - 在 expo 应用程序中安装 magnus-ui 后出现错误“十六进制文字和标识符之间没有空格”
- python - 如何从图像的特定点查找 GPS(纬度/经度)信息?
- python - 我应该如何管理我的 django 应用程序的图像
- python-3.x - 如何在给定时间点将 dash 应用程序的访问权限限制为单个用户?
- python - 如何修复“Python sqlite3.OperationalError:没有这样的表”问题
- laravel - 多对多关系中的 Laravel TypeError
- python - Pythonic Logic - 为检查 0 和 1 列表的多个 if 语句寻求更有效的方法
- encoding - 有没有从图像/图像创建视频流的解决方案?
- python - 多列上的模糊合并 - 熊猫
- javascript - 如何在本机反应中从模态导航