我正在使用:
我尝试安装‘’,并在我的C:\app\ my username\product\11.2.0\client_1\Network\Admin目录中创建了tnsnames.ora和sqlnet.ora文件。
它们看起来是这样的:
# tnsnames.ora
ORATEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbs-oratest)(PORT = 1521))
)
(CONNECT_DATA =
(SID = [ORATEST])
)
)和
# sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (ALL)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)当我尝试使用Oracle数据提供程序来设置一个新连接(或任何其他驱动程序: OLE、ODBC等)时,会出现以下错误:
ORA-12154: TSN:未能解析指定的连接标识符
但是,在没有安装Oracle客户端的计算机上使用OLE驱动程序确实有效:
OleDbConnection conn = new OleDbConnection(
"Provider=MSDAORA;Data Source=ORATEST;" +
"Persist Security Info=True;Password=readonly;User ID=readonlyuser");我做错了什么?是否有关于如何安装基本Oracle驱动程序的在线简单说明?
提前谢谢你!
发布于 2011-10-27 16:14:18
我发现的最佳解决方案是使用Oracle数据访问客户端库,并在连接字符串中包括整个TNS名称条目。这样就可以轻松地将项目发布到web服务器、ClickOnce等。
下面是设置在您的项目中工作的Oracle驱动程序所必需的步骤:
1)从‘OracleDataProviderfor.NET’包获取DLL
从此位置下载安装程序文件:http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
我继续使用Oracle Developer Tools for Visual Studio安装了整整200 MB的ODAC,但是您实际上只需要从这个下载中获得四个DLL。(您可能可以直接从安装程序包中提取它们,而不是完成整个安装过程,或者其中一个较小的下载包含了所有这些程序。)
2)项目中的引用DLL
搜索Oracle数据访问客户端的安装目录,并将以下四个DLL拖到项目的根目录中:
将副本设置为Output 属性,除Oracle.DataAccess.dll外,所有文件都设置为复制,始终是。
在Project --> Add Reference.下,单击Browse选项卡并选择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.");
}
}
}
}发布于 2010-11-19 20:06:16
您应该使用OracleConnection客户端库,然后使用OracleConnection对象。
code/tech/windows/odpnet/howto/connect/index.html
我知道甲骨文对TNS的名字文件很挑剔。我通常都指望DBA能帮我。Server要容易得多.
发布于 2013-02-06 16:06:10
使用本地IIS web服务器而不是(Project WEB)为我做了这个技巧!
12154让我把头发拔出来.网站在VS2008上运行得很好。
致以敬意,
麦克
https://stackoverflow.com/questions/4228739
复制相似问题