背景:我们的应用程序分为数据库项目和SSIS项目。现在,可能会发生更改被推送到数据库项目(如列名称更改),直到运行时尝试使用该列的程序包失败时才会被忽视。作为集成构建的一部分,我想针对数据库验证SSIS项目中的包,因此我们可以更早地检测到这些错误。
问题:如何验证我们的dtsx软件包,以便在集成构建期间检测设计中的错误?
首选解决方案:我希望有一个与数据库对象不匹配的包的错误列表,就像我在设计视图中打开包时看到的那样:
Error 4 Validation error.
My_Package_Name [40]: SSIS Error Code DTS_E_OLEDBERROR.
An OLE DB error has occurred. Error code: 0x80040E14.
An OLE DB record is available.
Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E14
Description: "Statement(s) could not be prepared.". An OLE DB record is available.
Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E14
Description: "Invalid column name 'MyRenamedColumn'.".
My_Package_Name.dtsx 0 0
理想情况下:运行"设计警告扫描仪"从命令行并捕获错误和警告。
已经尝试过:
Validate()
方法以编程方式验证程序包作为Microsoft.SqlServer.Dts.Runtime.Package
对象。这将始终成功(即使在使用有缺陷列的包上)。通过Connections
集合手动添加sqlserver连接无济于事。