0

我正在尝试创建一个 Azure 函数来连接和查询本地 Oracle-DB。我看不到在服务器上安装了 Oracle 客户端或 ODBC 驱动程序来处理这个问题。

有没有使用 JS 或 Python 的解决方案?

我曾尝试使用 node-odbc 驱动程序,但服务器缺少 Oracle 客户端。

4

3 回答 3

1

部分回答从 Azure Functions 连接到 Oracle-db 等本地服务,有一个现有的 SO 线程How to Azure function configure for Site-to-Site Connectivity?已经回答过了,可以参考。因此,首先,您必须确保对本地服务器的网络访问可用。

那么,如果要通过odbc查询oracle数据库,就必须在客户端安装oracle odbc驱动。但是,oracle odbc 驱动程序是一个商业组件,您需要付费才能获得它,并在 Azure Functions 中手动安装它。因此,即使您想使用 JS 或 Python 连接它,我认为使用 Java 和 Oracle jdbc 驱动程序是 Azure Functions 连接 Oracle DB 以避免额外安装的更好解决方案。

我认为的另一种方法是在本地服务器上部署 REST API 应用程序作为代理,以使用 JS 或 Python 处理来自 Azure Functions 的查询请求,以帮助连接 Oracle DB。

于 2019-05-27T10:27:28.090 回答
1

使用 Linux 基础映像创建代码并将其作为自定义 Docker 容器部署到 Azure Functions。在自定义映像中安装 Oracle 客户端库。查看我关于该主题的博客: https ://www.ravitella.com/azure-function-container/

于 2021-01-25T04:00:19.267 回答
0

您将需要建立一个混合连接。请参阅https://docs.microsoft.com/en-us/azure/app-service/app-service-hybrid-connections

然后你可以参考这个线程来建立一个上下文:

https://social.msdn.microsoft.com/Forums/en-US/2434fe10-3219-4625-bdbf-b9e96421230b/entity-framework-with-oracle-and-sql

对于 nodejs 解决方案,我将添加 NPM 并使用 Kudu 使用 node-oracledb 安装它: https ://oracle.github.io/node-oracledb/doc/api.html#getstarted

// myscript.js // 此示例使用 Node 8 的 async/await 语法。

var oracledb = require('oracledb');

var mypw = ...  // set mypw to the hr schema password

async function run() {

  let connection;

  try {
    connection = await oracledb.getConnection(  {
      user          : "hr",
      password      : mypw,
      connectString : "localhost/XEPDB1"
    });

    let result = await connection.execute(
      `SELECT manager_id, department_id, department_name
       FROM departments
       WHERE manager_id = :id`,
      [103],  // bind value for :id
    );
    console.log(result.rows);

  } catch (err) {
    console.error(err);
  } finally {
    if (connection) {
      try {
        await connection.close();
      } catch (err) {
        console.error(err);
      }
    }
  }
}

run();

示例代码

于 2019-05-27T15:39:38.373 回答