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.
InstallationLien direct vers Installation
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/mssql@latest
pnpm add @mastra/mssql@latest
yarn add @mastra/mssql@latest
bun add @mastra/mssql@latest
UtilisationLien direct vers Utilisation
import { MSSQLStore } from '@mastra/mssql'
const storage = new MSSQLStore({
id: 'mssql-storage',
connectionString: process.env.DATABASE_URL,
})
ParamètresLien direct vers Paramètres
connectionString:
schemaName?:
Exemples de constructeurLien 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émentairesLien direct vers Remarques supplémentaires
Gestion des schémasLien 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écutionmastra_evals: stocke les résultats des évaluations et les métadonnéesmastra_threads: stocke les fils de conversationmastra_messages: stocke les messages individuelsmastra_traces: stocke les données de télémétrie et de tracingmastra_scorers: stocke les données de notation et d’évaluationmastra_resources: stocke les données de mémoire de travail des ressources
InitialisationLien 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: '...' })
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 poolLien 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.