问题标签 [oracle-manageddataaccess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - Lightswitch 应用程序在 IIS 上部署时无法找到“Oracle.ManagedDataAccessDTC”
我在 Visual Studio 2013 中创建了一个没有自定义代码的基本 HTML Lightswitch 应用程序。它连接到 Oracle 数据库并在本地运行良好。
我将应用程序部署到带有 IIS 的服务器,并且在导航创建的 url 时加载应用程序,但在应用程序通常显示 Oracle 数据库中的值列表之前,我收到“底层提供程序在 EnlistTransaction 上失败”错误。
我运行堆栈跟踪以找到以下错误。看起来应用程序没有找到 Oracle 数据访问客户端 (Oracle.ManagedDataAccessDTC):
我使用包含 Oracle.ManagedDataAccessDTC 的 ODAC 12c Release 4(12.1.0.2) 安装程序在本地机器上安装了 Oracle 数据访问客户端。
我验证我的机器和服务器安装了相同版本的 Oracle.ManagedDataAccessDTC。
asp.net - .NET 的 ODP 托管提供程序无法加载。找不到服务
当我为使用Oracle.ManagedDataAccess的项目打开 Visual Studio 2015 时,出现错误
w3wp.exe 消息中出现未处理的 Microsoft.NET Framework 异常。
当我查看事件查看器时,我看到了 devenv 的这条消息
.NET 的 ODP 托管提供程序中出现意外错误。无法加载数据提供程序“ODP Managed Provider for .NET”。找不到 {6a61ae9b-cbff-48d1-a377-51ed463b37bc} 服务。
设置
- 操作系统是 Windows 10
- 视觉工作室 2015
- Oracle.ManagedDataAccess NuGet 包 v12.1.24160419
- 解决方案有
- Web API 项目 .NET Framework 4.5.2
- 2个类库项目.NET Framework 4.5.2
- 单元测试项目 .NET Framework 4.5.2
我可以WebAPI
毫无问题地调用我的服务,并且单元测试运行良好,所以当我启动 Visual Studio 时它似乎只是一个问题。这比什么都麻烦。
我发现一些文章提到要检查 Oracle 的 machine.config。ManagedDataAccess
客户端条目,它们确实存在于我的 machine.config Framework 和 Framework64 文件夹中。
以前有人找到解决方案吗?
c# - 使用带有输出参数的实体框架调用 Oracle 存储过程?
我有一个简单的 Oracle 存储过程,它传入三个参数,并有一个输出参数:
我正在尝试使用 Entity Framework 6.1 来取回该OutAssetRegistered
值,但是,在调用后我得到一个空值,SqlQuery
无一例外:
//------------------------------------------------ ------------
我一直在努力让这个工作无济于事,检查了不同的博客,所有其他的 crud 操作都有效,谁能帮助并指导我哪里出错了?
asp.net - Windows 用户名未传递给 Oracle DB?
我正在使用 Oracle ManagedDataAccess 驱动程序从 .NET Web 应用程序访问数据库。当以 Windows 用户 x 在 IIS Express 下本地运行它时,这工作正常,但是当我将我的站点发布到另一个使用 IIS 的服务器时,我得到错误
ORA-01017: 用户名/密码无效;登录被拒绝
我查看了从 Oracle 进行的尝试登录,如此处所述。从 IIS 成功登录的地方,我可以看到列出的 Windows 用户名 OPS$(USERNAME)。
有趣的是,在 IIS 登录不成功的地方,我看到传递了错误的用户名 - 用户名 = OPS$(NAME_OF_MY_WEB_APPLICATION)。我不知道从哪里得到将应用程序名称替换为用户名的想法。
我的连接字符串对于两种环境都是相同的: User ID=/ ;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP))(HOST=...(PORT=1521)(CONNECT_DATA=(SERVICE_NAME=... )));
c# - 执行与 Oracle 的连接时,“安全包中没有可用的凭据”
在上次 Windows 更新后,执行与 Oracle 数据库的连接的测试开始失败,并出现 AuthenticationException。下面提供了消息和堆栈跟踪:
从 VS Test Runner 或从命令行使用 mstest 运行测试时会引发异常。Visual Studio 中的 Oracle 数据库工具会引发相同的异常。
在应用程序中使用 Oracle ManagedDataAccess 提供程序。包版本为 12.1.2400。
操作系统:Windows 10 Pro x64
本地发布到 IIS 的应用程序运行良好。数据库连接没有任何问题。
有人知道如何解决这个问题吗?
提前致谢!
.net - 如何使用带有实体框架 6 的 TNS 别名连接到 Oracle DB?
在我的设置中,我有一个使用 Visual Studio 2015 构建的 .NET 应用程序,试图使用 Entity Framework 6 访问 Oracle 12c 数据库上的数据。
这是我为实现这一目标所做的事情:
- 我在 oracle.com上遵循了有关如何使用 nuget 安装官方 Oracle ODP.NET、托管实体框架驱动程序及其依赖项的教程。
- 我确保可以找到 tnsnames.ora 和 sqlnet.ora。(环境变量TNS_ADMIN配置正确)
- 我为 oracle 驱动程序启用了跟踪日志记录,以查看此处实际发生的情况。
- 我创建了一个映射一些实体的 EDMX 文件(这已经需要下面描述的解决方法)
这是我的 App.config 的样子(引入换行符以提高可读性):
尝试访问数据库时失败并出现异常:
"ORA-12533: Netzwerksession: Syntaxfehler bei Verbindungstransportadresse"
根据oracle docs翻译为
“ORA-12533: TNS: 非法地址参数”
跟踪日志显示 tnsnames.ora 已正确解析。
当使用 IP 地址和端口而不是 TNS 名称时,连接工作正常。但是由于 tnsnames.ora 由我们公司的数据库管理员管理,因此无法使用 IP 地址来寻址服务器。
我还应该注意,旧驱动程序(例如 Oracle.DataAccess.dll)使用此设置访问数据库没有问题。
编辑:这是我现在使用的 tnsnames.ora 文件:
我在这里做错了什么?
注意:有类似的问题。但是,在那种情况下有帮助的解决方案在这里没有帮助,并且遇到的异常与这里遇到的不同:
c# - C#调用替换后Oracle包无效
我假设我在如何从 C# 运行 SQL 脚本方面做错了,但是在互联网上进行了大量搜索之后,我仍然不知道出了什么问题......
我在通过 C# 加载 Oracle 包和包体时遇到问题。当我通过脚本在 SQL*PLUS 中加载包时,随后对脚本中函数的调用正常工作。当我从 C# 调用它时,它也可以工作。但是,当我从 C# 加载相同的脚本时,脚本的运行似乎可以正常运行,但随后对包函数的调用(来自 C# 和 SQL*PLUS)失败并出现 PLS-00905 错误(“object ANON.MY_PKG is无效的”)。
SQL 脚本(“simple.sql”)的内容是:
在 SQL*PLUS 中运行它可以正常工作...
然后在 C# 程序中调用该函数(作为 SQL*PLUS 中使用的同一 Oracle 用户)可以正常工作,直到在程序中重新运行 SQL 脚本。
重新加载(“loadMyPackage”)后它会出错。具体来说:
如何让 C# 正确运行脚本?
更新: 根据反馈,我将 SQL 脚本分成两部分。第一部分(“simple_A.sql”)现在是:
第二部分(“simple_B.sql”)是:
在此之后,更改,我通过以下方式验证它在 SQL*PLUS 中仍然有效:
然后我通过以下更改更新 C# 代码以使用这两个脚本:
但是,我仍然遇到同样的错误。具体来说,现在的输出如下:
更新 #2: 根据贾斯汀的评论,我将我的 sql 脚本拆分为两个单独的文件,并从中删除了“/”字符。他们现在是:
简单_A.sql:
simple_B.sql
通过这些更改以及第一次更新中的更改,代码可以正常工作。
在让代码正常工作后,我根据 Justin 的另一条评论添加了一个额外的位,这是一种识别错误原因的方法。具体来说,我添加了一个 printErrors 函数,并在我的 C# 代码中添加了对它的调用。对代码的添加和修改如下:
添加 printErrors 代码后,错误的原因就很容易看到了。第一次更新的错误 SQL 版本会产生以下输出:
[注意:上述错误信息来自最终代码,当给定有错误的 sql 脚本时。sql 脚本的最终版本没有错误。]
因此,这段代码不仅开始工作,而且现在能够在失败的情况下提供描述性错误信息。
c# - 在 C# 中使用实体框架读取 Oracle 数据连接
我有 Oracle 数据库 11g,我想使用实体框架从中读取数据。在第一步中,我试图建立数据库连接并在连接时获取状态。但是我收到以下错误;
我的连接字符串如下;
这是我尝试测试代码的地方,我收到错误
基本 DBContext 类
DbContext 类
模型类
在 TNS 工作的其他项目中
从 Visual Studio 中的数据属性复制连接字符串,我使用 .NET Framework Data Provider for Oracle
c# - 在数据库中更新 Oracle TIMESTAMP(0) WITH TIME ZONE 值的正确方法
我正在尝试更新具有 type 列的表TIMESTAMP(0) WITH TIMEZONE
。
我尝试了几种方法都没有成功,因为TIMESTAMP
写入数据库的方式没有偏移格式,例如-05:00
美国东部时间。它被保存AMERICA/NEW_YORK
为时区,这会导致无法正确处理此问题的另一个应用程序出现问题。
当前的:28-NOV-16 10.51.43.000000000 AM AMERICA/NEW_YORK
期望:28-NOV-16 10.51.43.000000000 AM -05:00
这里的许多帖子主要是在从数据库中检索数据时对其进行格式化;其他示例使用 SqlPlus 进行描述,而不是在 C# 中。
我也尝试过modified_date=to_timestamp(:modified_date, 'MM/DD/YYYY HH:mi:ss')
,但这会产生异常,因为时区格式不正确。
在 C# 中完成此任务的正确方法是什么?日期/时间戳列是否应该始终使用字符串转换来写入?