C# Informix选择首先返回较少的行

C# Informix选择首先返回较少的行,c#,odbc,informix,C#,Odbc,Informix,我正在开发一个导入应用程序,从Informix数据库中检索大约100万条记录,并将其批量插入MSSQL数据库。查询很简单:选择*FROM。为了从Informix获取数据,我使用ODBC读取器,在执行命令后,我将其直接传递给SQLBulkInsert 问题在于:有时会检索所有数据。然而,有时读卡器最多只能检索到记录181,而当这个问题发生时,它总是以这个记录为准。因此,我选择了SKIP 180 FIRST 2*FROM来检查这些记录的数据是否损坏或有任何问题,但数据似乎没有问题。我还延长了连接超时

我正在开发一个导入应用程序,从Informix数据库中检索大约100万条记录,并将其批量插入MSSQL数据库。查询很简单:选择*FROM。为了从Informix获取数据,我使用ODBC读取器,在执行命令后,我将其直接传递给SQLBulkInsert

问题在于:有时会检索所有数据。然而,有时读卡器最多只能检索到记录181,而当这个问题发生时,它总是以这个记录为准。因此,我选择了SKIP 180 FIRST 2*FROM来检查这些记录的数据是否损坏或有任何问题,但数据似乎没有问题。我还延长了连接超时时间,即使这在连接打开后没有直接影响。这是一个非常恼人的问题,因为它只是偶尔发生,而且总是182条记录会停止整个检索过程

还有其他人有过类似的问题吗?或者有人知道是什么导致了这一切吗

这是我用来通过ODBC检索数据的大纲代码:

            OdbcCommand cmd = _conn.CreateCommand();
            cmd.CommandText = //sql statement;
            OdbcDataReader reader = cmd.ExecuteReader();
            return reader;

在某些情况下可能是这样。问题可能会发生,尤其是当您从“视图”中选择以及从“加入”中选择时。原因是:不同的访问路径可能无法保证数据的顺序。强烈建议对视图执行非常基本的查询,如select*from WITH where子句、first、skip等。

在某些情况下可能是这样。问题可能会发生,尤其是当您从“视图”中选择以及从“加入”中选择时。原因是:不同的访问路径可能无法保证数据的顺序。强烈建议对视图执行非常基本的查询,如select*from WITH where子句、first、skip等。

参见上文。然而,我认为这是一个来自Informix数据库本身或者与Informix的连接的问题。代码中没有记录/捕获任何异常-读取器有时只是返回181条记录,或者您提到的所有请求数据在主题中首先选择,但在检查中仅引用它。您害羞地隐藏为注释的SQL语句是什么?如果它列出了许多列,您可以省略其中的大部分。这种不稳定的行为是不受欢迎的,不管是否有童车。哪个版本的Informix数据库?它运行在哪个平台o/s、版本上?哪个ODBC驱动程序?可能是记录182中有数据转换错误吗?@JonathanLeffler显然,我指定了要在SELECT语句中返回的必要列。我尝试连接的Informix数据库是v10。我尝试使用Informix ODBC驱动程序64位和本机驱动程序64位;这个问题仍然存在。我注意到的是,在与服务器断开连接一段时间后,此问题经常会发生。@Frank我在计算机上执行了SELECT SKIP 181 FIRST 1以获取记录182,但数据似乎很好-是的“FIRST”总是返回相同的记录,而不仅仅是任何随机记录。请参见上文。然而,我认为这是一个来自Informix数据库本身或者与Informix的连接的问题。代码中没有记录/捕获任何异常-读取器有时只是返回181条记录,或者您提到的所有请求数据在主题中首先选择,但在检查中仅引用它。您害羞地隐藏为注释的SQL语句是什么?如果它列出了许多列,您可以省略其中的大部分。这种不稳定的行为是不受欢迎的,不管是否有童车。哪个版本的Informix数据库?它运行在哪个平台o/s、版本上?哪个ODBC驱动程序?可能是记录182中有数据转换错误吗?@JonathanLeffler显然,我指定了要在SELECT语句中返回的必要列。我尝试连接的Informix数据库是v10。我尝试使用Informix ODBC驱动程序64位和本机驱动程序64位;这个问题仍然存在。我注意到的是,在与服务器断开连接一段时间后,此问题经常会发生。@Frank我在计算机上执行了SELECT SKIP 181 FIRST 1以获取记录182,但数据似乎很好-是的“FIRST”总是返回相同的记录,而不仅仅是任何随机记录。