我用下面的语句已经在sql server中创建好了数据库的连接
exec sp_addlinkedserver  '11.121.13.60','','SQLOLEDB','211.96.13.98'
exec sp_addlinkedsrvlogin '11.121.13.60','false',null,'sa','cjcs'
然后我在delphi中进行查询
with Query1 do
begin
   Close;
   Sql.Clear;
   Sql.Add('select * from [11.121.13.60].Customersrv.Dbo.aa');
   Open;
end;
当查询时会出现下面的错误:异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询。
请问这是什么错误啊应该怎样来设置啊还请各位高手帮忙指点一下,我这个查询语句在sql server中查询没有错误

解决方案 »

  1.   

    首先你得query用的哪一个连接,另外真要这么用的话,也不必要这么用,参考:SET  @sql='select * from OPENDATASOURCE(' 
    SET  @sql=@sql  +  '''SQLOLEDB'','  
    SET  @sql=@sql  +  '''User ID='  +  @strUserName  
    SET  @sql=@sql  +  ';Password='  +  @strPassWord  
    SET  @sql=@sql  +  ';Initial Catalog=Customersrv;Data Source='  +  '11.121.13.60'
    SET  @sql=@sql  +  ''').Customersrv.dbo.' + @strTableName
      

  2.   

    以上为SQL Server中的语法,在Query中用的话自己在处理一下。
      

  3.   

    close;
        sql.Clear;
         str :=' SELECT   * FROM   OPENDATASOURCE(''SQLOLEDB'', '+
                 '''Data Source=11.121.13.60;User ID=aa;Password=aa'').Customersrv.Dbo.sendsms ';
        sql.Add(str);
        Open;
    但是我这样写还是不可以啊
      

  4.   

    那么在delphi中应该怎么处理啊,我就是不是在delphi中进行处理,能不能讲具体一点啊
      

  5.   

    zzllabc(抱朴子--清心释累,绝率忘情) 你还在不
      

  6.   

    strSQL := 
    'select * from OPENDATASOURCE('+'''SQLOLEDB'+''''+',User ID=aa;Password=aa;Initial Catalog=Customersrv;Data Source=11.121.13.60'+''''+').Customersrv.dbo.sendsms';先试一下这个,注意你的用户aa是不是表的所有者。
      

  7.   

    还有点问题,看下面的
      strSQL :=
        'select * from OPENDATASOURCE('+'''SQLOLEDB'+''''+','''+'User ID=aa;Password=aa;Initial Catalog=Customersrv;Data Source=11.121.13.60'+''''+').Customersrv.dbo.sendsms';
      

  8.   

    你的那个还是会报下面的错误:
    ---------------------------
    Datatranslate
    ---------------------------
    General SQL error.异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询。.
    ---------------------------
    确定   
    ---------------------------
      

  9.   

    如果aa不是所有者的话,Customersrv.dbo.sendsms改成Customersrv.aa.sendsms
      

  10.   

    这个sql语句在dephi中还是会出现上面的错误,但在sql的查询分析器中就不会有问题
      

  11.   

    用ADOQuery就没问题了,如果可能的话,建议改为ADO连接。在BDE中确实出现如此问题,我再看一下能不能解决。
      

  12.   

    我刚刚用了ADOQuery是不会出现上面的错误那为什么BDE会出现上面的错误啊
      

  13.   

    BDE连SQL2000有些问题,我想可能是在BDE进入维护期后才发布的SQL2000,所以最好不要用BDE连接2000,而改用ADO,发布起来比BDE方便多了,也没有BDE那样的版本问题。