Sharepoint 2013 SSIS包:提取Sharepoint查找列时,出现错误';无法在unicode和非unicode字符串数据类型之间转换';

Sharepoint 2013 SSIS包:提取Sharepoint查找列时,出现错误';无法在unicode和非unicode字符串数据类型之间转换';,sharepoint-2013,ssis,Sharepoint 2013,Ssis,我正在处理一个项目,需要提取Sharepoint列表数据并将其导入SQL Server表。我在列表中有几个查找列 我的数据流中的步骤: Sharepoint列表源 派生列 其公式为:子字符串([BusinessUnit]、FINDSTRING([BusinessUnit]、“#”,1)+1、LEN([BusinessUnit])-FINDSTRING([BusinessUnit]、“#”,1)) 数据转换 OLE DB目的地 但我仍然会遇到一个错误,即无法在unicode和非unicode字符

我正在处理一个项目,需要提取Sharepoint列表数据并将其导入SQL Server表。我在列表中有几个查找列

我的数据流中的步骤:

  • Sharepoint列表源
  • 派生列
  • 其公式为:子字符串([BusinessUnit]、FINDSTRING([BusinessUnit]、“#”,1)+1、LEN([BusinessUnit])-FINDSTRING([BusinessUnit]、“#”,1))

  • 数据转换
  • OLE DB目的地
  • 但我仍然会遇到一个错误,即无法在unicode和非unicode字符串数据类型之间进行转换

    我不确定我在这里错过了什么

    在数据转换中,查找列的数据类型应该是什么

    请在这里提出建议

    谢谢,, Mittal.

    关于您的问题:“…数据类型应该是什么…?”您只需要始终确保每个“箭头”上的数据类型一致,并且数据类型与其对象一致

    例如,如果您的Sharepoint输入源是文本文件,则可以使用记事本检查它是ASCII文件还是Unicode文件:在记事本中打开该文件,执行“另存为”,然后查看“保存”按钮旁边的
    编码设置。编码是
    ANSI
    (是ASCII,在SSIS中应该是
    DT_STR
    ),还是编码是
    Unicode
    Unicode大端码
    、或
    UTF-8
    (在SSIS中都是Unicode,或
    DT_WSTR

    例如,如果OLE DB输出目标是SQL Server表,则可以检查所有字符串列是否都是
    VARCHAR
    (ASCII或
    DT_STR
    )或
    NVARCHAR
    (Unicode或
    DT_WSTR

    如果您对输入源的编码具有设计控制,或对输出目标的列具有设计控制,则最简单的选择可能是使它们都匹配:例如,如果您的输入是始终为Unicode的文本文件,则在SQL Server表中查找类型为
    VARCHAR
    的任何列,并将其更改为
    NVARCHAR
    。然后,您将重新创建SSIS数据流任务,所有字符串列类型为
    DT_WSTR

    但是,如果您没有设计控制,并且任何列的起始类型(在Sharepoint中)与同一列的最终类型(在SQL Server中)不同,那么我建议在数据转换中更改该类型。例如,一个列的类型可以是进入数据转换的
    DT_STR
    (ASCII),但从数据转换出来的
    DT_WSTR
    (Unicode)

    在“框”中而不是在“箭头”中对数据流进行任何类型更改

    ((作为一个旁注,请记住,当您对列及其类型进行更改时,必须在更改框之后双击每个对象,包括每个箭头,以便识别任何元数据更改。请考虑我对此问题的答案:))

    有关SSI中所有数据类型的列表,请参阅本联机丛书(BOL)参考:


    BOL页面顶部可能显示SQL Server 2014,您可能希望单击“其他版本”,将其更改为您的SQL Server版本

    嗨,道格,谢谢你的描述性回答。我能够将列数据转换为非unicode文本。我对查找栏有其他问题,并将问题发布在此链接上。如果可能的话,你能检查一下吗?谢谢你-米塔尔。@MittalPatel我很高兴你已经得到了答案。有趣的是:你的问题的示例数据与同一天另一个问题的示例数据完全匹配,这让我想知道这是否是一个家庭作业;)。。。。无论如何,仅供参考,我实际上更喜欢在导入后在T-SQL中执行复杂的任务,例如一对多行拆分,而不是使用脚本组件。