sql Server超過了每行的最大位元組數(8060)的原因和解決辦法
阿新 • • 發佈:2019-01-31
一、現象
出現這種錯誤都發生在SQL語句建表時,錯誤提示:
二、原因
為什麼說每行的最大長度是8096位元組?
因為在SQL SERVER中,記錄Record是順序存放在資料頁中的,每一個數據頁的可儲存空間最大為8096位元組(8K-頁頭的96位元組,8192-96=8096),而SQL Server中行是不能跨資料頁的。
因此,如果你的建表語句中可變長度列的總長度超過了8096位元組,就意味著SQL Server的資料頁都裝不下這條記錄了,系統當然就會提示錯誤。
三、解決
知道問題的原因了,解決辦法相對就簡單了!
1、修改你建表語句中相應的列的資料型別或長度(如將nvarchar格式改成text),讓可變長度列的加和小於8060。這樣可以徹底避免出現上述錯誤發生,當然上述的錯誤並不是必然出現。
2、在絕大多數情況下不會出現各列長度超過行限制的時候(這個需要根據儲存的資料的情況自行判斷),你也可以忽略這個提示,這並不會必然影響到你正常的操作。