我正在做一个大学小组项目,该项目以前使用MySQL,但是团队决定迁移到MS SQL Server Express。我是使用Mac的唯一团队成员,因此我正在尝试使项目连接到Docker容器。我正在Mac的Visual Studio中工作。
我已经使用以下方法创建并启动了SQL Express 2017容器:
docker run -d --name sqlexpress -e'ACCEPT_EULA = Y'-e'SA_PASSWORD = MSSQLContainer1'-e'MSSQL_PID = Express'-p 1433:1433 -d mcr.microsoft.com/mssql/server:2017 -latest-ubuntu
运行时如下所示:
容器ID:e448f6e4df4
图像:mcr.microsoft.com/mssql/server:2017-latest-ubuntu
命令:“ / opt / mssql / bin / sqls…”
创建:21小时前
状态:最多21小时
端口:0.0.0.0:1433-> 1433 / tcp
名称:sqlexpress
当我在docker中运行SQL Server并输入SELECT @@ VERSION时:
Microsoft SQL Server 2017(RTM-CU16)(KB4508218)-14.0.3223.3(X64) 2019年7月12日17:43:08 版权所有(C)2017 Microsoft Corporation Linux(Ubuntu 16.04.6 LTS)上的Express Edition(64位)
我能够从 Azure Data Studio 或 DBeaver 连接到容器,而没有任何问题,并创建了一个名为 HelpdeskSystem 的数据库
但是我无法终生获得.NET Core应用程序以连接到数据库。
这是我当前的连接字符串;但是,我尝试了不同的变化:
“ Server = localhost \\ sqlexpress,1433; Database = HelpdeskSystem; User = sa; Password = MSSQLContainer1;”
这也是我的队友在Windows计算机上使用的连接字符串的样子(而且我也尝试在字符串中包括那些额外的属性):
“ server = localhost \\ sqlexpress;数据库= HelpdeskSystem; Trusted_Connection = True;集成安全性= True; MultipleActiveResultSets = true”
当我尝试运行需要数据库连接的单元测试时,出现此异常:
InnerException:{System.Net.Sockets.SocketException(0x80004005):未定义错误:System.Data.SqlClient.SNI.SNIProxy处System.Data.SqlClient.SNI.SSRP.GetPortByInstanceName(String browserHostName,String instanceName)处为0 .CreateTcpHandle(数据源详细信息,Int64 timerExpire,对象callbackObject,布尔型并行)}
消息:“与SQL Server建立连接时发生与网络有关或特定于实例的错误。找不到服务器或无法访问该服务器。请验证实例名称正确且SQL Server配置为允许远程连接。(提供者:TCP Provider,错误:25-连接字符串无效)“
我不确定我的字符串是否错误,或者是否存在其他一些导致Web应用程序无法连接的潜在问题,但是我肯定能够使用Azure Data Studio连接到容器,所以我不明白为什么该网络应用将无法运行。
答案 0 :(得分:0)
使用此连接字符串。您可以在回送ip中提及tcp infront。
labeli