试试
select  *  from  server.database.dbo.table SET ANSI_NULLS on

解决方案 »

  1.   

    不好意思,发错了;
    考虑下是否和ANSI SQL标准有关呢
      

  2.   

    试试把
     ANSI_NULLS 和 ANSI_WARNINGS 选项打开
      

  3.   

    在B服务器上的SQL2000 企业管理器 中创建存储过程失败,但是在查询分析器中创建成功.
    到企业管理器中修改存储过程 检查语法时提示 
     Logiin failed for user '(null)'. Reason :Not associated with a trusted sql server connection我在程序中执行 exec 储存过程名 提示错误 但是拿到查询分析器中执行
        exec 存储过程名 就会有结果
      

  4.   

    怎么打开ANSI_NULLS 和 ANSI_WARNINGS 啊
      

  5.   

    哪个错误信息是: 登录失败 用户' (空) ' . 理由是:不与信任SQL Server的连接
      

  6.   

    select  *  from  yourTable SET ANSI_NULLS on SET ANSI_WARNINGS  on
      

  7.   

    我的存储过程里 使用的是多表查询 
    我写 select a.*,b.* from table1 a SET ANSI_NULLS on SET ANSI_WARNINGS  on,
         table2 b SET ANSI_NULLS on SET ANSI_WARNINGS  on
    执行的时候报错啊
      

  8.   

    我的存储过程里 使用的是多表查询 
    我写 select a.*,b.* from table1 a SET ANSI_NULLS on SET ANSI_WARNINGS  on,
         table2 b SET ANSI_NULLS on SET ANSI_WARNINGS  on
    where a.id=b.id 
    执行的时候报错啊
      

  9.   

    SET ANSI_NULLS on SET ANSI_WARNINGS  on
    放最后面
     select a.*,b.* from table1 a , table2 b where a.id=b.id SET ANSI_NULLS on SET ANSI_WARNINGS  on
      

  10.   

    在企业管理器中存储过程中加上了 SET ANSI_NULLS on SET ANSI_WARNINGS  on  后  检查语法还是提示:
     Logiin failed for user '(null)'. Reason :Not associated with a trusted sql server connection  
      

  11.   

    我把存储过程直接改成了查询 在程序中直接 执行查询 在查询的条件后增加了
    set ansi_nulls on  set ansi_warnings on  但是一执行就提示 :
    General SQL error:
    异类查询要为连接设置 ANSI_NULLS 和ANSI_WARNINGS 选项.这将确保一致的查询语义,请启用这些选项,然后重新发出查询.
      

  12.   

    看见你写的这个过程了么?sp_addlinkedserver,的作用是创建一个连接。
    可能是你在查询分析器里创建了连接所以结果正确,而在存储过程中没有创建连接。建议你建立一个静态的LINKSERVER,从2000的企业管理器里就可以建立,然后光引用这个静态的连接的名字就成了。比如吧,你建立一个CNN_TO_SQL7这么一个连接,并且写好了用户名密码,测试连接通了,然后你直接在存储过程的查询中引用这个名字就好了。
      

  13.   

    你所说的建立一个静态的LINKSERVER 是在SQL2000 里的客户 (我的笔记本B和M中间的键坏了 所以有些字打不出来,请大家见lia g)网络实用工具吗?
    还是怎么来建立这个静态的LINKSERVER 啊  在查询中引用这个名字  怎么引用啊?
    举个例子好吗   谢谢 !
      

  14.   

    曾经的曾经:
    我现在两个服务器都改成SQLSERVER 2000 了 可是问题依旧.还是怎么来建立这个静态的LINKSERVER 啊  在查询中引用这个名字  怎么引用啊?
    举个例子好吗   非常感谢 !
      

  15.   

    我现在两个服务器都改成SQLSERVER 2000 了
    在server1的查询分析器中 执行  
    EXEC    sp_addlinkedserver    @server='server2', @srvproduct='bt_zb',
                                    @provider='SQLOLEDB', @datasrc='server2'

    在企业管理器中创建存储过程 
    create  proc  xxx
    as
     begin
       insert into server1.数据库名.dbo.表名
        (jj,bb)
       select jj,bb from 表名1 a,表名2  b where a.id=b.id  SET ANSI_NULLS ON SET ANSI_WARNINGS ON   
     end   
    创建成功! 
    在查询分析器中执行 exec xxx   正常,结果正确.
     但是我用DELPHI 写的程序 来读这个存储过程时  就提示
    General SQL error:
    异类查询要为连接设置 ANSI_NULLS 和ANSI_WARNINGS 选项.这将确保一致的查询语义,请启用这些选项,然后重新发出查询这是为什么啊???
      

  16.   

    create  proc  xxx
    as
     begin
       insert into server1.数据库名.dbo.表名
        (jj,bb)
       select jj,bb from 
    OPENDATASOURCE('SQLOLEDB', 'Data Source=A;User ID=sa;Password=').数据库名字.表名1 a,
    OPENDATASOURCE('SQLOLEDB', 'Data Source=A;User ID=sa;Password=').数据库名字.表名2  b 
    where a.id=b.id  
    end   
    楼主可以这样试一下
      

  17.   

    一夜未睡,找到答案    在server1数据库上 右键-> 属性->连接 中 将ANSI_NULLS 和ANSI_WARNINGS 都选上就解决了问题!    这个问题解决了可是又出了新问题!
    考虑 是insert 语句 所以就要考虑加上事物   也就是分布式事物处理 .server1和server 2都打开了 ms dtc 服务 
    (我的 操作系统是 winxp pro  sp2   SQL2000 PRO  )  我的存储过程如下
    CREATE  proc xxx
    as
    begin   distributed tran  insert into server2.数据库.dbo.库表名
    (jj,bb)
    SELECT a.jj,b.bb
    FROM 表1 a,表2 b   where a.id=b.id  select  '倒数据成功!!' as '提示' if   @@error   =   0   
      commit   tran   
      else   
      rollback   tran
    在server1 的查询分析器中执行 exec xxx  提示:服务器: 消息 7391,级别 16,状态 1,过程 UP_FD_SCSJ,行 29
    该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
    [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
    OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
      

  18.   

    这一晚上没白熬啊! 这个问题有功克了  先不着急睡觉 把解决方法告诉大家先!我的环境是 server1  操作系统是 xp pro  sp2    SQLSERVER pro SP4   所在的组是 admi  
              SERVER2  操作系统是 win2003 server SQLSERVER 企业版     所在的组是 admi我在server1上 
    第一:
     控制面板->管理工具->组件服务->  组件服务->计算机->我的电脑  右键我的电脑 
     ->属性->MSDTC->安全性配置   选择 远程DTC访问、允许远程客户端、允许远程管理、允许入站、
    允许出站、不要求进行验证
    第二: 
     在SQLSERVER 中将 自动运行ms dtc(d) 选上    否则每次开机或重起都要去启动MSDTC 在server2上
    第一:打开“管理工具”的“组件服务”。
        a. 浏览至"启动管理工具"。    b. 选择"组件服务"。    c. 展开"组件服务"树,然后展开"我的电脑"。    d. 右键单击"我的电脑",然后选择"属性"。     在 MSDTC 选项卡中,确保选中了下列选项: 
        网络 DTC 访问 网络管理 网络事务XA 事务
       另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。4、重启MS DTC服务。
    第二: 在SQLSERVER 中将 自动运行ms dtc(d) 选上    否则每次开机或重起都要去启动MSDTC
    这样我的分布式事务就可以正常执行了,结果OK! 如果哪里交代的不清楚 请见谅啊 ,一晚上没睡了 头有点晕
      

  19.   

    你试试在两台主机的host文件中相互加一下解析