Skip to main content

Documentation Index

Fetch the complete documentation index at: https://knowledge.cloudquant.com/llms.txt

Use this file to discover all available pages before exploring further.

SQL Server (MSSQL)

SQL Server datasources use the ODBC driver and Microsoft ODBC Driver 18 for SQL Server.

Connection Configuration

URI Format

mssql://user:password@host:1433/database

Required Fields

FieldTypeDescription
connection_typestringMust be "mssql"
connection_sub_typestringMust be "database"
uristringSQL Server connection string
serverstringDatabase host address
databasestringDatabase name
usernamestringDatabase user
passwordstringDatabase password

Optional Fields

FieldTypeDefaultDescription
encryptionstringTLS encryption mode (e.g., "yes", "no", "strict")

Environment Variables

VariableDescription
ODBC_MSSQL_DRIVEROverride the ODBC driver name (default: "ODBC Driver 18 for SQL Server")
GODEBUGSet to x509negativeserial=1 for servers using older certificates with negative serial numbers
The ODBC_MSSQL_DRIVER environment variable allows you to use a different version of the Microsoft ODBC driver (e.g., Driver 17) without modifying the connection configuration.

Example Connection

{
  "name": "mssql-market-data",
  "connection_type": "mssql",
  "connection_sub_type": "database",
  "uri": "mssql://libuser:s3cureP@ss@db.example.com:1433/marketdata",
  "server": "db.example.com",
  "database": "marketdata",
  "username": "libuser",
  "password": "s3cureP@ss",
  "encryption": "yes"
}

Dataset Configuration (data_args)

Required Fields

FieldTypeDescription
table_optionslistTables to query (see below)
databasestringConnection reference name
data_dt_columnstring or listColumn(s) containing the datetime value
data_dt_formatbool or string or listtrue for native datetime auto-detect, or strptime format
data_dt_timezonestringTimezone of the source data
data_key_columnstring or listColumn(s) used as the symbol/key for query filtering

Optional Fields

FieldTypeDefaultDescription
batch_sizeint10000Number of rows per query batch
data_dt_nudgeint0Microsecond offset applied to timestamps

table_options Entry

Each entry in table_options describes a table to query:
FieldTypeDescription
dbstringDatabase name
table_likestringTable name or pattern
tokenstringTable identifier token
zonestringTimezone, default "America/New_York"
dt_modestring(Optional) Datetime mode
dt_regexstring(Optional) Regex for partitioned tables
dt_formatstring(Optional) Datetime format for partitioned tables
nudge_microsint(Optional) Microsecond nudge

Complete Example

Connection

{
  "name": "mssql-trades",
  "connection_type": "mssql",
  "connection_sub_type": "database",
  "uri": "mssql://libuser:s3cureP@ss@sqlserver.example.com:1433/trades_db",
  "server": "sqlserver.example.com",
  "database": "trades_db",
  "username": "libuser",
  "password": "s3cureP@ss",
  "encryption": "yes"
}

Dataset

{
  "name": "us-equity-trades",
  "connection": "mssql-trades",
  "data_args": {
    "table_options": [
      {
        "db": "trades_db",
        "table_like": "daily_trades",
        "token": "daily_trades",
        "zone": "America/New_York"
      }
    ],
    "database": "mssql-trades",
    "batch_size": 10000,
    "data_dt_column": "trade_time",
    "data_dt_format": true,
    "data_dt_timezone": "America/New_York",
    "data_dt_nudge": 0,
    "data_key_column": "symbol"
  },
  "schema": [
    { "name": "symbol", "type": "string", "group": "key", "description": "Ticker symbol" },
    { "name": "trade_time", "type": "string", "group": "time", "description": "Trade timestamp" },
    { "name": "price", "type": "double", "group": "value", "description": "Trade price" },
    { "name": "volume", "type": "int64", "group": "value", "description": "Trade volume" },
    { "name": "exchange", "type": "string", "group": "value", "description": "Exchange code" }
  ]
}
Set data_dt_format to true when using native SQL Server datetime2 or datetimeoffset columns. CloudQuant Data Liberator will auto-detect the datetime type and convert directly without string parsing.

Encryption Configuration

SQL Server connections support several TLS encryption modes via the encryption field:
ValueDescription
"yes"Require encrypted connection (recommended)
"no"Do not encrypt the connection
"strict"Strict TLS 1.2+ encryption (SQL Server 2022+)
When using encryption: "yes" with self-signed certificates, you may need to add TrustServerCertificate=yes to the connection. For production, always use properly signed certificates.

Legacy Certificate Support

For SQL Server instances using older certificates with negative serial numbers:
export GODEBUG=x509negativeserial=1
This is common with older SQL Server installations that have not rotated their TLS certificates.

Driver and Dependencies

ComponentDetails
DriverODBC driver with ODBC Driver 18 for SQL Server
ProtocolODBC / TDS
Arrow conversionHigh-performance ODBC driver
ODBC requiredYes (Microsoft ODBC Driver 18)
Default port1433
The Microsoft ODBC Driver 18 must be installed on the CloudQuant Data Liberator host. To use a different driver version, set the ODBC_MSSQL_DRIVER environment variable.

Troubleshooting

ODBC Driver Not Found

Verify the Microsoft ODBC Driver 18 is installed and registered:
# List installed ODBC drivers
odbcinst -q -d

# Expected output should include:
# [ODBC Driver 18 for SQL Server]
Install the driver if missing:
# Debian/Ubuntu
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql18

# RHEL/CentOS
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo
ACCEPT_EULA=Y yum install -y msodbcsql18

Using a Different Driver Version

Override the default driver with an environment variable:
export ODBC_MSSQL_DRIVER="ODBC Driver 17 for SQL Server"

Certificate Errors (x509)

If you see x509: certificate signed by unknown authority or negative serial number errors:
export GODEBUG=x509negativeserial=1

Connection Timeout

SQL Server may be configured to listen on a non-default port or require a named instance. Verify connectivity:
# Test port connectivity
nc -zv sqlserver.example.com 1433

# For named instances, use the SQL Browser port (1434/UDP) or specify the port directly

Windows Authentication

CloudQuant Data Liberator uses SQL Server authentication (username/password). Windows/Kerberos authentication is not supported through this connection type.

Slow Queries

  • Increase batch_size for large result sets (up to 100000).
  • Ensure the datetime and key columns are indexed.
  • For partitioned tables, use dt_regex to scope queries to relevant partitions.
  • Consider using datetime2 over datetime for better precision and performance.