Azure Data Factory 를 이용하여 Blob storage 에 있는 CSV 파일을 Azure SQL DB로 데이터를 파이프라인을 통해 이동하는 과정에서 CSV 파일에 포함된 GUID 데이터 형식이 올바르게 맵핑되어 있지 않은 경우 Azure SQL DB 의 uniqueidentifier 컬럼으로 INSERT 실패하고 아래와 같은 오류가 발생할 수 있습니다.
DataSet Source: Blob CSV 파일 데이터
id|name|uniqueid
1|LAIGO|0E984725-C51C-4BF4-9960-E1C80E27ABA0
2|SMGO |00000000-0000-0000-0000-000000000000
1|LAIGO|0E984725-C51C-4BF4-9960-E1C80E27ABA0
2|SMGO |00000000-0000-0000-0000-000000000000
DataSet Destination: SQL Server 테이블
CREATE TABLE [dbo].[uniqueid](
[id] [int] NULL,
[name] [nvarchar](30) NULL,
[uniqueid] [uniqueidentifier] NULL
) ON [PRIMARY]
GO
[id] [int] NULL,
[name] [nvarchar](30) NULL,
[uniqueid] [uniqueidentifier] NULL
) ON [PRIMARY]
GO
파이프라인 디버깅 오류 메시지
{
"errorCode": "2200",
"message": "'Type=System.InvalidOperationException,Message=The given value of type String from the data source cannot be converted to type uniqueidentifier of the specified target column.,Source=System.Data,''Type=System.InvalidCastException,Message=Failed to convert parameter value from a String to a Guid.,Source=System.Data,''Type=System.InvalidCastException,Message=Invalid cast from 'System.String' to 'System.Guid'.,Source=mscorlib,'",
"failureType": "UserError",
"target": "Copy Data1"
}
"errorCode": "2200",
"message": "'Type=System.InvalidOperationException,Message=The given value of type String from the data source cannot be converted to type uniqueidentifier of the specified target column.,Source=System.Data,''Type=System.InvalidCastException,Message=Failed to convert parameter value from a String to a Guid.,Source=System.Data,''Type=System.InvalidCastException,Message=Invalid cast from 'System.String' to 'System.Guid'.,Source=mscorlib,'",
"failureType": "UserError",
"target": "Copy Data1"
}
오류에서 볼 수 있듯이 String 을 uniqueidentifier 변환이 실패한 것으로 볼 수 있으며, 이 경우 SOURCE 또는 DESTINATION DataSet 의 Schema 에서 해당 uniqueidentifier 컬럼의 TYPE을 Guid 로 명시할 경우 오류 없이 변환할 수 있습니다.
DataSet - Azure SQL DB
DataSet - Blob
작성자: Lai Go / 작성일자: 2019.02.27