我正在进行ETL流程,在该流程中,我们将数据从多个暂存表移至其对应的目标表(进行了一些转换)。
此过程涉及一个父存储的proc,它调用子proc,每个表1个proc。
我们有一个日志表,其中有一个GUID字段作为主键。对于在相应ETL过程中更新/插入的所有记录,此GUID应该保持相同。
当前,我执行以下操作:
DECLARE @etlid UNIQUEIDENTIFIER = NEWID()
BEGIN
BEGIN TRY
EXEC dbo.etl_premier_main @etlid
EXEC dbo.etl_premier_financial @etlid
我们只是在父过程中声明了一个GUID,并将其作为参数传递给子过程。
但是,此方法不能确保每次都会为日志表生成唯一值。
任何助手将不胜感激。
答案 0 :(得分:1)
您可以尝试切换到NEWSEQUENTIALID()
。
创建一个GUID,该GUID大于自Windows启动以来在指定计算机上此功能先前生成的任何GUID。
出于某些考虑,我会阅读以下Microsoft Doc
DECLARE @etlid UNIQUEIDENTIFIER = NEWSEQUENTIALID() BEGIN
BEGIN TRY
EXEC dbo.etl_premier_main @etlid
EXEC dbo.etl_premier_financial @etlid