我正在尝试为 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 并重新安装它。