情景:
.\test
& .\live
test
& live
test
网站web.config
指向.\test
SQL服务器实例,live
网站指向.\live
。 SQL Server实例在各方面都是相同的,即数据库名称,SQL用户名/密码等。它们不同的唯一方法是通过它们监听的端口。
我们将以下代码部署到test
网站:
_logger.Debug("connection string: " + _context.Database.Connection.ConnectionString);
_context.Database.ExecuteSqlCommand("stored_procedure @param");
在执行此代码后检查日志文件时,它会按预期显示连接字符串指向.\test
实例。但是,SQL事件探查器跟踪显示正在针对stored_procedure
实例执行.\live
。
我们无法弄清楚为什么或如何发生这种情况,有什么帮助吗?
答案 0 :(得分:1)
难题的缺失部分是端口。根据{{3}}上的注释,MSSQL端口和实例是相同的......并且端口覆盖实例名称(如果已指定)。
我们的连接字符串如下所示:
test
:Data Source=server\test,7777;Initial Catalog=ourdb;Persist Security Info=True;User ID=user;Password=pass
live
:Data Source=server\live,7777;Initial Catalog=ourdb;Persist Security Info=True;User ID=user;Password=pass
因此,虽然他们指向不同的实例,但同样的端口覆盖了它并强制它们有效地指向端口7777上运行的任何内容 - 即.\live
实例,因此我们经历的异常行为。