我创建了一个带有 OnError 事件处理程序的 SSIS 包,该处理程序在数据库中插入一些日志记录。
当我通过批处理文件运行该包时,我在批处理文件日志中看到该包无法执行,因为与数据库(与我插入错误日志的数据库不同)的连接失败。但是,没有插入日志记录(意味着 OnError 事件处理程序没有触发?)
当连接到数据库失败时,OnError 事件处理程序不会触发吗?
如果我有两个 JSON 文件/表达式,我如何确定 JSON 的数据内容在功能上是否相同?
即比较应该忽略语法,如:
我知道需要某种 JSON 解析器,但我不知道我的选择。我的数据在 SQL 服务器上,所以我可以直接使用 SQL JSON 函数和 SSIS 脚本组件 (C#/.Net)。
或者:有没有办法计算 JSON data-content 的哈希值,在计算哈希之前是否有最小化/统一 JSON 表达式的标准。
编辑:JSON 架构未知且未修复。
我在将我在MS Visual Studio 2008/MS SQL Server 2008中的一台服务器上创建的SSIS包移动到具有MS SQL Server 2005的服务器时遇到问题.我收到以下错误并感谢您的建议:
在SQL Server中存储或修改包需要SSIS运行时和数据库是相同的版本.不支持在早期版本中存储包.
我有一个触发器(SQL 2008 R2)执行一个简单的操作,但结果不合逻辑.以下是概述:
文本文件被送到SSIS包,其中包含一行(一个记录),将其加载到"ORDERS_IN_PROCESS"表中.数据访问模式在"OLE DB目标"中设置为"表或视图"以允许触发器触发.
这是我的ORDERS表:
OrderID ItemNo
--------- ---------
9813 1
9813 2
9813 3
9817 1
Run Code Online (Sandbox Code Playgroud)
因此,SSIS执行并且ORDERS_IN_PROCESS获取一个插入的记录,即OrderID 9813
触发器被触发:
INSERT INTO ORDERS_ARCHIVE SELECT * FROM ORDERS WHERE OrderID=INSERTED.OrderID
Run Code Online (Sandbox Code Playgroud)
到目前为止很简单......
我在ORDERS_ARCHIVE(与ORDERS相同的布局)表中得到的结果是
OrderId ItemNo
--------- ----------
9813 3
Run Code Online (Sandbox Code Playgroud)
2行项目的其余部分在哪里?
注意,它只将从ORDERS表中读取的最后一行插入到ORDERS_ARCHIVE中.
我需要ORDERS_ARCHIVE中的所有3个.
为什么会这样?
我认为它与SSIS使用"OLE DB Destination"处理它的方式有关,因为如果我手动将记录插入到RLFL中,触发器就会完全按照它应该执行的操作并从BACK插入所有3条记录.
你可能会争辩说每个触发器触发一次,我同意但在这种情况下我只有一批记录.
我正在考虑一个sp,但我宁愿不为一些如此微不足道的东西增加另一层次的复杂性.
有任何想法吗?
谢谢.
我在一个 ssis 包下有三个不同的.dtsx包。如何通过单击执行所有三个,而不必打开每个 dtsx 文件并分别执行它们
我创建了一个 SSIS 包,并使用 Merge Join 将一个 Dimension 与另一个 Merge Join 的结果连接起来,但出现以下错误:
转换的两个输入必须至少包含一个已排序的列,并且这些列必须具有匹配的元数据 ssis
我有包含 3 列(id、名称、出现次数)的表,我想根据 id 列更新出现次数列,附上快照以供参考。
例如,如果我的 id 列有“606”值 3 次,那么我出现的列在所有“606”值中应该有 3 次。
下面是我尝试过的方法。
我尝试使用group byandHaving子句查找重复值并将其保存在临时表中,然后从那里尝试连接临时表中的表值。
输出“Output0”(5) 和组件“数据流任务”(1) 上的“输出列”“A”(67) 随后不会在数据流任务中使用。删除这个未使用的输出列可以提高数据流任务的性能。 ”
请解决我的问题
我在SSIS中构建了一个包,它使用脚本任务在Excel中打开Excel文件,格式化和刷新一些数据.我希望在脚本任务运行时看到Excel,以查看Excel是否一直挂起.这可能吗?我正在转换一个通过shell脚本调用Excel的进程,而不是使用SSIS来调用Excel.我想第二个问题是,这是个坏主意吗?
CASE
WHEN CHARINDEX('%', '{FixedARMRateReductionLimit}') > 0 THEN
CAST(SUBSTRING('{FixedARMRateReductionLimit}', 0,
CHARINDEX('%', '{FixedARMRateReductionLimit}')) as decimal)/100
WHEN '{FixedARMRateReductionLimit}' = 'Weekly PMMS Rate' THEN
PARAM_VAL_TXT
ELSE
.02
END
Run Code Online (Sandbox Code Playgroud)