我通过SYBASE客户端和ODBC数据源的设置,在SQL SERVER中使用数据库链接的方式查询相关数据,查询其中的大部分数据都没有问题,但是查询某张表示报了如下错误:select top 10 * from [SYREPORT].blue.dbo.mAgentBySkillsetStat
消息 7356,级别 16,状态 1,第 2 行
链接服务器 "SYREPORT" 的 OLE DB 访问接口 "MSDASQL" 为列提供的元数据不一致。对象 "blue.dbo.mAgentBySkillsetStat" 的列 "UserID" (编译时序号为 12)在编译时有 16 的 "DBCOLUMNFLAGS_ISFIXEDLENGTH",但在运行时有 0。
再后来发现我查询的内容中凡是有 "UserID"这个字段的都会报这个错误!

解决方案 »

  1.   

    你看看这个吧:SQL Server到SYBASE连接服务器的实现 
     
    作者:  CCBZZP 
    本文的测试环境为:
    操作系统:  WINDOWS2000 SERVER (繁体系统)
    安装数据库: SQLSERVER2000(英文版)和SYBASE8.0客户端(英文版)
      具体实现步骤: 
    1.要求pc机上安装SYBASE8.0客户端软件和sqlserver2000软件。 
    2.配置windows的ODBC数据源: 
    开始菜单—》程式集—》系统管理工具—》资料数据源(ODBC)—》进入配置用户DSN或者系统DSN均可以:添加—》选择ADAPTIVE SERVER ANYWHERE8.0—》自定义数据源名称(随意如: SYBASETEST)—》数据库名称(必选!)—》OK完成。3. 选择刚才配置的数据源名称, 再选择 配置, 跳出SYBASETEST MESSAGES:The data source is not connected.  Connecting to the data source will provide useful information during configuration.  Would you like to connect to the data source?选择YES(OK或确认)即可进入CONNECT TO SYBASE  DATABASE画面:USER ID: 输入SYBASE DATABASE的用户PASSWORD: 输入SYBASE DATABASE的用户的密码CONNECTION  MODE: 可以选择默认的SHARE模式选择OK(确认)即可! 配置和测试ODBC完成!
    4.配置sqlserver2000中的连接服务器: 
    企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名称; 选其他数据源; 指定程序名称为:SYBASE ADAPTIVE SERVER ANYWHERE PROVIDER8.0; 产品名称可不填; 数据源指定刚才ODBC中定义好的数据源名称; 提供程序字符串按以下格式填写:User ID=username;Password=userpasswd(或者按如下格式:UID=username;PWD=userpasswd),这里的用户名和密码对应所要连接的SYBASE数据库中的用户名和密码 —》 安全性标签页里:设置用此安全上下文进行,并录入SYBASE的数据库用户名和密码—》服务器选项标签页可默认—》确定。 
    5.准备工作全部完成!在sqlserver企业管理器—》安全性—》连接服务器打开刚建好的连接服务器—》点击表,即可在右边窗口看到该SYBASE数据库用户拥有的的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析器中用具体sql实现!访问表时,使用格式为: [连接服务器名]..[SYBASE用户].[表名]。更详细具体的使用这里不再赘述。 
      

  2.   

    难道是由于SYBASE的数据存储格式与SQL2005不同导致?