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

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


您可以在文件连接管理器预览中看到数据正确显示.当我尝试导入此数据时,不导入任何行.我收到一条错误消息,指出未找到行分隔符.您可以在文件连接管理器图像中看到标题行分隔符和行分隔符都设置为{LF}.这足以生成正确的预览,所以我迷失了为什么它无法导入.我尝试了许多结果为零的事情:
[Flat File Source [582]]警告:读取标题行时已到达数据文件的末尾.确保标题行分隔符和要跳过的标题行数是正确的.
感谢您的关注,我非常感谢您提供的任何帮助.
我有一个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) 如果我可以使用存储过程执行所需的ETL要求,那么使用SSIS包的任何优点是什么?我的ETL东西并不重要.
我觉得使用旧技术.我喜欢SQL.旧技术不等于过时,因为存储过程不会很快消失.
我有一个暂停执行的数据流任务.
流程很简单,对不同的表进行两次查询(两者都有几个连接),然后通过公共id对输出进行排序和合并,为所有记录添加静态列,将行计数保存在用户变量中以供日后使用使用并最终插入到另一个DB上的表中.我们正在使用OLE DB源和目标.源是MSSQL 2000,目标是MSSQL 2012
症状:
解决方案失败:
额外的一点:
我真的希望有人可以帮助我.我是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) 我正在研究SSIS包.该包具有脚本(C#语言)任务.我需要调试脚本任务.我设定了断点.脚本编辑器(Visual Studio)中的脚本和SSIS包编辑器中的任务都显示红色的断点 - 表示断点已启用.但是,当我调试包时,断点没有命中.
断点没有任何条件,所以我希望每次打包都会打到它.
我在Windows 2003 R2 64位SP2上使用Visual Studio 2008.
我正在尝试为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包的正确语法是什么?
我有一个数据流程,我有一个OLEDB源和一个OLEDB目的地,如下所示:

Source合并来自两个临时表的数据并返回结果集(例如,50K行).这些50K行也存在于目标表中,但它们是旧数据.
SELECT * FROM staging1
UNION
SELECT * FROM staging2
Run Code Online (Sandbox Code Playgroud)
通常,在OLEDB目标中,我们将返回的数据集从源表插入目标表,但在我的情况下,我必须使用这些新的50K行更新旧的50K行.
一种批量更新.
谁能告诉我怎么做到这一点?我感谢您的帮助.
我的SSIS数据流图中的一个元素显示了当我将光标悬停在其上时工具提示中的错误.
在哪里我可以看到全文本的错误信息?
显示此工具提示的元素是标有"Specs"的元素.我正在使用Microsoft Visual Studio 2008.
我从excel中提取数据ssis.其中一个excel列包含blank值.所以我需要blank用null 替换值,否则我的包将失败.任何建议?
我在执行包时收到以下消息.
文本被截断或目标代码页中的一个或多个字符不匹配.
我从一个SQL表中获取数据,该表具有task_teammember数据类型的字段名称VARCHAR(MAX).包裹执行在源头失败.I型铸造列task_teammber到VARCHAR(8000)其中没有任何错误信息执行该包.但是,目标只接收8000个字符,而源表中的字符数超过8000个.
当列定义为VARCHAR(MAX)?时,如何使用SSIS将所有数据从源表传输到目标表?