По некоторым причинам в моем сценарии OLE DB Destination
на самом деле был настроен на прием DT_CY
.Однако приведение к этому формату (независимо от длины входных и целевых данных, а также от того, были ли данные NULL
, когда они поступили) всегда вызывало одну и ту же проблему.
После добавления средств просмотра данныхЯ могу заключить, что это как-то связано с языком.Здесь, в Дании, мы используем запятую (,
) в качестве десятичных разделителей, а точки (.
) в качестве разделителей тысяч, а не наоборот.
Это означает, что огромное число, подобное 382,939,291,293.38
, будет (после преобразования в DT_CY
) выглядит как 382.939.291.293,38
.Несмотря на то, что я сильно сомневался, что это может быть проблемой, я решил сделать напротив того, что я изначально планировал.
Я решил перейти к расширенным настройкам моего OLE DB Destination
и вместо этого измените тип столбца DT_CY
на DT_STR
.Затем я добавил преобразование Derived Column
и ввел следующее выражение для преобразования столбца до того, как данные будут доставлены к месту назначения.
REPLACE(SUBSTRING(Price, 2, 18), ",", ".")
, где Price
было столбцомname.
К моему большому удивлению, это решило проблему, поскольку я понял, что мой OLE DB Destination
теперь отправляет данные в виде строки, что SQL Server прекрасно понимает.
Я уверен, что это ошибка!Я использовал SQL Server 2008, поэтому он мог быть решен в более поздних выпусках.Тем не менее, я считаю весьма критичным, что такая важная вещь не работает правильно!