Visual Studio 2017使用ODT 连接Oracle 数据库出现异常
2019.5.23 更新
突然发现原来是是sqlnet.ora在搞鬼,只要将SQLNET.AUTHENTICATION_SERVICES=(nts) 改为 SQLNET.AUTHENTICATION_SERVICES=(NONE) 就可以了。

百度关于SQLNET.ORA 的有关信息
ODT对该异常的提示信息又不恰当,导致我们在原地打转。正确的异常的应该是提示“Credential retrieval failed”。
错误截图

同事没有遇到这个问题,很有可能一个原因就是他的ODT不是读取ODT安装后的SQLNET.ORA文件,而是定位到了Oracle Home下的文件,因为他们要运行PL/SQL ,所以先装Oracle Home,之后再安装ODT。 我是直接装ODT没有搞任何东西。
原文
昨天在使用VS通过ODT连接数据库扒模型的时候发现了这个异常。经过测试,发现这个异常是因为 ODT 插件无法识别服务名中的“.”字符 导致的,比如“orcl.asian.com”。其他不包含“.”字符的服务名皆可正常连接。做了下简单的回溯,一个月前的ODT插件是正常工作的,期间数据库未作任何改动。唯独Windows 和Visual Studio更新过。随后测试了相同版本的Visual Studio(Visual Studio Community 2017 15.9.12)在Windows 7 下的连接测试,结果是连接成功。
异常截图

Google 中有一些相关的文章,大致围绕在几个点上:
- 认为问题出在OCI兼容性。
- http://www.cnblogs.com/psforever/p/3929064.html
- https://blog.csdn.net/qq_34968660/article/details/74834568
认为问题出在Oracle Home。
认为问题出在Microsoft Account 。
第三种方式停用MS Account 能解决这个问题。自己也顺便用虚拟机做了不同版本的测试,结果不太理想,所有登录的Windows 10都失败了。但同事的1803装183000的ODT就算登录也是能够正常连接,对比不同点有几个:一是VS 2017的版本并非是我测试时的15.9而是Older Version。二是Windows 使用Administrator 登录MS账户。

使用ODAC替换ODT也可以解决掉这个异常,好奇登录MS 账户之后,Windows 到底进行了些什么操作?一个托管组件为什么会受到MS 账户的影响呢?为什么ODT不行,使用ODAC就可以?先Mark起来,后面有时间再细查。
总结
ODT插件是在Visual Studio一启动就加载进内存了,所以,如果是在登录MS 账户之前打开VS,那么ODT仍然是正常工作的,直到你关闭VS。解决这个异常除了上面说的切换MS Account 外,还有下面几个。
1. 使用Oracle Data Access Components(可能会遇到Credential retrieval failed的问题,见Credential retrieval failed 的解决方法)。
2. 更换Windows 版本。
Visual Studio 2017使用ODT 连接Oracle 数据库出现异常的更多相关文章
- Visual Studio 2017 for Mac 连接Git的奇怪问题
VS for Mac连接Git的时候遇到个奇怪的问题, 无法将已存在的解决方案绑定并提交到GitHub中去. VS版本7.3.3 问题复现 以为自己操作有问题, 新建项目测试一下, 新建的时候没有勾选 ...
- 在Visual Studio 2017中,.NET(C#)通过Oracle.ManagedDataAccess来连接Oracle数据库
C#如何通过Oracle.ManagedDataAccess来连接Oracle数据库 1.先创建一个项目,鼠标右击项目中的引用,再点击管理NuGet程序包(也可以先下载dll文件,再选添加引用),在搜 ...
- Visual Studio 2017 连接Oracle
VS 2017 连接 Oracle 12 因为Visual Studio自带的数据文件已经不能支持超过10g以上的了,所以需要另外 下载插件 本机环境 宿主机的环境:win7,Visual Studi ...
- visual studio 2017使用NHibernate4.0连接oracle11g数据库
之前一直是公司用NHibernate2.1来做项目,连接oracle 10g的数据库,配置NHibernate的东西都是以前的同事做好了的,也怪自己太懒了,没尝试过配置这个东西,虽然一直在使用NHib ...
- 64 位win 7或windows 8下的visual studio不能连接Oracle数据库调试网站的问题
在64 位win 7或windows 8系统下,visual studio直接F5运行网站调试,你会发现不能连接Oracle数据库,会报一个“ORA-06413: Connection not ope ...
- 在Visual studio 2017中使用EF6连接MySQL
在Visual studio 2017中使用EF6连接Mysql ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) ...
- 使用Visual Studio 2017作为Linux C++开发工具
Visual Studio 2017 微软的宇宙第一IDE Visual Studio 2017正式版出来了,地址是:https://www.visualstudio.com/vs/whatsnew/ ...
- Visual Studio 2017 Enterprise (15.3)
版本15.3更新在用户离线下载时更加人性化,包含了进度显示,下载出错可以输入R,进行下载的重新尝试,并在当前下载框下继续下载为完成的作业,结合 --layout 参数的离线文件的检查和修复,并且在下载 ...
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)
Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer Advanced Installer :Free for 30 da ...
随机推荐
- 总结了11条,我对Python 装饰器的理解
对于每一个学习 Python 的同学,想必对 @ 符号一定不陌生了,正如你所知, @ 符号是装饰器的语法糖,@符号后面的函数就是我们本文的主角:装饰器. 装饰器放在一个函数开始定义的地方,它就像一顶帽 ...
- mysql 是否走索引问题
问题探讨 : 当一列包含null 值时, is null 和 is not null 查询是否走索引 当用 != 时是否走索引 当用in时是否走索引 结论:当 查询范围比较小时, 以上枚举的都走索 ...
- TOTP算法实现二步验证
概念 TOTP算法(Time-based One-time Password algorithm)是一种从共享密钥和当前时间计算一次性密码的算法. 它已被采纳为Internet工程任务组标准RFC 6 ...
- ubuntu下查看(改变)本地端口开放情况,开启和关闭防火墙
查看开放端口: sudo ufw status 允许80端口开放: sudo ufw allow 允许22端口开放: sudo ufw allow 启动防火墙: sudo ufw enable 重启防 ...
- Android开源日志框架xlog
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/144 xlog的优点 在开发过程中,避免不了要使用日志组件 ...
- 滴滴出行开源项目doraemonkit食用指南
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/94 doraemonkit 功能介绍 一两周前在地铁上刷任 ...
- 真机调试(A valid provisioning profile for this executable was not found.)
这个问题是因为provisioning的问题,因为真机没有加入到账号下面的原因 解决步骤 1.吧identifier复制然后再平开开发中心 2.点击+号添加设备保存 3.在develope中选中保存即 ...
- 【Android】Context的使用
Android开发经常需要使用Context来启动Activity,或者打开SharedPreferences,或者构建一个Dialog.最近老是用到getContext(),getApplicati ...
- [b0006] Spark 2.0.1 伪分布式搭建练手
环境: 已经安装好: hadoop 2.6.4 yarn 参考: [b0001] 伪分布式 hadoop 2.6.4 准备: spark-2.0.1-bin-hadoop2.6.tgz 下载地址: ...
- ms sql事务输出错误
begin try 语句 end trybegin catch --ERROR_NUMBER() 返回错误号. --ERROR_SEVERITY() 返回严重性. --ERROR_STATE() 返回 ...