private async Task MsSqlWithSshOpenAsync(string correlationId) { var sshHost = _sshConfigs.GetAsNullableString("host"); var sshUsername = _sshConfigs.GetAsNullableString("username"); var sshPassword = _sshConfigs.GetAsNullableString("password"); var sshKeyFile = _sshConfigs.GetAsNullableString("key_file_path"); var sshKeepAliveInterval = _sshConfigs.GetAsNullableTimeSpan("keep_alive_interval"); var(sshClient, localPort) = ConnectSsh(sshHost, sshUsername, sshPassword, sshKeyFile, databaseServer: _databaseServer, databasePort: _databasePort, sshKeepAliveInterval: sshKeepAliveInterval); _sshClient = sshClient; _sshPort = localPort.ToString(); _config.Set("connection.host", "127.0.0.1"); _config.Set("connection.port", _sshPort); _connectionResolver.Configure(_config); var connectionString = await _connectionResolver.ResolveAsync(correlationId); _logger.Trace(correlationId, "Connecting to sqlserver..."); try { var settings = ComposeSettings(); var connString = connectionString.TrimEnd(';') + ";" + JoinParams(settings); _connection = new SqlConnection(connString); _databaseName = _connection.Database; // Try to connect await _connection.OpenAsync(); _logger.Debug(correlationId, "Connected to sqlserver database {0}", _databaseName); } catch (Exception ex) { _logger.Error(correlationId, ex.ToString()); throw new ConnectionException(correlationId, "CONNECT_FAILED", "Connection to sqlserver failed", ex); } }