我使用python的pypyodbc来处理sql server数据库上的一些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_big函数,详见https://learn.microsoft.com/en-us/sql/t-sql/functions/count-big-transact-sql?view=sql-server-ver15