【问题标题】:OracleBulkCopy ORA-26041 Error Leap Year in 1932OracleBulkCopy ORA-26041 错误闰年在 1932 年
【发布时间】:2014-12-23 17:01:37
【问题描述】:

从包含出生日期的 SQL Server 查询加载数据。其中之一恰好是 1932 年 2 月 29 日。通过OracleBulkCopy 将数据导入Oracle 服务器时,我收到ORA-26041 错误。除 1932 年之外的所有其他日期(包括闰年日期)都可以使用。切换到插入语句而不是 OracleBulkCopy 可以正常工作。直接来自 DataTable 的日期值 = '2/29/1932 12:00:00 AM'。该字段在 SQL Server 和 Oracle 中都具有 Date 数据类型。

使用Oracle.DataAccess 4.121.1.0 + .NET 4.5 x64 + Windows 7 + VS2012

代码:

... 
using (var da = new SqlDataAdapter(queryString, myConnectionString)) {
        da.SelectCommand.CommandTimeout = 0;
        da.AcceptChangesDuringUpdate = true;
        da.FillSchema(myDataset, SchemaType.Source, "MyDataTable");
        da.Fill(myDataset, "MyDataTable");
}

var clientInfo = OracleGlobalization.GetClientInfo();
clientInfo.DateFormat = "MM/DD/YYYY HH:MI:SS AM";
clientInfo.TimeStampFormat = "MM/DD/YYYY HH:MI:SS AM";
clientInfo.Language = "AMERICAN";

OracleGlobalization.SetThreadInfo(clientInfo);

var setDateFormatCommand = new OracleCommand("ALTER SESSION SET NLS_DATE_FORMAT='MM/DD/YYYY HH:MI:SS AM'", objConn);
setDateFormatCommand.ExecuteNonQuery();

var setTimeStampFormatCommand =
        new OracleCommand("ALTER SESSION SET NLS_TIMESTAMP_FORMAT='MM/DD/YYYY HH:MI:SS AM'", objConn);
setTimeStampFormatCommand.ExecuteNonQuery();

var setDateLanguageCommand =
        new OracleCommand("ALTER SESSION SET NLS_DATE_LANGUAGE=AMERICAN", objConn);
setDateLanguageCommand.ExecuteNonQuery();

using (var bulkCopy = new OracleBulkCopy(objConn)) {
        bulkCopy.BulkCopyTimeout = 20000;
        bulkCopy.BatchSize = 100000;
        bulkCopy.DestinationTableName = destinationTableName;
        bulkCopy.WriteToServer(myDataset.Tables["MyDataTable"]);
}
...

【问题讨论】:

    标签: c# sql-server oracle date


    【解决方案1】:

    安装 ODP.NET 似乎是侥幸。我安装了最新版本的 12.1.0.2.1 32 位和 64 位 ODP.NET,恰好在 2014 年 12 月 23 日发布问题的同一天发布。这解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 2019-12-23
      相关资源
      最近更新 更多