在Visual Studio

时间:2017-04-18 07:12:00

标签: sql-server visual-studio-2012 ssis sql-server-2012

背景:我们的应用程序分为数据库项目和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   

理想情况下:运行"设计警告扫描仪"从命令行并捕获错误和警告。

已经尝试过:

  1. 从命令行运行DTEXEC.exe。但是因为我们使用连接管理器而不是数据库连接的包内变量,所以DTEXEC不会没有错误地运行。
  2. 使用程序包Validate()方法以编程方式验证程序包作为Microsoft.SqlServer.Dts.Runtime.Package对象。这将始终成功(即使在使用有缺陷列的包上)。通过Connections集合手动添加sqlserver连接无济于事。

0 个答案:

没有答案