Saya menemukan aritmatika melimpah dalam pernyataan SELECT sederhana. Kueri itu seperti di bawah ini misalnya
SELECT [SaleValue] FROM Sales
[SaleValue]
adalah tipe data decimal(9,0)
dan bukan kolom yang dihitung.
Alasan ini terjadi adalah karena entah bagaimana kolom memiliki baris di mana bidang ini menyimpan nilai yang LEBIH BESAR dari tipe data tertentu, misalnya decimal(10,0)
.
Saya hanya bisa mendapatkan pilih untuk bekerja ketika saya meningkatkan ukuran kolom. Tabel tersebut memiliki dua instance lain dalam dua kolom dan baris lainnya.
Bagaimana situasi ini mungkin? Bagaimana nilai di luar rentang disimpan di kolom pada awalnya?
Saya menggunakan Microsoft SQL server + ini adalah tabel dasar, bukan tampilan.
decimal
- adecimal(9,0)
harus menempati 5 byte,decimal(10,0)
9. Jadi saya pikir itu kurang mungkin bahwa Anda bisa melakukan ini dengan mengedit tabel sistem karena Anda tidak akan memiliki ukuran penyimpanan yang benar untuk data di setiap baris.Jawaban:
Ini bisa terjadi dalam beberapa cara, misalnya seperti yang dijelaskan dalam Pemecahan masalah DBCC kesalahan 2570 di SQL Server 2005 dan versi yang lebih baru :
Artikel itu berisi banyak informasi berguna tentang topik tersebut. Untuk dasar-dasarnya, lihat dokumentasi untuk
DBCC CHECKDB
danDATA_PURITY
opsi khususnya.sumber