【发布时间】:2020-03-04 23:50:12
【问题描述】:
我有一个连接到 SQL Server 数据库默认实例的程序正在工作。我使用 Entity Framework 连接到数据库,该软件现在用作生产软件 - 它很好地支持了我的业务。它是在 Windows Server 2012 上运行的 SQL Server 的付费版本。
我在家中从 git 中检查了相同的代码,并希望在家中使用相同的软件。我已经在我的 PC 上安装了 SQL Server Express(实际上是为了在网络上的第二台 PC 上进行测试)。我使用的是直接从 SQL Server 对象资源管理器复制的连接字符串:
@"Data Source=TSORT\SQLEXPRESS;Initial Catalog=CN2;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
在我的生产软件中,连接字符串是根据设置文件构建的,但我出于测试目的采用了硬编码。
我的安装例程成功地在我的 SQL Server Express 命名实例上创建了自己的数据库。我可以看到数据库和表,包括__MigrationHistory 表,其中包含正确的修订。
但是,当运行此代码时:
CN2.Data.Model.CN2Context context = new Data.Model.CN2Context(builder.ConnectionString);
context.Database.Delete();
context.Database.Create();
var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(new AJSoft.CN2.Model.Migrations.Configuration());
dbMigrator.Update();
context.SaveChanges();
当我随后尝试使用相同的连接字符串连接到数据库时,我得到了众所周知的一般错误:
在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)
我已经检查了命名管道和 TCP 连接是否在本地和网络上启用。当我尝试在我的 remote 机器上使用数据库时,我什至将我的防火墙 off 关闭了一会儿,但没有任何改善。显然存在某种联系,因为我的空数据库结构首先是正确创建的。
在工作 (SQL Server) 和家庭 (SQL Server Express) 的主要区别在于,在工作中我使用默认实例,而家庭使用命名实例 (COMPUTERNAME\SQLEXPRESS)。所有客户端 PC 都是 Windows 10 并保持全面更新。
这显然令人难以置信,因为这意味着我无法在家用 PC 上使用该软件进行任何工作。任何提示都非常感谢。
编辑:作为参考,我在工作中的调试版本中使用的连接字符串(没有问题):
作为参考,我在工作中的域环境中构建 debug 时使用的连接字符串:
"Data Source=ROHAN;Initial Catalog=\"CN2 Test\";Integrated Security=True;Connect Timeout=10;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
ROHAN 显然是我的服务器名称,并且使用了默认实例,如您所见。
编辑:我的代码中似乎有一个更根本的问题。我在指定 LocalDb 时遇到了完全同样的问题 - 数据库已创建,但一旦创建,我就无法再次连接到它。我会继续调查。在那之前,我一直在使用 TeamViewer 在家进行开发。
【问题讨论】:
-
我不清楚是什么问题?
-
第三个代码 sn-p 包含准确的错误文本。初始创建后我无法连接到数据库。
-
你能从 SQL 管理工作室连接到 SQL express 吗?
-
所以你的机器可以连接到数据库来创建它,但是运行程序时却无法连接?对吗?
-
是的 - 我可以从 SQL 管理工作室连接。当我在本地和远程尝试这个时。我什至可以“刷新”数据库列表并“观察”从 SSMS 创建的空数据库。我还检查了 Windows 用户对数据库拥有完全的管理员权限。我也使用内部身份验证时出现同样的错误。
标签: c# sql-server entity-framework connection-string entity-framework-migrations