conexão OracleClient + TNSless com .NET
-
18-09-2019 - |
Pergunta
Estamos usando System.Data.OracleClient e as classes base abstratas DbConnection, DbCommand (etc) para se conectar ao Oracle.
A conexão funciona bem em nossas fases de desenvolvimento. Durante encenação encontramos o erro ORA-12514: TNS:. Ouvinte não sabe atualmente de serviço solicitado no descritor de conexão
Nosso objetivo era conectar sem uma entrada TNS, e fornecendo todas as informações relevantes na cadeia de conexão (www.connectionstrings.com/oracle#19)
Eu posso confirmar que o SQL mais vai ligar para o esquema desejado do servidor de teste (o ouvinte está ouvindo). A entrada TNS viciado em SQLPlus corresponde a todos as credenciais da string de consulta que está sendo construído.
SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;
Existe uma instalação no servidor perdemos? Algo que pode ajustar?
Qualquer ajuda é apreciada.
Solução
Um SID não é um nome de serviço. Um nome de serviço é geralmente um nome de banco de dados totalmente qualificado, enquanto que um SID é um identificador curto.
Um nome de serviço pode ser dbname.company.com enquanto o SID é nome_bd. Uma instância pode realmente ter vários nomes de serviços associados a ele, mas apenas um SID.
Mude o seu SERVICE_NAME para SID na sua seqüência de conexão, ou especificar o nome do serviço para a opção SERVICE_NAME.
Outras dicas
Se bem me lembro, eu tive o mesmo problema até que eu ligado ao uso dos prestadores Oracle e OracleDbConnection e OracleDbCommand. Os genéricos nem sempre instanciar o provedor correto em todos os casos.
Microsoft obsoleto o System.Data.OracleClient Veja este artigo: http://blogs.oracle.com/databaseinsider/2009/ 07 / microsoft_deprecates_systemdataoracleclient_net_developers_for_oracle_should_migrate_to_oracle_data_provider_for_net.html
Se o seu cliente Oracle está em versão 10+, você também pode usar EZConnect (que significa método de nomeação Easy Connect ). A seqüência de conexão, então, parecido com este:
"Data Source=MyHost:MyPort/MyServiceName;User ID=myUserName;Password=myPassword"
Combinado com a Oracle Instant Client, torna o uso do Oracle sentir quase profissional! ...