Bu makalede ‘Arithmetic overflow error converting expression to data type int’ hatasının çözümünü ele alacağız. Bu hata mesajı herhangi bir sorgu çalıştırdığımızda sorgudaki bir değişkenin tanımlanmış olduğu tür değişkenin(smallint,int vs..) dönen sonucu karşılamaması sonucu ortaya çıkmaktadır.
İnstance altındaki tüm veritabanlarının boyutlarını aşağıdaki komut ile almak istediğimizde hata mesajıyla karşılaşmaktayız.
SELECT d.name,
CONVERT(VARCHAR,SUM(m.size)*8/1024)+' MB' AS [Total disk space]
FROM sys.databases d
JOIN sys.master_files m
ON d.database_id=m.database_id
GROUP BY d.name
ORDER BY d.name
Alınan Hata Mesajı:
Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type int.
Bu hata mesajı ‘size’ kolunundaki değerlerin toplamının int değeri karşılamamasından dolayıdır. Çünkü ilgili kolun değeri int olduğu için maksimum kolun değeri 2^32 değerine ulaşacağı için bu değerin üzerine çıkması aşağıdaki hata mesajını almamıza sebep oluyor.

SUM ifadesini kullanmadan önce size kolununun türü int değerinden bigint değerine döndürülür. Çünkü bigint maksimum alacağı değer 2^64 olduğu için herhangi bir sorunla karşılaşılmayacaktır.
CONVERT(VARCHAR,SUM(CAST(size AS BIGINT))*8/1024)
Sorgumuzu yukarıdaki şekilde düzelttiğimizde ‘size’ türünün bigint olduğunu görmüş oluyoruz. Bir başka dönüştürme ifade ise yukarıda gördüğümüz gibi convert ifadesidir.

Aslında yukarıdaki hatayı cast değil convert ifadesiylede düzeltilebilir. Çünkü cast ve convert aynı ifadeye denk gelmektedir. Bu tamamen bizim tercihimize kalmış olan bir durumdur.
CONVERT(VARCHAR,SUM(Convert(BIGINT,size))*8/1024)+' MB' AS [Total disk space]

Bu makalede ‘Arithmetic overflow error converting expression to data type int’ makalesini görmüş olduk.
Başka bir makalede görüşmek dileğiyle..
Kötü ameli kendisine süslü gösterilip de onu güzel gören kimse, ameli iyi olan kimse gibi mi olacaktır? Şüphesiz Allah dilediğini saptırır, dilediğini hidayete erdirir. (Ey Muhammed!) Onlar için duyduğun üzüntüler yüzünden kendini helak etme! Şüphesiz ki Allah onların yaptıklarını hakkıyla bilendir. Fâtır- 8