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
mssql://user:password@host:1433/database
Required Fields
| Field | Type | Description |
|---|
connection_type | string | Must be "mssql" |
connection_sub_type | string | Must be "database" |
uri | string | SQL Server connection string |
server | string | Database host address |
database | string | Database name |
username | string | Database user |
password | string | Database password |
Optional Fields
| Field | Type | Default | Description |
|---|
encryption | string | | TLS encryption mode (e.g., "yes", "no", "strict") |
Environment Variables
| Variable | Description |
|---|
ODBC_MSSQL_DRIVER | Override the ODBC driver name (default: "ODBC Driver 18 for SQL Server") |
GODEBUG | Set 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
| Field | Type | Description |
|---|
table_options | list | Tables to query (see below) |
database | string | Connection reference name |
data_dt_column | string or list | Column(s) containing the datetime value |
data_dt_format | bool or string or list | true for native datetime auto-detect, or strptime format |
data_dt_timezone | string | Timezone of the source data |
data_key_column | string or list | Column(s) used as the symbol/key for query filtering |
Optional Fields
| Field | Type | Default | Description |
|---|
batch_size | int | 10000 | Number of rows per query batch |
data_dt_nudge | int | 0 | Microsecond offset applied to timestamps |
table_options Entry
Each entry in table_options describes a table to query:
| Field | Type | Description |
|---|
db | string | Database name |
table_like | string | Table name or pattern |
token | string | Table identifier token |
zone | string | Timezone, default "America/New_York" |
dt_mode | string | (Optional) Datetime mode |
dt_regex | string | (Optional) Regex for partitioned tables |
dt_format | string | (Optional) Datetime format for partitioned tables |
nudge_micros | int | (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:
| Value | Description |
|---|
"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
| Component | Details |
|---|
| Driver | ODBC driver with ODBC Driver 18 for SQL Server |
| Protocol | ODBC / TDS |
| Arrow conversion | High-performance ODBC driver |
| ODBC required | Yes (Microsoft ODBC Driver 18) |
| Default port | 1433 |
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.