繁体   English   中英

如何使用 JavaScript 从 Azure Functions 连接到 Microsoft SQL Server?

[英]How to connect to Microsoft SQL Server from Azure Functions using JavaScript?

我们正在使用无服务器框架在 JavaScript 中开发一个函数应用程序并将其部署到 Azure。

我们从 Microsoft SQL Server 2014 数据库中提取数据,在本地环境中使用无服务器离线插件和 VPN 测试功能时一切顺利。 这是建立连接的代码:

const mssql = require("mssql");

const sqlConfig = {
  user: process.env["DB_USER"],
  password: process.env["DB_PWD"],
  database: process.env["DB_NAME"],
  server: process.env["DB_HOST"],
  pool: {
    max: 10,
    min: 0,
    idleTimeoutMillis: 30000,
  },
  options: {
    encrypt: true, // for azure
    trustServerCertificate: false, // change to true for local dev / self-signed certs
  },
};

// pool-manager.js
const pools = new Map();

module.exports = {
  get: (name) => {
    if (!pools.has(name)) {
      const pool = new mssql.ConnectionPool(sqlConfig);
      // automatically remove the pool from the cache if `pool.close()` is called
      const close = pool.close.bind(pool);
      pool.close = (...args) => {
        pools.delete(name);
        return close(...args);
      };
      pools.set(name, pool.connect());
    }
    return pools.get(name);
  },

  closeAll: () =>
    Promise.all(
      Array.from(pools.values()).map((connect) => {
        return connect.then((pool) => pool.close());
      })
    ),
};

我们也在使用 Key Vault 的参考资料,这些资料工作正常。

问题是在部署功能时,从未建立与数据库的连接。 这是我得到的错误:

{
  "code": "ESOCKET",
  "originalError": {
    "code": "ESOCKET"
  },
  "name": "ConnectionError"
}

所以,我的问题是:在 Azure 中必须做什么,或者我们的代码需要改变什么才能允许这种连接?

谢谢

您的 MS SQL 2014 服务器是否托管在本地/在 VNET 后面的 VM 上?

如果是这样,您需要将 Function App 与该虚拟网络集成。 请参阅Microsoft 指南

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM