String or binary data would be truncated

--列出所有table使用的空間
CREATE TABLE TableSizes
(
table_name SYSNAME,
row_count int,
reserved_size nvarchar(10),
data_size nvarchar(10),
index_size nvarchar(10),
unused_size nvarchar(10)
)

INSERT TableSizes
EXEC sp_MSforeachtable 'sp_spaceused ''?'''

SELECT * FROM TableSizes ORDER BY row_count desc

DROP TABLE TableSizes

=============================================================
一直以來,我都是用這個script來查所有table佔用的體積
今天在一台簡體的SQL2005上面執行出現fail
出現以下的eror

Msg 8152, Level 16, State 14, Procedure sp_spaceused, Line 180
String or binary data would be truncated.

google了一下,大神給我的籤詩表示

關於 String or binary data would be truncated. 的錯誤訊息的發生原因
是因為要寫入的資料長度大於其在資料庫的欄位!!
例如: PRODUCE_NAME 的欄位是 VARCHAR(10) , 但你要填入的資料為 'super computer'
就會發生這樣的現象!!

ok,有些table顯示出來的size太大惹~我把欄位訂成varchar(10)看來是太小
將上面(10) 都改成 (20) 果然就可以正常執行惹~

因此跟SQL語系無關
純粹就是這個DB有一百多GB的關係....

留言