消息 7339,级别 16,状态 1,第 1 行
链接服务器 '10.99.1.22' 的 OLE DB 访问接口 'SQLNCLI10' 返回了对列 '[10.99.1.22].[kitting].[dbo].[tbl_info_part].Alias' 无效的数据。大家好,由于公司数据环境有部分服务器需要升级到SQL2008,有些数据库暂时不能升级,所以目前是SQL2008和SQL2000共存。在2008环境下通过访问2000的数据时会提示如上错误。经过查询资料是由于SQL 2008使用了比SQL 2000更严格的数据验证方案,从而导致数据从2000导到2008时,2005拒绝接受它认为有问题的数据.微软的KB:http://support.microsoft.com/kb/923247/zh-cn我可以把2000下的数据进行更新,可是不能保证以后2000还会产生错误数据,请教各位大侠,咋办??
不胜感激!

解决方案 »

  1.   

    列是varchar类型的,存在这种现象的数据是WHERE DATALENGTH(col1) % 2 != 0的数据
      

  2.   

    导致这些错误的主要原因是最初在SQL Server 2000上向表中插入数据时,有些字符串类型的数据的长度超出列宽限制而被截断,同时被截断的位置刚好是一个双字节字符(汉字)的中间,这样被保留下来的一个字节的数据(相当于半个汉字)就成为了无效数据。
      

  3.   

    很强,问题都找出来了
    转成nvarchar型,是否可行
      

  4.   

    如果是链接访问,应该没有问题。
    如果是数据提取,建议SSIS处理。
      

  5.   

    linked server的Provider改用Microsoft OLEDB Provider For SQL Server.
      

  6.   


    我用的就是这个provide,同样报错