Exemplo n.º 1
0
        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);
            }
        }