我已经在Data Factory中建立了一系列活动,如下图所示。
我想知道如何从Step 1
中的Step 2
捕获并传递SQL Server输出(包括错误消息)。如屏幕快照所示,我目前正在使用@activity('PR_TEST_RAISE_ERROR').output
,希望它捕获到ERROR: test error message
之类的错误消息,但是当我检查日志表时,我们使用{{1} }是这样的:
万一有人想复制我面对的东西,@activity('PR_TEST_RAISE_ERROR').output
中存储过程的代码如下:
Step 1
对于SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[PR_TEST_RAISE_ERROR]
AS
RAISERROR ('ERROR: test error message',16,1);
GO
,当第1步成功完成时,我让它运行带有以下参数的存储过程:
Step 2
对于exec [dbo].[PR_TEST_LOG_ERROR_CATCHING] '[pr_test_sql_error_catching]', 'success'
,当第1步失败时,我让它运行如下相同的存储过程:
Step 2
exec [dbo].[PR_TEST_LOG_ERROR_CATCHING] '[pr_test_sql_error_catching]', 'failure'
的编码如下:
[dbo].[PR_TEST_LOG_ERROR_CATCHING]
和日志表(SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[PR_TEST_LOG_ERROR_CATCHING]
(
@log_table_name AS NVARCHAR(100),
@message AS NVARCHAR(MAX)
)
AS
DECLARE @cur_date DATETIME = getdate();
DECLARE @query NVARCHAR(MAX);
SET @query = (
'INSERT INTO [dbo].' + @log_table_name
+ '(
[Message],
[Logged_On]
)
VALUES ('''
+ @message + ''','
+ '''' + CONVERT(NVARCHAR, @cur_date) + ''''
+ ');'
);
EXEC (@query)
GO
)@log_table_name
的创建如下:
[pr_test_sql_error_catching]
如果有人对整个Data Factory活动序列的源代码感到好奇,就像这样:
CREATE TABLE Persons (
Message nvarchar(max),
Logged_On datetime
);
预先感谢您对我如何在Azure Data Factory中将错误消息(或任何类型的输出)从上一步传递到下一步的回答/建议!