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