正在插入从 OLE DB 源流向 OLE DB 目标的信息,允许在包运行后提交重复记录。
有没有一种好的方法可以替换这些记录而不是插入它们来避免重复?
如果有帮助,我正在使用 Visual Studio 编辑包。
正在插入从 OLE DB 源流向 OLE DB 目标的信息,允许在包运行后提交重复记录。
有没有一种好的方法可以替换这些记录而不是插入它们来避免重复?
如果有帮助,我正在使用 Visual Studio 编辑包。
我遵循了许多文章来创建一个 SSIS 管道包,部署它并安排它。我正在尝试从两个远程服务器传输数据,一个连接到作为源的 SQL Server 数据库的 OLEDB 驱动程序和一个连接到作为目标的 MySQL 数据库的 ODBC 驱动程序的 OLEDB 提供程序......
管道在 Visual Studio 上运行良好,当我部署它并从 SSMS 执行它时,但是当我创建作业时,我收到以下错误:
注意:我正在为 MySQL 使用 32 位 ODBC 驱动程序。
有任何想法吗 ?
更新(必须更新,因为每个人都无法看到图像)
错误 :
Data Flow Task:Error: OLE DB Destination failed
validation and returned error code 0xC020801C.
Data Flow Task:Error: SSIS Error Code
DTS_E_CANNOTACQUIRECONNECTIONFROMCONNE
CTIONMANAGER. The AcquireConnection method call to
the connection manager
"remotemysql.com.uVt96HeM3y.uVt96HeM3y1" failed with
error code 0xC0202009. There may be error messages
posted before this with more information on why the
AcquireConnection method call failed.
Package1:Error: SSIS Error Code
DTS_E_OLEDBERROR. An OLE DB error has occurred.
Error code: 0x80004005.
An OLE DB record is available. Source: "MSDataShape"
Hresult: 0x80004005 Description: "Data provider could not
be initialized.".
An OLE DB record is available. Source: "Microsoft OLE
DB Provider for ODBC Drivers" Hresult: 0x80004005
Description: "[Microsoft][ODBC Driver Manager] Data
source name not found and no default driver specified".
目前我们的 DBA 团队的任务是支持 SSIS,但是我们希望将 SSIS 服务与实际的数据库引擎分开。原因是能够让不同的团队负责更新和维护 SSIS 服务器上的其他 3rd 方应用程序。我们希望 DBA 团队处理数据库引擎更新或维护。这将允许 SSIS 团队在那里对应用程序进行更新,而无需访问数据库引擎服务器。
几年前,有人问过一个类似的问题,即在一台服务器上安装 SSIS 包,而最后一条评论中的数据库包看起来可能可行,但不确定如何执行。
SSIS/Sql 服务器/Visual Studio 2019。
我有一个很大的 csv 文件,里面有很多不确定的数据。我想做的一件事是至少尝试识别相同的连续行并将重复的行剔除。通过“相同”,我想检查 2 个特定的列值 - 名称和公司。
我有一个看起来应该可以工作的流程(鉴于这是我的第一个 SSIS 包和有限的经验),但没有捕捉到顺序重复。我不知道这是否是因为我没有理解条件拆分表达式语法、脚本组件的工作方式,或者包变量更改应该何时/如何从脚本组件生效。没有人抛出错误,但是文件中连续重复的行不会被发送到“拒绝”滑槽。
我创建了两个包变量(lastName 和 lastCompany),初始化为“”。
该流程有一个平面文件源读入,然后是一个条件拆分,其中包括表达式中的其他子句,
... && !(Name == @[User::lastName] && Company == @[User::lastCompany]) &&
这个想法是任何匹配所有子句的东西都将进入“成功”路径,而未通过任何这些检查的行将进入“拒绝”流程。
“成功”流程的下一件事是脚本组件,它执行一些数据规范化并(至少尝试)更新包变量。我为模板找到了另一篇文章。
public override void PostExecute()
{
base.PostExecute();
// I've been trying to debug this and get some output on the VS output window but so far nothing has worked.
// Trace is not showing up in DbgView, FireInformation and FireWarning didn't show up in any of the windows in VS
Trace.WriteLine($"Starting: [{Variables.lastName}|{Variables.lastCompany}], Ending: [{lastName}|{lastCompany}]");
Variables.lastCompany = lastCompany;
Variables.lastName = lastName;
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
...
lastName = Row.Name;
lastCompany = Row.Company;
}
我错过了什么
我的意思是,它看起来应该对我有用,但事实并非如此。
谢谢
我在一家拥有两个遗留数据仓库的公司工作,这些数据仓库一直在演变为不可维护的单体。因此,他们迫切需要重组。
我正在研究将当前的数据架构改革为更符合数据网格原则的架构,就像 Zhamak Dehghani 在这篇有影响力的文章中所提倡的那样(可能是数据专业人士众所周知的材料)。
第一个数据仓库,比如 DWH-A,主要由直接来自核心公司应用程序的操作数据库的数据组成。它每周通过来自运营数据库的 FTP 转储进行更新,每次更新都包含大约 2GB 的数据。在 5 年的时间里,DWH 已经增长到 +-300GB 的可观大小。
第二个数据仓库,比如 DWH-B,由来自各种 API 和其他数据源的各种数据组成。它通过 API 调用不断更新,大小为 +- 100GB。
这两个数据仓库都主要使用 T-SQL 构建并托管在 MS SQL Server 上。目前,所有数据要么从操作数据库(通过 SSIS)插入,要么从 API(通过 SSIS icw ZappySys)插入。
由于我的任务是升级当前的做事方式,并且由于我认为 SSIS 是一种相当多余且繁琐的插入数据的方式,因此我正在寻找其他方式将数据摄取到某些数据存储中符合数据网格的原则(因此没有单体数据仓库)。
为此,我遇到了 Apache nifi、Flume、Storm、Kafka 和 Logstash 等工具。所有这些工具就其本身而言似乎非常强大,并且适合处理大量数据。然而,考虑到我正在处理的数据量,我想知道这些工具是否真的与我的公司相关。我不想通过发射火箭筒来杀死蚊子,并使事情变得不必要地复杂化。我还可以简单地构建一些在我们的 K8S 集群中运行的 Python 脚本,并定期检索/写入数据到我们的数据存储中。
将背景总结为一个问题:
Apache nifi、flume、storm 等数据摄取工具或 logstash 等工具从哪些数据量中变得相关?
任何建议将不胜感激。
我创建了一个简单的 SSIS 包,用于查询表并将数据提取到平面 CSV 文件中。在生产中,此提取可能是数百万行,我想根据行数将平面文件目标拆分为多个文件。
因此,每次我们使用文件名达到 100000 行时创建新文件,例如
我找到了 ZappySys 的付费工具,它可以做到这一点,但不能用普通的 SSIS 工具箱来解决这个问题,我可能会遗漏一些非常简单的东西。我找到了其他帖子和视频,但其中一些涉及使用常规工具集之外的其他代码,例如 techbrothersit 网站。
编辑:在阅读和评论之后,这看起来比预期的要难。
如果我更改基于表中日期列拆分平面文件的过程,那会更直接吗?
表格有一个短日期列,格式为 2020-07-30,每个 CSV 文件将仅包含一天的提取数据(可能是 100K+),然后从表格中删除该数据。提取所有数据后将进行删除。
我正在尝试使用 foreach/forloop 容器,但由于这对我来说是全新的,所以我很努力,任何帮助将不胜感激。
我有一个想要作为工作运行的 SSIS 包。平面文件源位于服务器 A 上,而包和作业位于服务器 B 上。
当我运行执行 SSIS 包的作业时,出现错误(错误代码 0xC020200E 无法打开数据文件),但我可以在 SSMS 中手动执行已部署的包并成功执行。我发现这是由于服务器 B 的 NT SERVICE\MSSQLSERVER 服务帐户无法访问服务器 A 上的文件夹造成的。为了对此进行测试,我在服务器 B 上创建了一个测试文件夹并让 SSIS 包看起来在那里,我有然后给予 NT SERVICE\MSSQLSERVER 对服务器 B 上文件夹的完全访问权限。作业成功执行并且包运行但是当我尝试为服务器 A 上的文件夹授予 NT SERVICE\MSSQLSERVER 权限时,我在这些位置找不到服务器选项卡,我无法访问 NT SERVICE\MSSQLSERVER 服务帐户。我曾尝试映射网络驱动器,但没有帮助。
如果这是一个不适合这个论坛的问题,请原谅我(作为 DBA 和所有人,我认为它可能适合)。
我有一个最近升级并从 BIDS 转移到 VS 2019 的 SSIS 包。
创建和编写注释是一个非常简单的过程,但是,流程图上有许多注释需要编辑,但我根本找不到执行此操作的选项。有谁知道一种方法,可以实际编辑 XML (dtsx) 文件并手动使用文本编辑器?
澄清...
作为一个时髦的开发人员并在我的 VS 安装中使用了一个黑暗的方案,这都是我的错!事实证明,您看不到光标,因为它是黑底黑字。
感谢下面的 billinkc 指出我的愚蠢!