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 como señaló Anshul, el enfoque de expresión-en-campo-credencial no puede cambiar entre múltiples credenciales — para ese caso la solución alternativa es un nodo Code con el paquete mssql, host/user/pass vienen directamente de $json así que cada solicitud abre su propia conexión:

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 tiene que estar configurado en tu entorno n8n, sino la solicitud require falla.

@achamm solo una pregunta sobre esto.

¿Realmente podemos ‘require’ paquetes y el nodo Code los traerá automáticamente antes de ejecutarse? Pensé que teníamos que instalarlos de antemano en el env del host o en la imagen docker.

Suponiendo que la variable .env está configurada para permitir todos los pkgs externos.

(de todos modos, @jw_sistemas si necesitas ayuda para agregar paquetes personalizados a tu instancia de n8n solo avísame aquí)