CREATE PARTITION FUNCTION MY_Partition_Function_RIGHT(BIGINT)
AS RANGE RIGHT
FOR VALUES 
(
(1303142400 + 1*3600)*1000,
(1303142400 + 2*3600)*1000,
(1303142400 + 3*3600)*1000
)上面的语句创建一个bigint类型的分区函数。可是提示错误如下:
消息 8115,级别 16,状态 2,第 4 行
将 expression 转换为数据类型 int 时出现算术溢出错误。
难道说FOR VALUES列表内仅仅支持int类型的数值?紧急求救!谢谢。

解决方案 »

  1.   

    除 text、ntext、image、xml、timestamp、varchar(max)、nvarchar(max)、varbinary(max)、别名数据类型或 CLR 用户定义数据类型外,所有数据类型均有效。所以bigint有效.
      

  2.   

    要先转换类型,以下语句测试通过,CREATE PARTITION FUNCTION MY_Partition_Function_RIGHT(BIGINT)
    AS RANGE RIGHT
    FOR VALUES 
    (
        (convert(bigint,1303142400) + 1*3600)*1000,
        (convert(bigint,1303142400) + 2*3600)*1000,
        (convert(bigint,1303142400) + 3*3600)*1000
    )
      

  3.   

    CREATE PARTITION FUNCTION MY_Partition_Function_RIGHT(BIGINT)
    AS RANGE RIGHT
    FOR VALUES 
    (
        (cast(1303142400 as bigint)+ 1*3600)*1000,
        (cast(1303142400 as bigint)+ 2*3600)*1000,
        (cast(1303142400 as bigint)+ 3*3600)*1000
    )
    不指定情况下,默认int
      

  4.   

    唉,,,,明白了nnd,我还以为是数据类型支持问题。SQL SERVER内部运算默认中间数据类型为INT实在是个白痴的设计。