Microsoft KB Archive/911851

From BetaArchive Wiki
Knowledge Base


Error message when you run the sp_helpfile stored procedure in SQL Server 2005 or in SQL Server 2000: "Arithmetic overflow error converting expression to data type int"

Article ID: 911851

Article Last Modified on 11/2/2007



APPLIES TO

  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition



Bug #: 412400 (SQLBUDT)


SYMPTOMS

Consider the following scenario. You are running Microsoft SQL Server 2005 or Microsoft SQL Server 2000. You run the sp_helpfile stored procedure on a data file or on a log file. In this scenario, you may receive the following error message:

Msg 8115, Level 16, State 2, Procedure sp_helpfile, Line 31
Arithmetic overflow error converting expression to data type int

CAUSE

This problem occurs when the max_size value of the file multiplied by 8 is greater than the maximum int size (2,147,483,647).

Note max_size is a field of the system sys.database_files view. The max_size field indicates the maximum file size in 8-KB pages.

WORKAROUND

To work around this problem, run the following query:

SELECT name, physical_name, FILEGROUP_NAME(data_space_id) AS filegroup,
       CONVERT(nvarchar(15), size * 8) + N' KB' AS 'size', 
       CASE max_size
         WHEN -1
           THEN N'Unlimited'
         ELSE
           CONVERT(nvarchar(15), CONVERT(bigint, max_size) * 8) + N' KB'
       END AS 'maxsize', 
       CASE is_percent_growth
         WHEN 1
           THEN CONVERT(nvarchar(3), growth) + N'%'
         WHEN 0
           THEN CONVERT(nvarchar(15), growth * 8) + N' KB'
       END AS 'growth',
       CASE type
         WHEN 0 THEN 'data only'
         WHEN 1 THEN 'log only'
       END AS 'usage'
FROM SYS.DATABASE_FILES
WHERE file_id = FILE_ID('FileName')

Note FileName represents the database file name.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

Keywords: kbexpertiseadvanced kbtshoot KB911851