当前位置: 首页 > 面试题库 >

Oracle数据库TNS关键“数据源”的值长度超过了“ 128”的限制

淳于乐池
2023-03-14
问题内容

因此,我有一个到Oracle数据库的连接字符串,基本上是我直接从sql developer复制了它,然后切掉了空白。

后来我以编程方式添加了用户名和密码。问题是,当我尝试打开SQLConnection对象时。我得到了错误:

The value's length for key 'data source' exceeds it's limit of '128'

我对Oracle
TNS连接的了解不多。我使用此连接字符串是因为当我将其粘贴并测试连接时,它可以在向导中工作。您所看到的基本上是我粘贴TNS名称后Visual
Studio生成的内容。

Data Source="(DESCRIPTION=(ADDRESS= (PROTOCOL=TCP)
(HOST=qprd-scan.website.com)(PORT=3726))(CONNECT_DATA=(SERVER=dedicated 
(SERVICE_NAME=DBprd_developer)))";

此数据源密钥已包含约160个字符。

我在MSDN论坛上正在看这篇文章。

这个家伙基本上说要从数据源中切出一些其他部分,然后将它们放在其他地方。我只是不太确定该怎么做。

关于连接字符串的MSDN并没有真正告诉我太多。

有关连接字符串和配置文件的MSDN也无济于事。

无论如何,如果有要求,我很乐意显示更多来自app.config的代码或内容


问题答案:

您尚未向我们展示用于连接数据库的完整代码,但是从注释到另一个答案,您似乎正在使用OLE
DB。我会避免使用它,尤其是对于数据源来说,它似乎有128个字符的任意限制。

我还要指出的是,您也可以避免按照另一个回答者的建议安装Oracle客户端。我对“即时”客户端没有太多的经验,但是完整的客户端下载量很大,并且不必仅能将C#程序连接到Oracle。

相反,我们可以使用Oracle托管数据访问库。您可以使用NuGet安装它。去做这个:

  • 转到工具>库软件包管理器>软件包管理器控制台,
  • 确保在“默认项目”下拉列表中选择了正确的项目,
  • 进入
    Install-Package odp.net.managed
    

这应该从NuGet中下载该库,并将Oracle.ManagedDataAccess添加到您的项目的References中。

然后,如果为添加using指令Oracle.ManagedDataAccess.Client,则以下代码应与Oracle数据库对话:

string connStr = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname>)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<service_name>)));User Id=<user>;Password=<password>";
Console.WriteLine("Connection string has length " + connStr.Length);
using (var connection = new OracleConnection() { ConnectionString = connStr })
{
    connection.Open();
    OracleCommand command = new OracleCommand("SELECT * FROM DUAL", connection);
    using (OracleDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            Console.WriteLine(reader.GetString(0));
        }
    }
}


 类似资料:
  • 本文向大家介绍oracle 实际值超过数据库某个字段指定长度报错解决,包括了oracle 实际值超过数据库某个字段指定长度报错解决的使用技巧和注意事项,需要的朋友参考一下 ORA-01438: value larger than specified precision allowed for this column 实际值的长度大于了数据库里某个字段允许的最大长度导致的插入失败问题。 常见的场景是

  • 我有一个h2数据库文件,文件大小已经增长到5GB。我删除了一些数据以缩小文件的大小。但即使从数据库中删除了一半记录,文件大小仍然保持不变。 我已经尝试了以下所有选项来减少数据库大小,但没有一个对我有用。 我的连接字符串如下所示: 注: 我们正在结清我们已经开始的交易 文件中没有5GB的数据 有人能给我建议一些解决方法或修复方法来减少我的数据库大小吗

  • 本文向大家介绍Oracle数据库中外键的相关操作整理,包括了Oracle数据库中外键的相关操作整理的使用技巧和注意事项,需要的朋友参考一下 racle使用外键来限制子表中参考的字段值,要求子表中的数据必须在主表中存在。当主表的记录发生变化时导致外键参考唯一约束值发生了变化时,Oracle指定了三种动作:默认值(类似于restrict)、delete cascade和delete set null。

  • Sphinx/Coreseek索引的源数据有一些限制,其中最重要的一条是: 所有文档的ID必须是唯一的无符号非零整数(根据Sphinx构造时的选项,可能是32位或64位) 如果不满足这个要求,各种糟糕的情况都可能发生。例如,Sphinx/Coreseek建立索引时可能在突然崩溃,或者由于冲突的文档ID而在索引结果中产生奇怪的结果。也可能,一只重达1000磅的大猩猩最后跳出你的电脑,向你扔臭蛋。我告

  • 我有一个带有一列的oracle数据库表(数据类型-NUMBER)。 该列中存储的数据为1.1, 但在Oracle SQL Developer中,它显示为-1.100000000000000000008881784197001252323389,而当我使用java(JDBC)连接DB时,它也显示相同。

  • 本文向大家介绍如何在Oracle中限制每个会话的数据库资源?,包括了如何在Oracle中限制每个会话的数据库资源?的使用技巧和注意事项,需要的朋友参考一下 问题: 您想限制用户可以在数据库中使用的资源量。 解 为了限制资源,我们可以按照以下步骤操作。 我们可以使用下面的SQL语句在数据库中查看RESOURCE_LIMIT的当前设置。 选择名称,从v $parameter中的值,其中name ='r