SQL Server創(chuàng)建表最大行超過限制的解決方法
SQL Server創(chuàng)建表時,如果***行大小超過了每行的***字節(jié)數(shù),應(yīng)該如何處理呢?下面就為您介紹解決該問題的方法,供您參考。
一、現(xiàn)象
一般出現(xiàn)這種現(xiàn)象都是適用sql文件在查詢分析器里建庫的時候,現(xiàn)象一般都是提示:
SQL Server創(chuàng)建表 'xxxx',但其***行大?。?0438)超過了每行的***字節(jié)數(shù)(8060)。如果結(jié)果行長度超過 8060 字節(jié),則此表中行的 INSERT 或 UPDATE 將失敗。
其中xxxx是你的建的表名,10438是你建表語句中可變長度列(如 nvarchar 或 varbinary)的總長度,8060是SQL Server對行長度的***限制。
二、原因
其實把上面三個概念搞清楚,警告的原因就應(yīng)該清楚了,就是因為你的SQL Server創(chuàng)建表語句中可變長度列的總長度超過了SQL Server對行***長度的限制8060。如果每一行中數(shù)據(jù)的總長度不超過8060 字節(jié),就仍可以向表中插入行。但是如果數(shù)據(jù)超過8060 字節(jié),因此系統(tǒng)提示你就會出現(xiàn)插入或更新操作失敗。
錯誤提示:
服務(wù)器:信息 511,級別 16,狀態(tài) 1,第 5 行
無法創(chuàng)建大小為 的行,該值大于允許的***值 8060。
語句已終止。
舉個例子:比如我總共有10塊錢,買A東西可能花1-5塊,買B東西可能花2-3塊,買C東西可能花3-6塊,那我在做預(yù)算的時候就要提醒自己,如果ABC三個東西都要花上限的錢,那我的錢可就不夠了,因為5+3+6=14 >10,雖然可能我只花了1+2+3=6塊錢就把ABC全買了。
三、解決
知道問題的原因了,解決辦法相對就簡單了!
1、修改SQL Server創(chuàng)建表語句中相應(yīng)的列的數(shù)據(jù)類型或長度(如將nvarchar格式改成text),讓可變長度列的加和小于8060。這樣可以徹底避免出現(xiàn)上述錯誤發(fā)生,當(dāng)然上述的錯誤并不是必然出現(xiàn)。
2、在絕大多數(shù)情況下不會出現(xiàn)各列長度超過行限制的時候(這個需要根據(jù)存儲的數(shù)據(jù)的情況自行判斷),你也可以忽略這個提示,這并不會必然影響到你正常的操作。
【編輯推薦】