Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

VS2010 + driver Oracle:ORA-12154:TSN:tidak dapat menyelesaikan pengidentifikasi koneksi yang ditentukan

Solusi terbaik yang saya temukan adalah menggunakan perpustakaan Oracle Data Access Client, dan menyertakan seluruh entri nama TNS dalam string koneksi. Ini memungkinkan proyek untuk dipublikasikan dengan mudah ke server web, ClickOnce, dll.

Berikut adalah langkah-langkah yang diperlukan untuk menyiapkan driver Oracle yang berfungsi di proyek Anda:

1) Dapatkan DLL dari paket 'Penyedia Data Oracle untuk .NET'

Unduh file penginstal dari lokasi ini:http://www.Oracle. com/technetwork/topics/dotnet/index-085163.html

Saya melanjutkan dan menginstal ODAC 200 MB penuh dengan Oracle Developer Tools untuk Visual Studio, tetapi Anda hanya benar-benar membutuhkan empat DLL dari unduhan ini. (Anda mungkin dapat mengekstraknya langsung dari paket penginstal, alih-alih melalui seluruh proses penginstalan, atau mungkin salah satu unduhan yang lebih kecil menyertakan semuanya.)

2) Referensi DLL dalam proyek Anda

Cari direktori instalasi Oracle Data Access Client dan seret empat DLL berikut ke root proyek Anda:

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

Setel Salin ke Direktori Keluaran properti semua file kecuali Oracle.DataAccess.dll ke Salin selalu .

Di bawah Proyek --> Tambahkan Referensi... , klik Jelajahi tab dan pilih file Oracle.DataAccess.dll.

3) Gunakan driver dengan string koneksi penuh (opsional)

Agar tidak perlu khawatir tentang file nama TNS yang diatur pada mesin tempat aplikasi digunakan, saya meletakkan seluruh definisi dalam file seperti yang ditunjukkan oleh connectionstrings.com . Itu membuat string koneksi sedikit besar, tetapi menghapus banyak sakit kepala file TNS Names yang saya alami sebelumnya:

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

Inilah kelas lengkap yang saya gunakan untuk menguji driver:

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. BadImageFormatException. Ini akan terjadi ketika berjalan dalam mode 64 bit dengan komponen klien Oracle 32 bit diinstal

  2. Perbarui dengan grup oleh

  3. Oracle SQL - Kueri 2 tabel berdasarkan kunci asingnya

  4. Oracle SQL- Tandai catatan berdasarkan tanggal catatan vs riwayat

  5. Ubah komponen zona waktu TIMESTAMP WITH TIMEZONE di Oracle