SET NOCOUNT ON
DECLARE @folderName varchar(255),@projectName varchar(255);
DECLARE @validation_id bigint,@validation bigint
DECLARE @message NVARCHAR(MAX)
DECLARE @Cr as varchar(10)=char(13)
DECLARE @CrLf as varchar(10)=char(13)+Char(10)
DECLARE ssis_cursor CURSOR FOR
SELECT folderName , projectName as ProjectPath FROM
(
SELECT folders.name as folderName
, projects.name as projectName
,ROW_NUMBER() OVER (PARTITION BY projects.[project_id] ORDER BY last_deployed_time DESC) AS RowNum
FROM [SSISDB].[catalog].[projects] projects
inner join [SSISDB].[catalog].[folders] folders
on folders.folder_id = projects.folder_id
) AS A WHERE RowNum = 1
order by ProjectPath
OPEN ssis_cursor
FETCH NEXT FROM ssis_cursor
INTO @folderName, @projectName
WHILE @@FETCH_STATUS = 0
BEGIN
Print '---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
Print 'Validaton of :' + @projectName + '\' + @folderName
EXECUTE SSISDB.catalog.validate_project
@folder_name =@folderName,
@project_name = @projectName,
@validate_type = 'F',
@validation_id = @validation_id OUTPUT,
@use32bitruntime = 0,
@environment_scope = 'A'
set @validation= @validation_id
print 'ValidationID:' + cast(@validation as varchar(100))
WAITFOR DELAY '00:00:10';
SEt @message= 'SSIS Validation' +@Cr
Select @message = @message + message_desc + ' - ' + message + @Cr from SSISDB.catalog.operation_messages m
INNER JOIN
(
VALUES
(-1,'Unknown')
, (120,'Error')
, (110,'Warning')
, (70,'Information')
, (10,'Pre-validate')
, (20,'Post-validate')
, (30,'Pre-execute')
, (40,'Post-execute')
, (60,'Progress')
, (50,'StatusChange')
, (100,'QueryCancel')
, (130,'TaskFailed')
, (90,'Diagnostic')
, (200,'Custom')
, (140,'DiagnosticEx')
, (400,'NonDiagnostic')
, (80,'VariableValueChanged')
) D (message_type, message_desc)
ON D.message_type = m.message_type
where operation_id = @validation
Print @CrLf
select CASE status
-- created (1)
-- running (2)
-- canceled (3)
-- failed (4)
-- pending (5)
-- ended unexpectedly (6)
-- succeeded (7)
-- stopping (8)
-- completed (9).
WHEN 1 THEN cast(6 as char(1)) + ' created internal error'
WHEN 2 THEN cast(6 AS Char(1)) + ' running internal error'
WHEN 3 THEN cast(3 AS Char(1)) + ' cancelled'
WHEN 4 THEN cast(1 AS Char(1)) + ' failed'
WHEN 5 THEN cast(6 AS Char(1)) + ' Pending internal error '
WHEN 6 THEN cast(6 AS Char(1)) + ' ended internal error'
WHEN 7 THEn cast(0 AS Char(1)) + ' succeeded'
WHEN 8 THEN cast(1 AS Char(1)) + ' completed but failed'
END as Status,
@message as Message from SSISDB.catalog.validations
where validation_id = @validation
Print @CrLf
Print @message
Print @Crlf
Print @Crlf
Print @Crlf
FETCH NEXT FROM ssis_cursor
INTO @folderName, @projectName
END
CLOSE ssis_cursor;
DEALLOCATE ssis_cursor;