Skip to main content

MSSQL Storage

The MSSQL storage implementation provides a production-ready storage solution using Microsoft SQL Server databases.

Installation

npm install @mastra/mssql@latest

Usage

import { MSSQLStore } from "@mastra/mssql";

const storage = new MSSQLStore({
connectionString: process.env.DATABASE_URL,
});

Parameters

connectionString:

string
MSSQL connection string (e.g., mssql://user:pass@host:1433/dbname)

schemaName?:

string
The name of the schema you want the storage to use. Will use the default schema if not provided.

Constructor Examples

You can instantiate MSSQLStore in the following ways:

import { MSSQLStore } from "@mastra/mssql";

// Using a connection string only
const store1 = new MSSQLStore({
connectionString: "mssql://user:password@localhost:1433/mydb",
});

// Using a connection string with a custom schema name
const store2 = new MSSQLStore({
connectionString: "mssql://user:password@localhost:1433/mydb",
schemaName: "custom_schema", // optional
});

// Using individual connection parameters
const store4 = new MSSQLStore({
server: "localhost",
port: 1433,
database: "mydb",
user: "user",
password: "password",
});

// Individual parameters with schemaName
const store5 = new MSSQLStore({
server: "localhost",
port: 1433,
database: "mydb",
user: "user",
password: "password",
schemaName: "custom_schema", // optional
});

Additional Notes

Schema Management

The storage implementation handles schema creation and updates automatically. It creates the following tables:

  • mastra_workflow_snapshot: Stores workflow state and execution data
  • mastra_evals: Stores evaluation results and metadata
  • mastra_threads: Stores conversation threads
  • mastra_messages: Stores individual messages
  • mastra_traces: Stores telemetry and tracing data
  • mastra_scorers: Stores scoring and evaluation data
  • mastra_resources: Stores resource working memory data

Direct Database and Pool Access

MSSQLStore exposes the mssql connection pool as public fields:

store.pool; // mssql connection pool instance

This enables direct queries and custom transaction management. When using these fields:

  • You are responsible for proper connection and transaction handling.
  • Closing the store (store.close()) will destroy the associated connection pool.
  • Direct access bypasses any additional logic or validation provided by MSSQLStore methods.

This approach is intended for advanced scenarios where low-level access is required.