Aller au contenu principal

Stockage MSSQL

L’implémentation du stockage MSSQL fournit une solution prête pour la production qui utilise des bases de données Microsoft SQL Server.

Installation
Lien direct vers Installation

npm install @mastra/mssql@latest

Utilisation
Lien direct vers Utilisation

import { MSSQLStore } from '@mastra/mssql'

const storage = new MSSQLStore({
id: 'mssql-storage',
connectionString: process.env.DATABASE_URL,
})

Paramètres
Lien direct vers Paramètres

connectionString:

string
Chaîne de connexion MSSQL (par exemple, Server=localhost,1433;Database=mydb;User Id=sa;Password=password;Encrypt=true;TrustServerCertificate=true)

schemaName?:

string
Nom du schéma que le stockage doit utiliser. Si cette valeur n’est pas fournie, le schéma par défaut est utilisé.

Exemples de constructeur
Lien direct vers Exemples de constructeur

Vous pouvez instancier MSSQLStore de plusieurs façons :

import { MSSQLStore } from '@mastra/mssql'

// Using a connection string only
const store1 = new MSSQLStore({
id: 'mssql-storage-1',
connectionString:
'Server=localhost,1433;Database=mydb;User Id=sa;Password=password;Encrypt=true;TrustServerCertificate=true',
})

// Using a connection string with a custom schema name
const store2 = new MSSQLStore({
id: 'mssql-storage-2',
connectionString:
'Server=localhost,1433;Database=mydb;User Id=sa;Password=password;Encrypt=true;TrustServerCertificate=true',
schemaName: 'custom_schema', // optional
})

// Using individual connection parameters
const store4 = new MSSQLStore({
id: 'mssql-storage-3',
server: 'localhost',
port: 1433,
database: 'mydb',
user: 'user',
password: 'password',
})

// Individual parameters with schemaName
const store5 = new MSSQLStore({
id: 'mssql-storage-4',
server: 'localhost',
port: 1433,
database: 'mydb',
user: 'user',
password: 'password',
schemaName: 'custom_schema', // optional
})

Remarques supplémentaires
Lien direct vers Remarques supplémentaires

Gestion des schémas
Lien direct vers Gestion des schémas

L’implémentation du stockage gère automatiquement la création et la mise à jour des schémas. Elle crée les tables suivantes :

  • mastra_workflow_snapshot : stocke l’état des Workflows et les données d’exécution
  • mastra_evals : stocke les résultats des évaluations et les métadonnées
  • mastra_threads : stocke les fils de conversation
  • mastra_messages : stocke les messages individuels
  • mastra_traces : stocke les données de télémétrie et de tracing
  • mastra_scorers : stocke les données de notation et d’évaluation
  • mastra_resources : stocke les données de mémoire de travail des ressources

Initialisation
Lien direct vers Initialisation

Lorsque vous transmettez le stockage à la classe Mastra, init() est appelée automatiquement avant toute opération de stockage :

import { Mastra } from '@mastra/core'
import { MSSQLStore } from '@mastra/mssql'

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

const mastra = new Mastra({
storage, // init() is called automatically
})

Si vous utilisez directement le stockage sans Mastra, vous devez appeler explicitement init() pour créer les tables :

import { MSSQLStore } from '@mastra/mssql'

const storage = new MSSQLStore({
id: 'mssql-storage',
connectionString: process.env.DATABASE_URL,
})

// Required when using storage directly
await storage.init()

// Access domain-specific stores via getStore()
const memoryStore = await storage.getStore('memory')
const thread = await memoryStore?.getThreadById({ threadId: '...' })
attention

Si init() n’est pas appelée, les tables ne sont pas créées et les opérations de stockage échouent silencieusement ou lèvent des erreurs.

Accès direct à la base de données et au pool
Lien direct vers Accès direct à la base de données et au pool

MSSQLStore expose le pool de connexions mssql sous forme de champ public :

store.pool // mssql connection pool instance

Il permet d’effectuer des requêtes directes et de gérer des transactions personnalisées. Lorsque vous utilisez ce champ :

  • Vous êtes responsable de la bonne gestion des connexions et des transactions.
  • La fermeture du stockage (store.close()) détruit le pool de connexions associé.
  • L’accès direct contourne toute logique ou validation supplémentaire fournie par les méthodes de MSSQLStore.

Cette approche est destinée aux scénarios avancés qui nécessitent un accès de bas niveau.