Как подключить докер 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

1 ответ

Несколько шагов вы можете попробовать.

Помните сначала, что вы находитесь в Windows, но сервер баз данных на самом деле находится внутри Linux, а Linux - супер чувствительная к регистру система. Поэтому убедитесь, что ваше имя пользователя SA или sa.

Во-вторых, в значении сервера и порта используйте запятую (,) вместо двоеточия (:), как показано ниже

В-третьих, если описанные выше шаги не сработали, сначала убедитесь, что вы можете получить доступ к серверу с помощью инструмента SQLCMD. Вы можете следить за этим документом Microsoft для деталей. После успешного входа в базу данных вы можете повторно использовать значение и учетные данные сервера в окне SQL Operations Studio.

Надеюсь это поможет.

Другие вопросы по тегам