我的C#程序其中一个函数用process对象运行了CMD然后通过start命令打开包含sqlplus的bat文件,如果直接运行这一个函数很正常。但是如果先调用另一个包含了OracleConnection对象尝试连接数据库的函数,不管是否连接成功,再调用第一个函数就会提示
Error 6 initializing SQL*Plus
SP2-0067:: Message file sp1.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
其中OracleConnection使用了引用Oracle.DataAccess
后来经过调试发现 因为在调用Oracle.DataAccess引用时,oracle_home被设置成当前.exe文件所在目录
我又不明白了,为什么oracle_home会被修改了
奇怪的是昨天都能正常运行,今天突然这样了
你的C#程序先调用了一个函数来尝试连接Oracle数据库,然后在调用另一个函数时出现了Error 6 initializing SQL*Plus、SP2-0067、SP2-0750等错误。你说这个问题突然出现了,但之前一直正常。你想知道为什么oracle_home会被修改了。
在使用Oracle.DataAccess引用时,oracle_home环境变量会被修改为当前.exe文件所在目录。这可能是因为在使用Oracle.DataAccess引用时有代码将oracle_home设置为当前目录,或者因为在使用Oracle.DataAccess引用时有一些其他因素导致oracle_home被修改了。
我建议你检查你的代码,看看有没有将oracle_home设置为当前目录的代码,并尝试解决这个问题。如果找不到任何相关的代码,你可能需要检查其他可能导致oracle_home被修改的因素,比如其他程序或批处理文件可能会修改oracle_home环境变量。