问题标签 [oledbdestination]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
107 浏览

error-handling - 当源数据为空且目标列不能使用 OLDEDBDestination 任务为空时,SSIS 未记录错误

我的一个 SSIS 包遇到一个奇怪的问题。

我在源中有一个列(例如列 FirstName),它是空的。并且在 OLEDBDestination 中,与上述源列(Source.FirstName)映射的目标列(Destination.FirstName)不可为空。

现在当 DFT 被执行时,它不会抛出任何错误并继续运行。当我签入 sql server 时,进程被挂起。

SSIS 不会为此抛出任何错误。

除了保持两个列的可为空选项相同之外,任何想法有什么解决方案?

0 投票
1 回答
3805 浏览

sql-server - 将多个平面文件导入多个 SQL 表

这是我的文件夹设置。

文件夹结构

这是文件设置

文件结构

这个想法是遍历文件夹并将 FileA 内容放到数据库上的 Table FileA.dbo 中(还有 FileB、FileC 等)。FileName 结构在所有文件夹中都是相同的。

我有这个 ssis 包,我在其中使用 foreachloop-> 数据流解析文件夹。

ssis1 ssis2

我已经检查了我为获取文件名而制定的算法是否有效

它解析出 .txt 扩展名。下面是我拥有的 foreach 循环的设置。 前锋

要启动整个程序包,我在文件夹中有 .txt 文件,并创建了 foreach 容器循环子文件夹。

初始点

因为,我并不是真正的 SSIS 包开发人员,所以这是我能做的最好的一些研究。我遇到的问题是,它似乎部分工作。

快照是我所拥有的场景的模型,实际上我有超过 200 个文件夹和 50 个文本文件,每个文件都指定将内容转储到相应的命名表中。

但是我在包成功执行后看到的总行数非常低并且不可能是正确的。无论如何要获得它遍历的文件夹数量的计数/列表。另外,我做错了吗?

理想情况下,我只想不必从 .txt 文件开始,而只需将整个内容转到文件夹,获取文件名(我认为我有一个工作代码)并将所有信息转储到 OLEDB目的地。

非常感谢任何帮助,资源链接。

0 投票
2 回答
1945 浏览

sql-server - 如何使用在后续任务中添加的记录的自动生成 ID?

我目前正在使用OLE DB Destination. 每条记录都有一个自动生成的Id字段。我想将此生成Id的字段用作某些子记录中的外键。

我以为我可以将数据流线从一个OLE DB Destination组件传输到另一个组件,但这不受支持。

我会认为这是一个常见问题 - 其他人如何解决它?

0 投票
2 回答
3485 浏览

sql-server - 是否可以从 SSIS 源动态创建表

目标:在给定 SSIS 源的情况下自动创建表及其所有列和数据类型

我的猜测是:

1) 将源指向 SQL 命令的目标

在此处输入图像描述

2) 使用 Select * into ... 问题是我不知道等价物是什么

在此处输入图像描述

备选方案)将结果存储在 Recordset 中并传递给 Execute SQL 任务。那么问题是如何从执行 sql 任务中访问该结果 在此处输入图像描述

0 投票
0 回答
138 浏览

ssis - SSIS:平面文件源将其转换为两个 OLE DB SQL 表(在加载到 OLEDB 源之前转换和排序时抛出错误)

我正在尝试获取一个平面文件并将其转换为 SSIS 中的两个表并加载到 OLEDB 源 (SSMS)。我已经在 SSMS 中创建了与行由 , 分隔的平面文件匹配的表。我必须进行数据转换转换,因为平面文件数据类型与我在 SSMS 的表中设置的 nvarchar 数据类型不同。我当前的包遇到了一些障碍,并且在加载到目标之前无法将数据加载到 OLEDB 中而不抛出一些错误。

我在 SSMS 中设置的两个表。一个有一个主键(Unique_ID),并且该主键在另一个表中引用相同的外键(Unique_ID)

现在在我的控制流上

执行 SQL 任务以在新加载之前截断表 -> 每个新表的两个数据流任务

我为第一个表设置的数据流任务是 -> 1.Txt 文件平面源 2.Data Conversion to convert String[DT_STR] to Unicode String [DT_WSTR] 3.Sort -> 我认为会从数据转换,但行仍在重复,这在到达目标之前引发错误(我检查了复选框以删除重复的排序值) 4.OLE DB 目标

错误是:“OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005 描述:“违反主键约束 'PK'。无法在对象“dbo.”中插入重复键。重复键值为 (123)."。

在数据查看器中,我不需要的重复记录导致主键约束例如:

数据转换
.sequence 123 姓 名
123 姓 名

第二个数据流任务类似于第一个,只是目标中的表和我使用的列不同。

我查看了很多帖子并研究了这个问题。我是使用 SSIS 的新手,并且从性能角度寻找将这两个新表加载到 OLEDB 目标中的最佳方法。任何建议将不胜感激。

我需要回答的几个问题:

1.在我执行一个包之前,我可以在我的两个表之间设置主键和外键吗?我能够将平面文件加载到我的两个表中,而没有主键和外键引用第二个表中的主键。我需要能够在将来加入这些表,所以我需要保持两个表之间的引用完整性。2. 我在 SSIS 中以正确的方式进行当前正在执行的转换吗?我不能使用查找转换,因为源(平面文件)和目标(OLEDB 源)之间的数据类型不同

如果您需要我提供有关我使用的包或平面文件的更多详细信息以及我的表是如何在 SSMS 中设置的,我可以提供更多详细信息。

0 投票
2 回答
162 浏览

while-loop - SSIS - 如何从平面文件插入到具有日期范围的 OLE DB?

我有一个平面文件源,其中的列每行都有开始日期和结束日期,而我尝试插入的表只有一个日期列,这意味着我必须从开始日期到结束日期每周插入 1 行.

样本 FF 来源:
Col1,StartDate,EndDate,Col4
1234,7/10/2018,28/10/2018,1.000

要插入到表中的行:
+------+------------+-------+
| Col1 | 日期 | Col4 |
+--------+------------+--------+
| 第1234章 2018 年 7 月 10 日 | 1.000 |
| 第1234章 2018 年 10 月 14 日 | 1.000 |
| 第1234章 21/10/2018 | 1.000 |
| 第1234章 2018 年 10 月 28 日 | 1.000 |
+--------+------------+--------+

0 投票
1 回答
586 浏览

sql-server - 如何为ssis的oledb目标中的列分配一个常量值

我有一个 OLE DB 目标,它有一个目标列,例如 TrackDateTime 、 OperationTypeID 和 TrxID 。这里 TrxID 我将从输入列中获取一个值。但我在这里的要求是获取 TrackDateTime 、 OperationTypeID 的值:这里 TrackDateTime 必须是当前日期和时间,并且 OperationTypeID 必须始终为 2。我怎样才能做到这一点?

在此处输入图像描述

0 投票
1 回答
1112 浏览

sql-server - 在数据流任务中选择 oledb 目标表时出现 SSIS 2012 开发错误

我在数据流目标(OLE DB 目标)屏幕中。我能够连接到数据库,并在下拉列表中看到目标表。

当我单击左侧的“映射”选项时,或者单击“查看现有数据”按钮时,出现错误:

验证错误。数据流任务:数据流任务: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 描述:“通信链路故障”。

验证错误。数据流任务 OLE DB 目标 [31]:无法打开“[dbo].[xxxxxxxx]”的快速加载行集。检查对象是否存在于数据库中。xxxxxxxxxxx.dtsx 0 0

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
699 浏览

sql-server - 快速加载错误输出不会重定向整个批次

语境

我正在开发一个简单的 SSIS 包,其中包含一个数据流任务:

  • 1 OLE DB 源
  • 2 查找转换
  • 1 个 OLE DB 目标
  • 1 错误输出行的 OLE DB 目标

我在两个 OLE DB 目标中都使用了 FastLoad 选项,并且我已将第一个错误输出配置为将行重定向到第二个目标。

问题

从许多在线文章中,我了解到使用 Fastload 选项会导致整个批处理失败,而且不仅会重定向错误的行。

但是当执行包时,只有 2 行被重定向,所有其他行都成功导入。我检查了两个目标中的行数总和是否等于源行数,这意味着只有错误的行被重定向。

注意:

  • 最大提交大小 =2147483647
  • 批量大小为空
  • 检查表锁定和检查约束选项
  • 我将 SQL Server 2014 与 Visual Studio 2013 一起使用

我在网上没有找到类似的案例。有什么解释吗?

0 投票
1 回答
321 浏览

sql-server - SSIS 无法将数据插入到具有计算列的表中

我有一个将数据插入表的 SSIS 流。在更新数据模型并添加计算列之前,此流程一直运行良好。现在,当我尝试加载数据时,出现以下错误:

SQL Server 错误消息 - 消息 271 - 列 '' 无法修改,因为它要么是计算列,要么是 UNION 运算符的结果。

我在这里找到了对此错误消息的一个很好的解释:SQL Server Error Messages - Msg 271

我联系 StackOverflow 的原因是因为该列实际上没有映射到我的 SSIS 流中。这意味着我的 OLEDB 目标组件知道该列的存在,但它的映射设置为<ignore column>. 这是我处理其他列(例如生成的 ID)的方式,它总是可以正常工作。

因此,问题是:为什么我会收到此错误消息?

我的想法是,SSIS 可能会自动生成将null值映射到此计算列的 SQL 插入语句。如果是这种情况,有没有办法强制 SSIS 完全忽略该列的存在?