我的托管ODP.net webapp在本地工作,但是当将它部署到服务器时,它会失败,出现错误:
“TNS:侦听器目前不知道连接描述符中请求的服务”
环顾四周,这似乎是因为它无法访问tnsnames.ora文件。
我尝试了以下几点,但没有成功:
在服务器上,试图运行tnsping会产生错误TNS-03502:找不到消息3502;没有product=NETWORK、facility=TNS的消息文件。
我遗漏了什么?
发布于 2013-04-08 19:46:10
尝试使用不依赖于连接串的tnsnames.ora,例如:
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;发布于 2015-07-09 15:34:35
只需将tns_admin路径添加到web.config或app.config,并将其指向有tnsnames.ora文件的文件夹就可以了。
<oracle.manageddataaccess.client>
<version number="*">
<settings>
<setting name="tns_admin" value="E:\oracle11\product\11.2.0\client_1\network\admin" />
</settings>
</version>
</oracle.manageddataaccess.client>发布于 2018-03-13 22:45:21
我是在追求同样的东西,我最终在TNSNAMES文件上做了一些调整。一旦对文件执行了正则表达式,就应该能够将其引入Powershell或C#中的对象中。
param($tnsnamesPath = 'c:\tns\tnsnames.ora',$username = 'user',$password = 'gotmehere', $connectionName = 'mustard', $query = 'Select sysdate from dual')
$simplySQLPath = (Get-Module -ListAvailable simplySQL).ModuleBase
if($simplySQLPath -and (test-path $tnsnamesPath -PathType Leaf) -and (![string]::IsNullOrEmpty($node)))
{
[System.Reflection.Assembly]::LoadFile("$simplySQLPath\DataReaderToPSObject.dll") | OUT-NULL
Import-Module SimplySql -Force
$parsedTN = (get-content $tnsnamesPath -raw) -replace '(.*\=.*|\n.*\=)(.*|\n.*)\(DESCRIPTION*.\=' ,'Data Source = (DESCRIPTION ='
$splitTN = $parsedTN -split '(?=.*Data Source = \(DESCRIPTION \=)'
$tnsnames = $splitTN |?{$_ -like "*$connectionName*"}
$connstring = "$tnsnames;User Id=$username;Password=$password"
try
{
Open-OracleConnection -ConnectionString $connstring -ConnectionName $connectionName
$result = Invoke-SqlQuery -ConnectionName $connectionName -Query "$SQLQuery"
Close-SqlConnection -ConnectionName $connectionName
}
catch
{
$_.exception
}
}
Else
{
if(!(test-path $tnsnamesPath -PathType Leaf -ErrorAction Ignore))
{
Throw "Check TNSnamesPath: $tnsNamesPath"
}
else
{
Throw "Exeception SIMPLYSQL not found in module Path $($env:PSModulePath)"
}
}
$result我在这里写了关于这段代码的博客:https://powershellposse.com/2018/03/13/tnsnames-file-parsing/
https://stackoverflow.com/questions/15275376
复制相似问题