Oracle
 sql >> база данни >  >> RDS >> Oracle

VS2010 + драйвер на Oracle:ORA-12154:TSN:не може да разреши посочения идентификатор за свързване

Най-доброто решение, което намерих, беше да използвам клиентската библиотека на Oracle Data Access и да включа целия запис на имената на TNS в низа за връзка. Това позволява проектът да бъде лесно публикуван на уеб сървър, ClickOnce и т.н.

Ето стъпките, необходими, за да настроите драйвера на Oracle да работи във вашия проект:

1) Вземете DLL от пакета „Oracle Data Provider for .NET“

Изтеглете инсталационния файл от това местоположение:http://www.oracle. com/technetwork/topics/dotnet/index-085163.html

Продължих и инсталирах пълния 200 MB ODAC с Oracle Developer Tools за Visual Studio, но наистина се нуждаете само от четири DLL от това изтегляне. (Възможно е да успеете да ги извлечете директно от инсталационния пакет, вместо да преминавате през целия процес на инсталиране, или може би едно от по-малките изтегляния включва всички тях.)

2) Референтни DLL файлове във вашия проект

Потърсете в инсталационната директория на Oracle Data Access Client и плъзнете следните четири DLL файлове в корена на вашия проект:

  • Oracle.DataAccess.dll
  • oci.dll
  • oraciicus11.dll
  • OraOps11w.dll

Задайте Копиране в изходна директория свойство на всички файлове с изключение на Oracle.DataAccess.dll за Копиране винаги .

Под Проект --> Добавяне на справка... , щракнете върху Преглед и изберете файла Oracle.DataAccess.dll.

3) Използвайте драйвера с пълен низ за връзка (по избор)

За да не се притеснявам, че файловете с имена на TNS се настройват на машините, на които е внедрено приложението, поставих цялата дефиниция във файла, както е показано от connectionstrings.com . Това прави низа за свързване малко обемист, но премахна много от главоболията на файловете с TNS имена, които изпитвах преди:

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=servername)(PORT=‌​1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));User Id=username;Password=********;

Ето пълния клас, който използвах, за да тествам драйвера:

using System;
using System.Data;
using Oracle.DataAccess.Client;

static class Program
{
    [STAThread]
    static void Main()
    {
        TestOracle();
    }

    private static void TestOracle()
    {
        string connString = 
            "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" + 
            "(HOST=servername)(PORT=‌​1521)))" +
            "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));"+ 
            "User Id=username;Password=********;";
        using (OracleConnection conn = new OracleConnection(connString))
        {
            string sqlSelect = "SELECT * FROM TEST_TABLE";
            using (OracleDataAdapter da = new OracleDataAdapter(sqlSelect, conn))
            {
                var table = new DataTable();
                da.Fill(table);

                if (table.Rows.Count > 1) 
                    Console.WriteLine("Successfully read oracle.");
            }
        }
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL и/или SQL Server алтернативи на SYS_CONTEXT на Oracle

  2. Агрегат на Oracle за свързване на низове със запетая и за писане на персонализирани агрегати

  3. C# Как да анализирам низ от дата в произволен зададен формат на дата на Oracle?

  4. Обновете материализиран изглед на Oracle в Spring Data Repository

  5. Как да се справя с изключение на курсора, когато заявката за избор върне нула записи