我正在尝试创建一个Azure函数来连接和查询本地Oracle-DB。我看不到服务器上安装了Oracle客户端或ODBC驱动程序来处理此问题。
有什么使用JS或Python的解决方案吗?
我尝试使用node-odbc驱动程序,但服务器缺少Oracle客户端。
发布于 2019-05-27 18:27:28
部分回答连接到本地服务,如从Azure函数连接到Oracle-db,有一个现有的SO线程How to Azure function configure for Site-to-Site Connectivity?已经回答了它,你可以参考一下。因此,首先,您必须确保对内部部署服务器的网络访问可用。
如果要通过odbc查询oracle数据库,必须在客户端安装oracle odbc驱动程序。然而,oracle odbc驱动程序是一个商业组件,您需要为获得它付费,并在Azure函数中手动安装它。因此,即使你想使用JS或Python来连接它,我认为使用Java和Oracle jdbc驱动程序是Azure Functions中连接Oracle DB的更好的解决方案,以避免额外的安装。
我认为的另一种方式是在您的本地服务器上部署一个REST API应用程序作为代理,使用JS或Python处理来自Azure函数的查询请求,以帮助连接Oracle DB。
发布于 2021-01-25 12:00:19
使用Linux基础镜像创建代码并将其作为自定义Docker容器部署到Azure函数。在自定义映像中安装Oracle客户端库。请查看我的主题博客:https://www.ravitella.com/azure-function-container/
发布于 2019-05-27 23:39:38
您将需要建立混合连接。请参阅https://docs.microsoft.com/en-us/azure/app-service/app-service-hybrid-connections
然后,您可以引用此线程来建立上下文:
对于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();示例代码
https://stackoverflow.com/questions/56322812
复制相似问题