TTC*_*TCG 12 sql-server ssis sql-server-2008
我有一个SSIS包,可以将数据导入SQL Server 2008数据库.我已在SQL Server代理中设置计划作业以运行该程序包.当我查看历史记录时,我只能看到作业是否成功运行.除此之外,我看不到其他消息.
我想知道每当执行作业时导入的记录数.我该如何监控?我应该使用SSIS包中的其他组件还是在SQL Server代理作业设置中设置一些配置?
我在SQL Server代理作业设置中找到了一些日志工具,但我不确定它是否能满足我的要求.
小智 21
如果您只是想知道正在处理的列并且对该信息不感兴趣以供进一步使用,一种可能的选择是使用SSIS日志记录功能.以下是它对数据流任务的工作原理.
希望有所帮助.
截图#1:

截图#2:

截图#3:

截图#4:

小智 5
使用以下过程获取带有执行 ID 的 SSIS 错误
CREATE PROCEDURE [dbo].[get_ssis_status] @EXECUTION_ID INT\n
AS
BEGIN
SELECT o.operation_id EXECUTION_ID
,convert(datetimeoffset,OM.message_time,109) TIME
,D.message_source_desc ERROR_SOURCE
,OM.message ERROR_MESSAGE
,CASE ex.STATUS
WHEN 4 THEN 'Package Failed'
WHEN 7 THEN CASE EM.message_type
WHEN 120 THEN 'package failed'
WHEN 130 THEN 'package failed' ELSE 'Package Succeed'END
END AS STATUS
FROM SSISDB.CATALOG.operation_messages AS OM
INNER JOIN SSISDB.CATALOG.operations AS O ON O.operation_id = OM.operation_id
INNER JOIN SSISDB.CATALOG.executions AS EX ON o.operation_id = ex.execution_id
INNER JOIN (VALUES (- 1,'Unknown'),(120,'Error'),(110,'Warning'),(130,'TaskFailed')) EM(message_type, message_desc) ON EM.message_type = OM.message_type
INNER JOIN (VALUES
(10,'Entry APIs, such as T-SQL and CLR Stored procedures')
,(20,'External process used to run package (ISServerExec.exe)')
,(30,'Package-level objects')
,(40,'Control Flow tasks')
,(50,'Control Flow containers')
,(60,'Data Flow task')
) D(message_source_type, message_source_desc) ON D.message_source_type = OM.message_source_type
WHERE ex.execution_id = @EXECUTION_ID
AND OM.message_type IN (120,130,-1);
END
Run Code Online (Sandbox Code Playgroud)