标签: ssis

SSIS OnError 事件处理程序不会在数据库连接失败时触发

我创建了一个带有 OnError 事件处理程序的 SSIS 包,该处理程序在数据库中插入一些日志记录。

当我通过批处理文件运行该包时,我在批处理文件日志中看到该包无法执行,因为与数据库(与我插入错误日志的数据库不同)的连接失败。但是,没有插入日志记录(意味着 OnError 事件处理程序没有触发?)

当连接到数据库失败时,OnError 事件处理程序不会触发吗?

sql-server ssis

0
推荐指数
1
解决办法
4209
查看次数

如何确定 JSON 数据内容是否相同?(计算 JSON 哈希?)

如果我有两个 JSON 文件/表达式,我如何确定 JSON 的数据内容在功能上是否相同?

即比较应该忽略语法,如:

  • 所有空格/换行符(字符串之外)。
  • 对象成员的排序。
  • 等效的 unicode 字符(例如 \u0041 = A)。

我知道需要某种 JSON 解析器,但我不知道我的选择。我的数据在 SQL 服务器上,所以我可以直接使用 SQL JSON 函数和 SSIS 脚本组件 (C#/.Net)。

或者:有没有办法计算 JSON data-content 的哈希值,在计算哈希之前是否有最小化/统一 JSON 表达式的标准。

编辑:JSON 架构未知且未修复。

.net c# sql-server json ssis

0
推荐指数
1
解决办法
1085
查看次数

将SQL Server 2008中创建的SSIS包复制到SQL Server 2005上

我在将我在MS Visual Studio 2008/MS SQL Server 2008中的一台服务器上创建的SSIS包移动到具有MS SQL Server 2005的服务器时遇到问题.我收到以下错误并感谢您的建议:

在SQL Server中存储或修改包需要SSIS运行时和数据库是相同的版本.不支持在早期版本中存储包.

ssis sql-server-2005 package deploying visual-studio-2008

-1
推荐指数
1
解决办法
1442
查看次数

触发器的奇怪行为

我有一个触发器(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,但我宁愿不为一些如此微不足道的东西增加另一层次的复杂性.

有任何想法吗?

谢谢.

sql-server triggers ssis

-1
推荐指数
1
解决办法
219
查看次数

一起运行多个 .dtsx 文件

我在一个 ssis 包下有三个不同的.dtsx包。如何通过单击执行所有三个,而不必打开每个 dtsx 文件并分别执行它们

sql-server ssis etl ssis-2012 sql-server-data-tools

-1
推荐指数
1
解决办法
1392
查看次数

转换的两个输入必须至少包含一个已排序的列,并且这些列必须具有匹配的元数据 ssis

我创建了一个 SSIS 包,并使用 Merge Join 将一个 Dimension 与另一个 Merge Join 的结果连接起来,但出现以下错误:

转换的两个输入必须至少包含一个已排序的列,并且这些列必须具有匹配的元数据 ssis

在此处输入图片说明

在此处输入图片说明

ssis

-1
推荐指数
1
解决办法
9027
查看次数

查找重复值的出现

我有包含 3 列(id、名称、出现次数)的表,我想根据 id 列更新出现次数列,附上快照以供参考。

在此输入图像描述

例如,如果我的 id 列有“606”值 3 次,那么我出现的列在所有“606”值中应该有 3 次。

下面是我尝试过的方法。

我尝试使用group byandHaving子句查找重复值并将其保存在临时表中,然后从那里尝试连接临时表中的表值。

sql t-sql sql-server ssis

-1
推荐指数
1
解决办法
241
查看次数

未随后使用的数据流任务警告

输出“Output0”(5) 和组件“数据流任务”(1) 上的“输出列”“A”(67) 随后不会在数据流任务中使用。删除这个未使用的输出列可以提高数据流任务的性能。 ”

请解决我的问题

ssis

-2
推荐指数
1
解决办法
6833
查看次数

SSIS:在SQL Server代理作业运行期间使Excel在脚本任务中可见

我在SSIS中构建了一个包,它使用脚本任务在Excel中打开Excel文件,格式化和刷新一些数据.我希望在脚本任务运行时看到Excel,以查看Excel是否一直挂起.这可能吗?我正在转换一个通过shell脚本调用Excel的进程,而不是使用SSIS来调用Excel.我想第二个问题是,这是个坏主意吗?

excel jobs ssis visible script-task

-2
推荐指数
1
解决办法
1093
查看次数

将SQL中的CASE表达式转换为SSIS中的派生列

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)

sql ssis sql-server-2008

-3
推荐指数
1
解决办法
2923
查看次数