docker - 如何将 docker SQL Server linux 与 SQL Operations Studio 连接(在 Windows 中)
问题描述
正如我所提到的,我还没有设法将容器连接到 SQL Operations Studio。
我正在使用 docker compose 挂载容器,这是正确创建的,但是当我在 SQL Server Operations Studio 中输入凭据时,它没有连接。
码头工人-compose.yml
version: '3'
services:
mssqllinux:
image: microsoft/mssql-server-linux:2017-latest
env_file:
- ./docker.env
ports:
- "1433:1433"
docker.env
sa_password=RUc@ysd@f_P*yq4é
ACCEPT_EULA=Y
MSSQL_PID=Express
λ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------
sqlserlinux_mssqllinux_1 /opt/mssql/bin/sqlservr Up 0.0.0.0:1433->1433/tcp
联系:
错误:
错误跟踪:
System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) ---> System.ComponentModel.Win32Exception (53): No se ha encontrado la ruta de acceso de la red
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.<>c__DisplayClass22_0.<TryGetConnection>b__0(Task`1 _)
at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection.ReliableSqlConnection.<>c__DisplayClass28_0.<<OpenAsync>b__0>d.MoveNext() in D:\a\1\s\src\Microsoft.SqlTools.ServiceLayer\Connection\ReliableConnection\ReliableSqlConnection.cs:line 298
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.SqlTools.ServiceLayer.Connection.ConnectionService.TryOpenConnection(ConnectionInfo connectionInfo, ConnectParams connectionParams) in D:\a\1\s\src\Microsoft.SqlTools.ServiceLayer\Connection\ConnectionService.cs:line 542
ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:53,State:0,Class:20
解决方案
您可以尝试几个步骤。
首先要记住,虽然你是在windows里面,但是数据库服务器其实是在linux里面的,而且linux是超级区分大小写的系统。因此,请确保您的用户名是SA 或 sa。
第二件事是,在服务器和端口值中,使用逗号 (,) 而不是冒号 (:),如下所示
第三,如果上述步骤对您不起作用,请首先确保您可以使用 SQLCMD 工具访问服务器。您可以关注此微软文档以获取详细信息。成功登录数据库后,您可以在 SQL Operations Studio 窗口中重用服务器值和凭据。
希望这可以帮助。
推荐阅读
- git - 如何将存储库中所做的更改推送到另一个存储库
- basic4android - B4A 如何在不相关的应用程序上弹出消息框
- javascript - 如何按顺序从数组发送 API 请求
- python - Traceback(最近一次调用最后一次):,第 131 行,在
print(self.marka) NameError: name 'self' is not defined - google-iam - 为什么我的 Firebase 应用无法连接到 Google Secret Manager?
- javascript - 无法将元素的多个属性传递给 java 脚本函数
- python - 按 3 个月和 6 个月汇总
- python - 如何使用 python 3 获取列表项列表中所有列表 [1] 的总和?
- javascript - 无法理解处理鼠标事件的代码
- autohotkey - 切换时的 AHK 点击事件