Credentials dynamically

Is there a way to pass database credentials dynamically when connecting to Microsoft SQL Server? Each request to the project can come from a different client, and I have too many clients to put them all in a map. I already receive the database credentials (for SQL Server) with each request — I just need to know how to pass them dynamically to establish the connection.

Hi @jw_sistemas Welcome!
Yes, you can use expressions in the credentials field, just swtich your fields to expression mode and then enter your values:

{{ $json.db_host }}
{{ $json.db_user }}
{{ $json.db_password }}

somewhat like that i suppose, and as workflow data is divided into runs so there would not be any mismatch, HOWEVER, this works for populating fields with content dynamically, not switching between multiple credentials as that is not supported currently.

@jw_sistemas comme l’a noté Anshul, son approche expression-in-cred-field ne peut pas basculer entre plusieurs credentials — pour ce cas, la solution de contournement est un nœud Code avec le package mssql, les paramètres host/user/pass proviennent directement de $json afin que chaque requête ouvre sa propre connexion :

const sql = require('mssql');
const c = $input.first().json;
await sql.connect({
  server: c.host,
  user: c.user,
  password: c.pass,
  database: c.db
});
const r = await sql.query(c.query);
return r.recordset;

NODE_FUNCTION_ALLOW_EXTERNAL=mssql doit être défini sur votre environnement n8n, sinon le require échoue.

@achamm juste une question à ce sujet.

Pouvons-nous vraiment « require » des packages et le nœud Code les récupérera automatiquement avant l’exécution ? Je pensais que nous devions les installer au préalable dans l’environnement hôte ou dans l’image Docker ?

En supposant que la variable .env soit définie pour autoriser tous les packages externes.

(de toute façon, @jw_sistemas si vous avez besoin d’aide pour ajouter des packages personnalisés à votre instance n8n, n’hésitez pas à demander ici)