0

我正在尝试为 SSIS 包编写集成测试。SSIS 包已部署到 SSIS 目录 (SSISDB)。我正在使用带有 Winders Server 2012 操作系统的服务器,并且正在使用 SQL Server 2012

我的代码如下

EXEC tSQLt.NewTestClass 'testClass'

CREATE PROCEDURE testClass.[test ssis package integration]
AS

BEGIN
IF OBJECT_ID('actual') IS NOT NULL DROP TABLE actual;
IF OBJECT_ID('expected') IS NOT NULL DROP TABLE expected;


/* Assemble
   --------------------------------------------------------------------- */

/* Clear source tables */
TRUNCATE TABLE [Database1].[dbo].[table1];
TRUNCATE TABLE [Database1].[dbo].[table2];

/* Clear destination tables */
TRUNCATE TABLE [Database2].[dbo].[table1];

/* Insert set up data */
---

/* Create expected table */
CREATE TABLE expected (
    ID      INT,
    Code    NVARCHAR(50)
);

/* Insert expected data */
---

/* Act 
   --------------------------------------------------------------------- */

/* Execute SSIS package */
DECLARE @execution_id BIGINT;
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Portfolio.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'DDoubleU', @project_name=N'PortfolioMaster', @use32bitruntime=False, @reference_id=Null;

DECLARE @var0 SMALLINT = 1;
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,  @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0;
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,  @object_type=50, @parameter_name=N'SYNCHRONIZED', @parameter_value=1
EXEC [SSISDB].[catalog].[start_execution] @execution_id;


/* Select record with MAX data load ID because we want the data set just created*/
SELECT [ID], [Code]
    INTO actual
    FROM [Database2].[dbo].[table1];


/* Assert  
   --------------------------------------------------------------------- */
EXEC tSQLt.AssertEqualsTable 'expected', 'actual';


/* Clean up
   --------------------------------------------------------------------- */
DROP TABLE actual;
DROP TABLE expected;

END;

我遇到的问题是,当我在 SSMS 中执行以下命令时

EXEC tSQLt.Run 'testClass';

SSIS 包不会触发。

到目前为止我尝试过的事情:

在堆栈上阅读这篇文章 - 从我所见,我已经按照此处所述创建了我的测试。

运行应该在 SSMS 中单独执行 SSIS 包的代码。这按预期工作。我的意思是包执行并且目标表中的数据是我所期望的。

WAITFOR DELAY在命令之后添加[start_execution]命令以确保 SSIS 包有时间完成,但这似乎不是问题。

卸载 tSQLt 并重新安装它。

4

0 回答 0