我有一个c#程序,我想连接到Windows上一个简单的Dockerized SQL Server数据库。数据库的docker-compose.yml
如下所示:
version: "3.9"
services:
db:
image: "mcr.microsoft.com/mssql/server"
environment:
SA_PASSWORD: "*****"
ACCEPT_EULA: "Y"
现在我试着在c#中连接它,像这样:
SqlConnection connection = new SqlConnection(@"Server=db;Database=master;User=sa;Password=*****;");
connection.Open();
在connection.Open()
时失败,出现以下错误:
System.Data.SqlClient。SqlException异常:[…]
System.ComponentModel。win32异常:网络路径无法找到
在我看来,问题显然是连接字符串。然而,我已经搜索和搜索,无法找出正确的连接字符串在这种情况下会是什么。有人能帮帮我吗?
编辑:我现在也尝试了这个连接字符串:
@"Server=localhost,1433;Database=master;User=sa;Password=*****;"
这会导致以下不同的错误:
System.ComponentModel。win32异常:远程主机拒绝网络连接
我现在知道问题出在哪里了。
问题是我的docker-compose.yml
仍然缺少ports
部分。由于某些原因,我复制的教程中没有包含这一部分。
那么docker-compose.yml
应该是这样的:
version: "3.9"
services:
db:
image: "mcr.microsoft.com/mssql/server"
environment:
SA_PASSWORD: "*****"
ACCEPT_EULA: "Y"
ports:
- "1433:1433"
之后,我可以使用以下连接字符串从c#连接到数据库:
@"Server=localhost,1433;Database=master;User=sa;Password=*****;"