解决"链接服务器 '(null)' 的 OLE DB 访问接口 'STREAM' 返回了对列 '[!BulkInsert].fieldname' 无效的数据"的一种替换方法

  最近在合并两个SQL Server数据库的数据时不幸发生了这种错误,数据只能导入1433条,而其余的上万条数据都无法导入。

  我的环境是SQL Server2008 sp1下,使用SQL Server Integration Services 10.0进行数据导入操作。

  错误信息片段如下:

  * Error 0xc0202009: Data Flow Task 1: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
    An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "链接服务器 '(null)' 的 OLE DB 访问接口 'STREAM' 返回了对列 '[!BulkInsert].Description' 无效的数据。". 

  (SQL Server Import and Export Wizard)

  从网上搜索到的结果里,主要说是在SQL Server启动过程中增加参数4808,但是这种方法没有解决我的情况,于是自己尝试了以下几种方法。

  由于我的数据源与数据目的都是SQL Server,因此选择的余地还是比较大的。第一次是源数据库和目标数据库都使用[SQL Server Native Client 10.0],也就是默认值,但是失败,而后都使用[Microsoft OLE DB Provider for SQL Server],但是又失败了;最后尝试了一次[.Net Framework Data Provider for SqlServer],呵呵,奇迹般地成功了。

  也许这样说不是很清楚,就截个图吧:下图就是在SQL Server导入和导出向导里选择数据源时的截图。我上面提到的都是指这里的选项名称,例如,[.Net Framework Data Provider for SqlServer]等等。

  对于选择[.Net Framework Data Provider for SqlServer]后的设置,就是和我们写的.Net里数据库连接字符串时是一致的,因为每个人要连接的数据库实例不一样,所以填写的项也不会相同。我的设置截图如下,不一定适合你哦,呵呵,仅供参考和学习:


  至于产生此错误的原因,我还不清楚,但是个人感觉应该和OLE DB比较老有关,希望能帮助那些和我遇到同样问题的人。

  同时记录下面的链接,呵呵,以备自己日后所需啦。

  SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred :- Reasons and troubleshooting.

  另外我在虚拟机中使用SQL Server 2000并选择默认数据源进行导入数据时没有发生上述问题。

你可能感兴趣的:(Database)