标签: ssis

为什么SSIS在导入UTF-8平面文件时不识别换行{LF}行分隔符?

我试图使用SSIS将数据从utf-8编码的平面文件导入SQL Server 2008.这就是Notepad ++中行数据的结尾:

在此输入图像描述

我有几个图像显示文件连接管理器的样子:

在此输入图像描述

在此输入图像描述

您可以在文件连接管理器预览中看到数据正确显示.当我尝试导入此数据时,不导入任何行.我收到一条错误消息,指出未找到行分隔符.您可以在文件连接管理器图像中看到标题行分隔符和行分隔符都设置为{LF}.这足以生成正确的预览,所以我迷失了为什么它无法导入.我尝试了许多结果为零的事情:

  • 在SSMS中使用向导导入尝试...相同的结果
  • 尝试使用数据转换,没有影响
  • 尝试将行分隔符设置为(0a),结果相同

[Flat File Source [582]]警告:读取标题行时已到达数据文件的末尾.确保标题行分隔符和要跳过的标题行数是正确的.

感谢您的关注,我非常感谢您提供的任何帮助.

sql-server ssis flat-file utf-8 sql-server-2008

29
推荐指数
1
解决办法
4万
查看次数

SSIS包不想获取临时表的元数据

我有一个SSIS包,其中包含多个流.

每个流程都负责创建一个"临时"表,该表在创建后填满.这些表是全局临时表.

对于另一个表,我添加了一个额外的流程(我没有制作包),其完全如上所述.但是,出于某种原因,程序包在此流程上间歇性地失败,而除了一些表名之外,它与其他程序完全相同.

弹出的错误:

更新 - 插入数据流:错误:SSIS错误代码DTS_E_OLEDBERROR.发生OLE DB错误.错误代码:0x80004005.OLE DB记录可用.来源:"Microsoft SQL Server Native Client 11.0"Hresult:0x80004005描述:"未指定的错误".OLE DB记录可用.来源:"Microsoft SQL Server Native Client 11.0"Hresult:0x80004005描述:"无法确定元数据,因为语句'select*from'## TmpMcsConfigurationDeviceHistory86B34BFD041A430E84CCACE78DA336A1''使用临时表."

创作表达:

"CREATE TABLE " + @[User::TmpMcsConfigurationDeviceHistory]  + " ([RecId] [bigint] NULL,[DataAreaID] [nvarchar](4) COLLATE database_default NULL,[Asset] [bigint] NULL,[Code] [nvarchar](255) COLLATE database_default NULL,[Configuration] [bigint],[StartdateTime] [datetime] NULL,[EndDateTime] [datetime] NULL)
Run Code Online (Sandbox Code Playgroud)

"

解析表达式(=已评估):

CREATE TABLE ##TmpMcsConfigurationDeviceHistory764E56F088DC475C9CC747CC82B9E388 ([RecId] [bigint] NULL,[DataAreaID] [nvarchar](4) COLLATE database_default NULL,[Asset] [bigint] NULL,[Code] [nvarchar](255) COLLATE database_default NULL,[Configuration] [bigint],[StartdateTime] [datetime] NULL,[EndDateTime] [datetime] NULL)
Run Code Online (Sandbox Code Playgroud)

sql sql-server ssis ssis-2012

28
推荐指数
3
解决办法
4万
查看次数

在存储过程中使用SSIS包的优点?

如果我可以使用存储过程执行所需的ETL要求,那么使用SSIS包的任何优点是什么?我的ETL东西并不重要.

我觉得使用旧技术.我喜欢SQL.旧技术不等于过时,因为存储过程不会很快消失.

sql-server ssis

27
推荐指数
4
解决办法
5万
查看次数

SSIS数据流任务依赖于超前阶段的执行

我有一个暂停执行的数据流任务.
流程很简单,对不同的表进行两次查询(两者都有几个连接),然后通过公共id对输出进行排序和合并,为所有记录添加静态列,将行计数保存在用户变量中以供日后使用使用并最终插入到另一个DB上的表中.我们正在使用OLE DB源和目标.源是MSSQL 2000,目标是MSSQL 2012

症状:

  • 在执行时,数据流获得通常的黄色"运行"图标.但是,当您双击以查看数据流时,非元素具有任何黄色,红色或绿色标记.
  • 这种情况持续很长一段时间,最初持续了大约20分钟,之后开始变长或根本没有返回.
  • 输出显示:
    信息:Load Sandbox Table中的0x40043006,SSIS.Pipeline:准备执行阶段正在开始.
    信息:Load Sandbox表中的0x40043007,SSIS.Pipeline:预执行阶段正在开始.

    除了停止执行之外别无其他.
  • 是的,这已经奏效了.是的,我们使用单个查询(在存储过程中)来执行此ETL,但我们希望将所有步骤迁移到SSIS.
  • 解决方案失败:

  • 没有查找.
  • 任务流的默认缓冲区大小增加到40485760,然后增加到80971520.
  • 任务的默认缓冲区最大行数设置为1000000.
  • 对于该任务,延迟验证设置为True.
  • 任务中的所有元素都将Validate External Data设置为False.
  • 两个查询都有:
    SET FMTONLY OFF;
    设置NOCOUNT ON;

    在开始时加入.
  • 两个查询都将MAXDOP设置为1.
  • 将项目的运行64位运行时设置为False.
  • 将目标负载从表或视图更改为表或视图 - 快速加载,没有锁或约束.
  • 将每批次的行设置为1000以便快速加载.
  • 一些解决方案建议将任务流分成两个或更多任务流.但这是不可能的,因为我们需要做的是合并两个源查询中的信息.
  • 额外的一点: 我真的希望有人可以帮助我.我是SSIS的新手,这是我第一次使用它.我通常与Pentaho合作开发我的ETL,但客户需要在SSIS上实施解决方案.我已经和这个问题争斗了好几天了,而且我已经开始没有想法来解决这个问题了.


    当通过命令行运行时,它也会卡住,我得到以下输出:

    Progress: 2013-03-19 14:36:26.21
       Source: Load Sandbox Table
       Validating: 0% complete
    End Progress
    Progress: 2013-03-19 14:36:26.21
       Source: Load Sandbox Table
       Validating: 12% complete
    End Progress
    Progress: 2013-03-19 14:36:26.22
       Source: Load Sandbox Table
       Validating: 25% …
    Run Code Online (Sandbox Code Playgroud)

    sql-server ssis etl

    27
    推荐指数
    3
    解决办法
    5万
    查看次数

    调试SSIS脚本任务 - 启用了断点但它没有命中

    我正在研究SSIS包.该包具有脚本(C#语言)任务.我需要调试脚本任务.我设定了断点.脚本编辑器(Visual Studio)中的脚本和SSIS包编辑器中的任务都显示红色的断点 - 表示断点已启用.但是,当我调试包时,断点没有命中.

    断点没有任何条件,所以我希望每次打包都会打到它.

    我在Windows 2003 R2 64位SP2上使用Visual Studio 2008.

    debugging ssis breakpoints

    27
    推荐指数
    8
    解决办法
    3万
    查看次数

    如何在我的SQL Server代理作业中创建一个将运行我的SSIS包的步骤?

    我正在尝试为SQL Server代理创建一个自动作业来运行.该工作应该运行我的SSIS包.

    这是我到目前为止所拥有的:

    EXEC sp_add_job @job_name = 'My Job'
                ,@description = 'My First SSIS Job'
                ,@job_id = @jobid OUTPUT
    
    EXEC sp_add_jobstep @job_id =@jobid
                        ,@step_name = N'Upload Data'
                        ,@step_id = 1
                        ,@command=N'/FILE "D:\Installs\Upload.dtsx"'
    EXEC sp_add_jobstep @job_id = @jobid
                        ,@step_name = N'Download Data'
                        ,@step_id = 2
                        ,@command=N'/FILE "D:\Installs\Download.dtsx"'
    
    Run Code Online (Sandbox Code Playgroud)

    不幸的是,当我运行这个时,我得到一个错误说

    '/'附近的语法不正确

    我怀疑它/FILE在我的命令中抱怨.

    我无法在任何地方找到有关在@command中使用的适当语法的文档 - 我从中找到/FILE了一些我发现的旧代码.在作业中运行SSIS包的正确语法是什么?

    sql t-sql database sql-server ssis

    26
    推荐指数
    2
    解决办法
    7万
    查看次数

    更新SSIS OLEDB目标中的行

    我有一个数据流程,我有一个OLEDB源和一个OLEDB目的地,如下所示:

    数据流任务

    Source合并来自两个临时表的数据并返回结果集(例如,50K行).这些50K行也存在于目标表中,但它们是旧数据.

    SELECT * FROM staging1
    UNION
    SELECT * FROM staging2 
    
    Run Code Online (Sandbox Code Playgroud)

    通常,在OLEDB目标中,我们将返回的数据集从源表插入目标表,但在我的情况下,我必须使用这些新的50K行更新旧的50K行.

    一种批量更新.

    谁能告诉我怎么做到这一点?我感谢您的帮助.

    ssis sql-server-2008

    26
    推荐指数
    3
    解决办法
    11万
    查看次数

    请参阅Visual Studio中的数据流SSIS元素的完整工具提示错误消息

    我的SSIS数据流图中的一个元素显示了当我将光标悬停在其上时工具提示中的错误.

    在此输入图像描述

    在哪里我可以看到全文本的错误信息

    显示此工具提示的元素是标有"Specs"的元素.我正在使用Microsoft Visual Studio 2008.

    ssis visual-studio-2008 visual-studio dataflow-diagram

    26
    推荐指数
    1
    解决办法
    2万
    查看次数

    如何在ssis中将空白转换为null

    我从excel中提取数据ssis.其中一个excel列包含blank值.所以我需要blank用null 替换值,否则我的包将失败.任何建议?

    sql-server error-handling ssis

    25
    推荐指数
    3
    解决办法
    8万
    查看次数

    当数据库列定义为VARCHAR(MAX)时,如何使用SSIS传输数据?

    我在执行包时收到以下消息.

    文本被截断或目标代码页中的一个或多个字符不匹配.

    我从一个SQL表中获取数据,该表具有task_teammember数据类型的字段名称VARCHAR(MAX).包裹执行在源头失败.I型铸造列task_teammberVARCHAR(8000)其中没有任何错误信息执行该包.但是,目标只接收8000个字符,而源表中的字符数超过8000个.

    当列定义为VARCHAR(MAX)?时,如何使用SSIS将所有数据从源表传输到目标表?

    ssis

    25
    推荐指数
    1
    解决办法
    6万
    查看次数