场景

在利用dbartisan把数据从Syabse导入MySQL时,有个表遇到了问题:
“““c
SQL Server is now using a multi-byte character set, and the TEXT character counts have not been re-calculated using this character set for table ‘zs_xs_bz’. Use DBCC FIX_TEXT on this table before running the query again.

###### 分析
原因提示说的很清楚,SQL服务器用了多字节字符集,'zs_xs_bz'这个表里的文本字符计数在查询数据前需要重新计算
###### 解决
打开isql,执行:
```bash
# 登录进sybase服务器
isql -Uuser -P
# 选择库
use database1
 # 利用dbcc fix_text修复某表的字符计数问题,注意表外边别忘了有半角括号
dbcc fix_text (zs_xs_bz)

再执行sql 就一切正常了

更多背景知识(参考这里

DBCC是一个实用命令集,用来检查一个数据库的逻辑一致性及物理一致性。在开发和应用中,DBCC是我们经常要使用的命令。

DBCC命令的格式如下

dbcc
(checktable ((表名|表标识( [, skip_ncindex] ) |
checkdb [(数据库名[, skip_ncindex] )] |
checkalloc [ (数据库名[, fix | nofix] )] |
tablealloc( {表名|表标识}
[,{full |optimized |fast |null}
[, fix |nofix] ]]) |
indexalloc ( {表名|表标识},索引标识
[,{full |optimezed | fast | null}
[, fix |nofix ]] ) |
checkcatalog [ (数据库名)] |
dbrepair(数据库名,dropdb ) |
reindex({表名|表标识} ) |
fix_text({表名|表标识) }

fix_text选项

  SQL Server的字符集由单字节转变为多字节后,fix_text选项用于升级文本值。SQL Server的字符集由单字节转变为多字节字符集会使文本数据的管理更加复杂。由于文本值可能较大足以覆盖若干页,SQL Server必须能处理(通过页约束)可能横跨页的字符。为做到这点,服务器需要在每一文本页上添加一些信息。SA或表属主必须在文本数据的每一个表上运行dbcc fix_text,以计算所需要的新页数。