【问题标题】:Can select COUNT(*) produce the next error?可以选择 COUNT(*) 产生下一个错误吗?
【发布时间】:2021-02-15 15:40:48
【问题描述】:

我正在使用 python 的 pypyodbc 处理 SQL Sever 数据库上的一些 sql BULK 插入命令。然而,在我发现的日志中:

    python   load_d 4c24-4ea4   ENTER SQLExecDirect 
        HSTMT               0x000000000336C260
        UCHAR *             0x0000000003A91188 [      67] "\ a        SELECT COUNT(*) \ a        FROM out_table\ a        "
        SDWORD                    67

python   load_d 4c24-4ea4   EXIT  SQLExecDirect  with return code -1 (SQL_ERROR)
        HSTMT               0x000000000336C260
        UCHAR *             0x0000000003A91188 [      67] "\ a        SELECT COUNT(*) \ a    

FROM out_table\ a        "
    SDWORD                    67

DIAG [22003] [Microsoft][SQL Server Native Client 11.0][SQL Server]Arithmetic overflow error converting expression to data type int. (8115) 

COUNT(*) 是否会返回一个非常大的值,该值会从 INT 限制中“逃脱”?

【问题讨论】:

  • 它实际上是您选择的视图吗?
  • 不... COUNT cmd 在表本身上。该表正在接收大量行。
  • 超过 20 亿行?那么是的,它会溢出,看答案
  • 我认为是这种情况......现在我正在尝试答案!谢谢

标签: python sql-server pypyodbc


【解决方案1】:

是的。它可以。为了解决这个问题,微软引入了 COUNT_BIG-function 详情请看这里https://docs.microsoft.com/en-us/sql/t-sql/functions/count-big-transact-sql?view=sql-server-ver15

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 2019-08-23
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 2017-02-09
    相关资源
    最近更新 更多