我在SQL查询分析器里执行语句,会报错,怎么回事?报错提示:
警告: 已创建表 '明细单主表',但其最大行大小(11271)超过了每行的最大字节数(8060)。如果结果行长度超过 8060 字节,则此表中行的 INSERT 或 UPDATE 将失败。报错语句:
CREATE TABLE [dbo].[明细单主表] (
[发票号] [varchar] (200)  NOT NULL ,
[输入日期] [datetime] NULL ,
[核销单号] [varchar] (200)  NULL ,
[外运编号] [varchar] (200)  NULL ,
[报关单编号] [varchar] (200)  NULL ,
[报关单防伪号] [varchar] (200)  NULL ,
[合约号] [varchar] (200)  NULL ,
[信用证号码] [varchar] (200)  NULL ,
[开证行] [text]  NULL ,
[开证日期] [datetime] NULL ,
[成交条件] [varchar] (200)  NULL ,
[收汇方式] [varchar] (200)  NULL ,
[贸易性质代码] [varchar] (200)  NULL ,
[贸易性质名称] [varchar] (200)  NULL ,
[贸易国别代码] [varchar] (200)  NULL ,
[贸易国别名] [varchar] (200)  NULL ,
[消费国别代码] [varchar] (200)  NULL ,
[消费国别名] [varchar] (200)  NULL ,
[受益人] [text]  NULL ,
[提单通知人] [text]  NULL ,
[收货人] [text]  NULL ,
[运输方式] [varchar] (200)  NULL ,
[运费方式] [varchar] (200)  NULL ,
[口岸] [varchar] (200)  NULL ,
[转船港] [varchar] (200)  NULL ,
[目的港LC指定] [varchar] (200)  NULL ,
[货妥日期] [datetime] NULL ,
[可否转运] [varchar] (200)  NULL ,
[可否分批] [varchar] (200)  NULL ,
[装运期限] [datetime] NULL ,
[有效期限] [datetime] NULL ,
[折扣] [float] NULL ,
[明佣] [float] NULL ,
[暗佣] [float] NULL ,
[原产地标记] [varchar] (200)  NULL ,
[币别] [varchar] (200)  NULL ,
[重量单位] [varchar] (200)  NULL ,
[发票总数] [float] NULL ,
[总金额] [money] NULL ,
[箱数] [float] NULL ,
[毛重] [float] NULL ,
[净重] [float] NULL ,
[体积] [float] NULL ,
[正本提单] [int] NULL ,
[副本提单] [int] NULL ,
[产地证通知人] [text]  NULL ,
[公司抬头] [text]  NULL ,
[唛头] [text]  NULL ,
[备注] [text]  NULL ,
[佣金信息] [text]  NULL ,
[报关单备注] [text]  NULL ,
[员工工号] [varchar] (200)  NULL ,
[员工名字] [varchar] (200)  NULL ,
[部门代码] [varchar] (200)  NULL ,
[部门名称] [varchar] (200)  NULL ,
[报审日期] [datetime] NULL ,
[审单日期] [datetime] NULL ,
[接收日期] [datetime] NULL ,
[分单日期] [datetime] NULL ,
[送银行日期] [datetime] NULL ,
[收汇日期] [datetime] NULL ,
[审单员工号] [varchar] (200)  NULL ,
[审单员姓名] [varchar] (200)  NULL ,
[制单员工号] [varchar] (200)  NULL ,
[制单员姓名] [varchar] (200)  NULL ,
[运输员工号] [varchar] (200)  NULL ,
[运输员姓名] [varchar] (200)  NULL ,
[FORMA号] [varchar] (200)  NULL ,
[产地证号] [varchar] (200)  NULL ,
[汇票期限] [varchar] (200)  NULL ,
[汇票日期] [datetime] NULL ,
[汇票付款人] [text]  NULL ,
[代收行] [text]  NULL ,
[特殊条款] [text]  NULL ,
[生产厂家] [text]  NULL ,
[制单日期] [datetime] NULL ,
[运费] [money] NULL ,
[折扣说明] [text]  NULL ,
[金额] [money] NULL ,
[保单号] [varchar] (200)  NULL ,
[预保单号] [varchar] (200)  NULL ,
[船名] [varchar] (200)  NULL ,
[船次] [varchar] (200)  NULL ,
[出运日] [datetime] NULL ,
[保险公司代码] [varchar] (200)  NULL ,
[保险公司名称] [varchar] (200)  NULL ,
[投保加成] [float] NULL ,
[赔款币别] [varchar] (200)  NULL ,
[赔款地点] [varchar] (200)  NULL ,
[保险费] [money] NULL ,
[保险备注] [text]  NULL ,
[保险日期] [datetime] NULL ,
[通用备注] [text]  NULL ,
[发票备注] [text]  NULL ,
[汇票备注] [text]  NULL ,
[装箱单备注] [text]  NULL ,
[产地证旧备注] [text]  NULL ,
[产地证新备注] [text]  NULL ,
[FORMA备注] [text]  NULL ,
[产地证申请书备注] [text]  NULL ,
[FORMA申请书备注] [text]  NULL ,
[装船声明备注] [text]  NULL ,
[装船通知书备注] [text]  NULL ,
[受益人声明备注] [text]  NULL ,
[品质检验证书备注] [text]  NULL ,
[新海关发票备注] [text]  NULL ,
[加海关发票备注] [text]  NULL ,
[美海关发票备注] [text]  NULL ,
[投保单保险备注] [text]  NULL ,
[证明信内容] [text]  NULL ,
[传真对象] [text]  NULL ,
[传真注释] [varchar] (200)  NULL ,
[传真号码] [varchar] (200)  NULL ,
[传真内容] [text]  NULL ,
[电传客户] [varchar] (200)  NULL ,
[电传国别] [varchar] (200)  NULL ,
[电传号码] [varchar] (200)  NULL ,
[电传内容] [text]  NULL ,
[信封内容] [text]  NULL ,
[邮局收据内容] [text]  NULL

GO

解决方案 »

  1.   

    在查询分析器里会报警告,但语句会正常运行
    可是我在ADOQUERY中执行此语句就不让通过,怎么解决?
      

  2.   

    你这个表在DELPHI是无法建立的了,因为SQLServer中的每个表的最在字节数是8060,你在查询分析器中都报了错,你要是在企业管理器中就你这个表都不让你建立,你只能是手动建立你需要的这个表了,不过我不敢说你建完了这个表在以后的操做中会不会出现错误。现在你唯一的最好的方法是把你的可以减小的字段的值相应的减小,减到总字节不超过8016就行了。
      

  3.   

    我也知道这个表当初建的不是很规范,但现在程序都用了两年多,不可能改表结构了。
    这个语句在SQL查询分析器中建是会报警告,但表是能建立的。
    我现在只想在DELPHI中建立时通过就可以,怎么办?
      

  4.   

    深有同感!用中文字段的话,很多时候会死得很惨的!
    为什么用varchar而不是用string??