代码之家  ›  专栏  ›  技术社区  ›  RSolberg

SSIS包故障排除

  •  1
  • RSolberg  · 技术社区  · 16 年前

    我使用的是一个ssis包,它从DB2源中提取数据,运行转换过程(unicode东西),然后将数据存储在SQL表中。根据下面的错误信息,我已经能够确定DB2文件/表中存在某种特殊字符。我不知道如何缩小哪些具体记录有问题。DB2文件中大约有200000条记录,我需要知道是哪个记录专门导致了这个问题。

    有没有一种查询DB2源的方法来查找“特殊字符”?有没有办法让SSIS包显示它失败的记录?

    误差 :2009年7月15日01:32:31.19
    代码 : 0xC020901C
    来源 :导入我的应用数据 细节〔2670〕
    描述 有 输出列“column1”出错 (2710)输出“OLE DB源” 输出”(2680)。列状态 返回的是:“文本被截断或 一个或多个字符在中不匹配 目标代码页。”。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Fred Sobotka    16 年前

    DB2有一个名为hex()的内置函数,它只接受任何类型的表达式,并返回每个字节的十六进制表示形式的varchar。您还可以通过在x'前面加上前缀将任何二进制值指定为文本,例如:x'0123456789abcdef'

    如果问题来自一个单字节字符,您可以通过构建从x'00'到x'ff'的所有单个字符的临时表,并查看在DB2数据的每一行中出现的字符来找到问题。您还可以向实用程序中添加一些代码,用于将数据转换为Unicode,这样它就可以扫描DB2记录中的任何异常。