用openrowset的方法从另一台服务器带数据过来.
select * from openrowset(........,'select * from xx.dbo.a')   只是简单的select,然后发生了下面的错误.
服务器: 消息 7342,级别 16,状态 1,行 4
返回了意外的 '[a].name' 列值 NULL(从 OLE DB 提供程序 'SQLOLEDB' 中)。此列不能是 NULL。
OLE DB 错误跟踪[Non-interface error:  Unexpected NULL value returned for the column:  ProviderName='SQLOLEDB', TableName='[a]', ColumnName='name']。奇怪的是如果 我加上top 10,或top 100000 ,a表中只有200行.
eg:select * from openrowset(........,'select top 10000 * from xx.dbo.a')
则没有问题,有哪位大虾知道是怎么回事,能解释下么?

解决方案 »

  1.   

    奇怪的是如果 我加上top 10,或top 100000 ,a表中只有200行.
    eg:select * from openrowset(........,'select top 10000 * from xx.dbo.a')
    则没有问题,有哪位大虾知道是怎么回事,能解释下么?
    ------------------------------------------------
    这个是什么意思呢
    是不是说top 10000的时候返回1W条纪录?
      

  2.   

    不是的,a表里只有200条记录,10000的时候返回的是200条记录.还有,我又测试了一下.在后面直接加上 order by name 也能正确的返回
    eg:select * from openrowset(........,'select * from xx.dbo.a order by name')真的很奇怪,搞不懂.
      

  3.   

    就是象第一次那样啊,什么都不加.select * from openrowset(........,'select * from xx.dbo.a ')
      

  4.   

    建议连接到远程数据库看看name字段的状态
    我这里查询没有错的