SQL Server 2017-EF尝试访问的数据库与连接字符串中的数据库不同

时间:2019-02-08 21:15:51

标签: entity-framework high-availability sql-server-2017

我的处境很尴尬,我也不知道如何解决。

这是详细信息。

我有三个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)时,也会出现以下错误:

<button data-target="#codeModal" data-toggle="modal" class="codeBtn" id="primarybutton">Get Code</button>


<div class="modal fade text-center" id="codeModal">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modalheader">
                            <h1 id="modalTitle">Navigation Code</h1>
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
                        </div>
                        <div class="modal-body">
                            <div class="modal-content-code">
                                <label>HTML:</label>
                                <textarea class="js-copytextarea htmlCode" readonly="readonly" rows="5">Hello. This is textarea test bed #1</textarea>
                                <button class="js-textareacopybtn btn-primary">Copy HTML</button>
                            </div>
                            <div class="modal-content-code">
                                <label>CSS:</label>
                                <textarea class="js-copytextarea cssCode" readonly="readonly" rows="5">Hi! Welcome to textarea test bed #2 </textarea>
                                <button class="js-textareacopybtn btn-primary">Copy CSS</button>
                            </div>
                            <div class="modal-content-code">
                                <label>JS:</label>
                                <textarea class="js-copytextarea jsCode" readonly="readonly" rows="5">Hi! Welcome to textarea test bed #2 </textarea>
                                <button class="js-textareacopybtn btn-primary">Copy JS</button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

但是代码不访问数据库DB1,而是DB1_DEMO。

连接字符串明确指向DB1_DEMO。

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.

实际上,在SRV3上,还存在生产数据库DB1的只读/只读副本,但仅作为辅助r / o节点。

舞台应用程序中没有任何内容指向DB1数据库名称。

并非在每个SP上都发生这种情况,只有少数情况发生。

知道发生了什么吗?

谢谢

1 个答案:

答案 0 :(得分:0)

  

知道发生了什么吗?

这是我的猜测:您有一些代码使用三部分名称引用对象。例如,DB1_DEMO中的存储过程类似:

SELECT ... FROM DB1.DBO.SOMETABLE