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