货币数据类型溢出
Money data type is overflowed
我正在使用 SSIS 2008。我的任务是从 OLE BD 中的 table 获取统计信息并将其保存在平面文件中。我在保存在 OLE DB 中的 table 中使用了两个字段,这些字段是 NVARCHAR 数据类型。金额和货币是两个字段。我
想要 Amount 的 SUM,所以尝试使用 Decimal 和 Numeric 进行转换,但它没有用,所以使用 Money 并且它起作用了。
我的查询是:
select sum(cast(PAID_AMOUNT as money)) as Amount, CUR as AmountCurrency, COUNT(*) as Records
from Raw_table group by CUR order by 2
我正在使用 OLE DB 源代码编辑器 - SQl 命令选项来查询语句。单击预览按钮显示结果没有任何错误。
但是当我执行任务时出现错误:
[Inv Stats [1]] Error: There was an error with output column "Amount" (17) on output "OLE DB Source Output" (11). The column status returned was: "Conversion failed because the data value overflowed the specified type.".
所以我通过重定向错误捕获了平面文件中导致行的错误。和捕获的文件:
Amount,AmountCurrency,Records,ErrorCode,ErrorColumn
3073904391,JPY,9806,-1071607691,17
我是 SSIS 新手,对数据类型知之甚少。请帮忙。
如果我的描述不清楚,请道歉,因为这是我的第一个 post。
来自 SQL 查询的值,类型 money
,值为 3073904391
,将溢出类型 [DT_I4]
的列。我不确定您是如何在 OLE DB Source
中使用该查询以 [DT_I4]
结束的(当我从头开始设置它时,它默认为 currency [DT_CY]
),但我建议更改Advanced Editor > Input and Output Properties > Output Columns
到 currency [DT_CY]
.
中的数据类型
根据此 MSDN article,如果 sql 服务器中的 SUM()
函数应用于 Money
数据类型,它 returns 类型的值 Money
Money
的相关 SSIS 数据类型为 DT_CY
,因此您必须确保 Amount 列数据类型为 DT_CY
,只需右键单击 OLEDB 源并去高级编辑器检查这个。
OLE DB 源 --> 右击 "Advanced Editor" --> Input/Output 属性 --> OLE DB 源输出 --> 展开 "Output Columns" -- > 单击 Amount
列并将数据类型从属性更改为 DT_CY
如果您想了解有关 SSIS 数据类型和相关 SQL 服务器数据类型的更多信息,请点击以下链接:
我正在使用 SSIS 2008。我的任务是从 OLE BD 中的 table 获取统计信息并将其保存在平面文件中。我在保存在 OLE DB 中的 table 中使用了两个字段,这些字段是 NVARCHAR 数据类型。金额和货币是两个字段。我 想要 Amount 的 SUM,所以尝试使用 Decimal 和 Numeric 进行转换,但它没有用,所以使用 Money 并且它起作用了。
我的查询是:
select sum(cast(PAID_AMOUNT as money)) as Amount, CUR as AmountCurrency, COUNT(*) as Records
from Raw_table group by CUR order by 2
我正在使用 OLE DB 源代码编辑器 - SQl 命令选项来查询语句。单击预览按钮显示结果没有任何错误。
但是当我执行任务时出现错误:
[Inv Stats [1]] Error: There was an error with output column "Amount" (17) on output "OLE DB Source Output" (11). The column status returned was: "Conversion failed because the data value overflowed the specified type.".
所以我通过重定向错误捕获了平面文件中导致行的错误。和捕获的文件:
Amount,AmountCurrency,Records,ErrorCode,ErrorColumn
3073904391,JPY,9806,-1071607691,17
我是 SSIS 新手,对数据类型知之甚少。请帮忙。 如果我的描述不清楚,请道歉,因为这是我的第一个 post。
来自 SQL 查询的值,类型 money
,值为 3073904391
,将溢出类型 [DT_I4]
的列。我不确定您是如何在 OLE DB Source
中使用该查询以 [DT_I4]
结束的(当我从头开始设置它时,它默认为 currency [DT_CY]
),但我建议更改Advanced Editor > Input and Output Properties > Output Columns
到 currency [DT_CY]
.
根据此 MSDN article,如果 sql 服务器中的 SUM()
函数应用于 Money
数据类型,它 returns 类型的值 Money
Money
的相关 SSIS 数据类型为 DT_CY
,因此您必须确保 Amount 列数据类型为 DT_CY
,只需右键单击 OLEDB 源并去高级编辑器检查这个。
OLE DB 源 --> 右击 "Advanced Editor" --> Input/Output 属性 --> OLE DB 源输出 --> 展开 "Output Columns" -- > 单击 Amount
列并将数据类型从属性更改为 DT_CY
如果您想了解有关 SSIS 数据类型和相关 SQL 服务器数据类型的更多信息,请点击以下链接: