我正在运行mcr.microsoft.com/mssql/server本地开发的Docker容器,可以在一台机器上完美地工作。
但是在我的笔记本电脑上,容器有时无法访问。
如果我尝试通过SQL Server Management Studio连接,我可以通过localhost连接(:: 1)、,127.0.0.1或"!">。
但是如果我运行sqlcmd,dotnet或Azure Data Studio,只有127.0.0.1(:: 1)和连接可以工作。当我尝试连接到localhost或"!">,我得到消息:
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Named Pipes Provider: Could not open a connection to SQL Server [2]. .
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..
我可以改变我的行为,只工作在127.0.0.1,但这需要我改变一堆项目文件,我正在与一个更大的团队工作。
我在网上搜索过,发现localhost有时不适合WSL 2。但是我已经成功地测试了我的WSL 2设置,正如之前所说,我能够连接到SQL Server Management Studio。
我也试过禁用我的防火墙。
我的问题是我的笔记本电脑有第二个网络适配器连接到互联网。这实际上是4G sim卡连接。
当使用TCPView时,我发现连接到localhost没有重定向到127.0.0.1,而是4G适配器的IP地址。
com.docker.backend.exe没有接收到,因为它只接受通过我的第一个网卡的连接。
当我使用Wifi连接时,我已经切换了4G连接。如果我有时间,我会尝试找出如何更改本地主机呼叫到我的网络设备的优先级。