Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Azure Data Factory V2中将上一步的输出传递到下一步?_Azure_Azure Data Factory_Azure Data Factory 2 - Fatal编程技术网

如何在Azure Data Factory V2中将上一步的输出传递到下一步?

如何在Azure Data Factory V2中将上一步的输出传递到下一步?,azure,azure-data-factory,azure-data-factory-2,Azure,Azure Data Factory,Azure Data Factory 2,我在Data Factory中构建了一系列活动,如下图所示 我想知道如何从步骤2中的步骤1捕获并传递SQL Server输出(包括错误消息)。如屏幕截图所示,我目前正在使用@activity('PR\u TEST\u RAISE\u ERROR')。输出,希望它捕获错误消息,如ERROR:TEST ERROR message,但当我检查日志表时,我们从使用@activity('PR\u TEST\u RAISE\u ERROR')中得到的消息如下所示。输出: exec [dbo].[PR_TE

我在Data Factory中构建了一系列活动,如下图所示

我想知道如何从
步骤2
中的
步骤1
捕获并传递SQL Server输出(包括错误消息)。如屏幕截图所示,我目前正在使用
@activity('PR\u TEST\u RAISE\u ERROR')。输出
,希望它捕获错误消息,如
ERROR:TEST ERROR message
,但当我检查日志表时,我们从使用
@activity('PR\u TEST\u RAISE\u ERROR')中得到的消息如下所示。输出

exec [dbo].[PR_TEST_LOG_ERROR_CATCHING] '[pr_test_sql_error_catching]', 'success'
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
CREATE TABLE Persons (
    Message nvarchar(max),
    Logged_On datetime
);
{
    "name": "pr_test_sql_error_catching",
    "properties": {
        "description": "Example pipeline showing how we can catch SQL errors",
        "activities": [
            {
                "name": "PR_TEST_RAISE_ERROR",
                "description": "[dbo].[PR_TEST_RAISE_ERROR]",
                "type": "SqlServerStoredProcedure",
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_RAISE_ERROR]"
                },
                "linkedServiceName": {
                    "referenceName": "pr_us_programmatic_sql_db",
                    "type": "LinkedServiceReference"
                }
            },
            {
                "name": "PR_TEST_LOG_ERROR_CATCHING_When_successful",
                "description": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                "type": "SqlServerStoredProcedure",
                "dependsOn": [
                    {
                        "activity": "PR_TEST_RAISE_ERROR",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                    "storedProcedureParameters": {
                        "log_table_name": {
                            "value": "[pr_test_sql_error_catching]",
                            "type": "String"
                        },
                        "message": {
                            "value": "success",
                            "type": "String"
                        }
                    }
                },
                "linkedServiceName": {
                    "referenceName": "pr_sql_db",
                    "type": "LinkedServiceReference"
                }
            },
            {
                "name": "PR_TEST_LOG_ERROR_CATCHING_When_Errored",
                "type": "SqlServerStoredProcedure",
                "dependsOn": [
                    {
                        "activity": "PR_TEST_RAISE_ERROR",
                        "dependencyConditions": [
                            "Failed"
                        ]
                    }
                ],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                    "storedProcedureParameters": {
                        "log_table_name": {
                            "value": "[pr_test_sql_error_catching]",
                            "type": "String"
                        },
                        "message": {
                            "value": {
                                "value": "@activity('PR_TEST_RAISE_ERROR').output",
                                "type": "Expression"
                            },
                            "type": "String"
                        }
                    }
                },
                "linkedServiceName": {
                    "referenceName": "pr_sql_db",
                    "type": "LinkedServiceReference"
                }
            }
        ]
    },
    "type": "Microsoft.DataFactory/factories/pipelines"
}

如果有人想复制我所面临的内容,则
步骤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
exec [dbo].[PR_TEST_LOG_ERROR_CATCHING] '[pr_test_sql_error_catching]', 'failure'
对于
步骤2
当步骤1成功时,我让它使用如下参数运行一个存储过程:

exec [dbo].[PR_TEST_LOG_ERROR_CATCHING] '[pr_test_sql_error_catching]', 'success'
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
CREATE TABLE Persons (
    Message nvarchar(max),
    Logged_On datetime
);
{
    "name": "pr_test_sql_error_catching",
    "properties": {
        "description": "Example pipeline showing how we can catch SQL errors",
        "activities": [
            {
                "name": "PR_TEST_RAISE_ERROR",
                "description": "[dbo].[PR_TEST_RAISE_ERROR]",
                "type": "SqlServerStoredProcedure",
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_RAISE_ERROR]"
                },
                "linkedServiceName": {
                    "referenceName": "pr_us_programmatic_sql_db",
                    "type": "LinkedServiceReference"
                }
            },
            {
                "name": "PR_TEST_LOG_ERROR_CATCHING_When_successful",
                "description": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                "type": "SqlServerStoredProcedure",
                "dependsOn": [
                    {
                        "activity": "PR_TEST_RAISE_ERROR",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                    "storedProcedureParameters": {
                        "log_table_name": {
                            "value": "[pr_test_sql_error_catching]",
                            "type": "String"
                        },
                        "message": {
                            "value": "success",
                            "type": "String"
                        }
                    }
                },
                "linkedServiceName": {
                    "referenceName": "pr_sql_db",
                    "type": "LinkedServiceReference"
                }
            },
            {
                "name": "PR_TEST_LOG_ERROR_CATCHING_When_Errored",
                "type": "SqlServerStoredProcedure",
                "dependsOn": [
                    {
                        "activity": "PR_TEST_RAISE_ERROR",
                        "dependencyConditions": [
                            "Failed"
                        ]
                    }
                ],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                    "storedProcedureParameters": {
                        "log_table_name": {
                            "value": "[pr_test_sql_error_catching]",
                            "type": "String"
                        },
                        "message": {
                            "value": {
                                "value": "@activity('PR_TEST_RAISE_ERROR').output",
                                "type": "Expression"
                            },
                            "type": "String"
                        }
                    }
                },
                "linkedServiceName": {
                    "referenceName": "pr_sql_db",
                    "type": "LinkedServiceReference"
                }
            }
        ]
    },
    "type": "Microsoft.DataFactory/factories/pipelines"
}
对于
步骤2
,当步骤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
exec [dbo].[PR_TEST_LOG_ERROR_CATCHING] '[pr_test_sql_error_catching]', 'failure'
其中,
[dbo].[PR\u TEST\u LOG\u ERROR\u CATCHING]
的编码如下:

exec [dbo].[PR_TEST_LOG_ERROR_CATCHING] '[pr_test_sql_error_catching]', 'success'
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
CREATE TABLE Persons (
    Message nvarchar(max),
    Logged_On datetime
);
{
    "name": "pr_test_sql_error_catching",
    "properties": {
        "description": "Example pipeline showing how we can catch SQL errors",
        "activities": [
            {
                "name": "PR_TEST_RAISE_ERROR",
                "description": "[dbo].[PR_TEST_RAISE_ERROR]",
                "type": "SqlServerStoredProcedure",
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_RAISE_ERROR]"
                },
                "linkedServiceName": {
                    "referenceName": "pr_us_programmatic_sql_db",
                    "type": "LinkedServiceReference"
                }
            },
            {
                "name": "PR_TEST_LOG_ERROR_CATCHING_When_successful",
                "description": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                "type": "SqlServerStoredProcedure",
                "dependsOn": [
                    {
                        "activity": "PR_TEST_RAISE_ERROR",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                    "storedProcedureParameters": {
                        "log_table_name": {
                            "value": "[pr_test_sql_error_catching]",
                            "type": "String"
                        },
                        "message": {
                            "value": "success",
                            "type": "String"
                        }
                    }
                },
                "linkedServiceName": {
                    "referenceName": "pr_sql_db",
                    "type": "LinkedServiceReference"
                }
            },
            {
                "name": "PR_TEST_LOG_ERROR_CATCHING_When_Errored",
                "type": "SqlServerStoredProcedure",
                "dependsOn": [
                    {
                        "activity": "PR_TEST_RAISE_ERROR",
                        "dependencyConditions": [
                            "Failed"
                        ]
                    }
                ],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                    "storedProcedureParameters": {
                        "log_table_name": {
                            "value": "[pr_test_sql_error_catching]",
                            "type": "String"
                        },
                        "message": {
                            "value": {
                                "value": "@activity('PR_TEST_RAISE_ERROR').output",
                                "type": "Expression"
                            },
                            "type": "String"
                        }
                    }
                },
                "linkedServiceName": {
                    "referenceName": "pr_sql_db",
                    "type": "LinkedServiceReference"
                }
            }
        ]
    },
    "type": "Microsoft.DataFactory/factories/pipelines"
}
日志表(
@log\u table\u name
[pr\u test\u sql\u error\u catching]
的创建方式如下:

exec [dbo].[PR_TEST_LOG_ERROR_CATCHING] '[pr_test_sql_error_catching]', 'success'
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
CREATE TABLE Persons (
    Message nvarchar(max),
    Logged_On datetime
);
{
    "name": "pr_test_sql_error_catching",
    "properties": {
        "description": "Example pipeline showing how we can catch SQL errors",
        "activities": [
            {
                "name": "PR_TEST_RAISE_ERROR",
                "description": "[dbo].[PR_TEST_RAISE_ERROR]",
                "type": "SqlServerStoredProcedure",
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_RAISE_ERROR]"
                },
                "linkedServiceName": {
                    "referenceName": "pr_us_programmatic_sql_db",
                    "type": "LinkedServiceReference"
                }
            },
            {
                "name": "PR_TEST_LOG_ERROR_CATCHING_When_successful",
                "description": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                "type": "SqlServerStoredProcedure",
                "dependsOn": [
                    {
                        "activity": "PR_TEST_RAISE_ERROR",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                    "storedProcedureParameters": {
                        "log_table_name": {
                            "value": "[pr_test_sql_error_catching]",
                            "type": "String"
                        },
                        "message": {
                            "value": "success",
                            "type": "String"
                        }
                    }
                },
                "linkedServiceName": {
                    "referenceName": "pr_sql_db",
                    "type": "LinkedServiceReference"
                }
            },
            {
                "name": "PR_TEST_LOG_ERROR_CATCHING_When_Errored",
                "type": "SqlServerStoredProcedure",
                "dependsOn": [
                    {
                        "activity": "PR_TEST_RAISE_ERROR",
                        "dependencyConditions": [
                            "Failed"
                        ]
                    }
                ],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                    "storedProcedureParameters": {
                        "log_table_name": {
                            "value": "[pr_test_sql_error_catching]",
                            "type": "String"
                        },
                        "message": {
                            "value": {
                                "value": "@activity('PR_TEST_RAISE_ERROR').output",
                                "type": "Expression"
                            },
                            "type": "String"
                        }
                    }
                },
                "linkedServiceName": {
                    "referenceName": "pr_sql_db",
                    "type": "LinkedServiceReference"
                }
            }
        ]
    },
    "type": "Microsoft.DataFactory/factories/pipelines"
}
如果有人对整个Data Factory活动序列的源代码感到好奇,则如下所示:

exec [dbo].[PR_TEST_LOG_ERROR_CATCHING] '[pr_test_sql_error_catching]', 'success'
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
CREATE TABLE Persons (
    Message nvarchar(max),
    Logged_On datetime
);
{
    "name": "pr_test_sql_error_catching",
    "properties": {
        "description": "Example pipeline showing how we can catch SQL errors",
        "activities": [
            {
                "name": "PR_TEST_RAISE_ERROR",
                "description": "[dbo].[PR_TEST_RAISE_ERROR]",
                "type": "SqlServerStoredProcedure",
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_RAISE_ERROR]"
                },
                "linkedServiceName": {
                    "referenceName": "pr_us_programmatic_sql_db",
                    "type": "LinkedServiceReference"
                }
            },
            {
                "name": "PR_TEST_LOG_ERROR_CATCHING_When_successful",
                "description": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                "type": "SqlServerStoredProcedure",
                "dependsOn": [
                    {
                        "activity": "PR_TEST_RAISE_ERROR",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                    "storedProcedureParameters": {
                        "log_table_name": {
                            "value": "[pr_test_sql_error_catching]",
                            "type": "String"
                        },
                        "message": {
                            "value": "success",
                            "type": "String"
                        }
                    }
                },
                "linkedServiceName": {
                    "referenceName": "pr_sql_db",
                    "type": "LinkedServiceReference"
                }
            },
            {
                "name": "PR_TEST_LOG_ERROR_CATCHING_When_Errored",
                "type": "SqlServerStoredProcedure",
                "dependsOn": [
                    {
                        "activity": "PR_TEST_RAISE_ERROR",
                        "dependencyConditions": [
                            "Failed"
                        ]
                    }
                ],
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "storedProcedureName": "[dbo].[PR_TEST_LOG_ERROR_CATCHING]",
                    "storedProcedureParameters": {
                        "log_table_name": {
                            "value": "[pr_test_sql_error_catching]",
                            "type": "String"
                        },
                        "message": {
                            "value": {
                                "value": "@activity('PR_TEST_RAISE_ERROR').output",
                                "type": "Expression"
                            },
                            "type": "String"
                        }
                    }
                },
                "linkedServiceName": {
                    "referenceName": "pr_sql_db",
                    "type": "LinkedServiceReference"
                }
            }
        ]
    },
    "type": "Microsoft.DataFactory/factories/pipelines"
}
提前感谢您对我如何在Azure Data Factory中将错误消息(或任何类型的输出)从上一步传递到下一步的回答/建议