SQL中执行远程查询出错,请高手解答,急!急!(示好意思,手中分数不多) (50分)

  • 主题发起人 主题发起人 zfwzfwnb
  • 开始时间 开始时间
Z

zfwzfwnb

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在本地SQL服务器上执行远程查询操作,
查询语句为“SELECT * FROM [远程服务名].[库名].[dbo].[表名],
结果在SQL的查询分析器中正常执行,但把此语句放到存储过程中执行则
出现如下错误“异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。
这将确保一致的查询语义。请启用这些选项,然后重新发出查询。
[SQLSTATE 42000](错误 7405). 步骤失败。”,
即使加上“SET ANSI_WARNINGS ON,SET ANSI_NULLS ON"语句不行,
请各位高手帮助解决,谢谢!
 
注:我已在SQL的连接属性把SET ANSI_WARNING和SET ANSI_NULLS两个选项勾上,
但仍然出现上述错误。
 
用OpenDataSource

SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=ServerName;User ID=sa;Password='
).AWFI.DBO.TEMP
 
QuickSilver
   谢谢你的回答,我按照你的方法使用后,也是在SQL的查询分析器中可以执行,但
一放到存储过程中,在保存时就出现如下错误:““异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。
这将确保一致的查询语义。请启用这些选项,然后重新发出查询。”,请你再考虑一下,
好吗。
 
进入企业管理器
点SQL SERVER属性,选连接页面,在最后一条
把列表中Ansi null define off设为不选中状态。
 
QuickSilver:
谢谢你的多次解答,但SQL SERVER的属性栏中连接页面中的Ansi null define off
的选项框我本来就没有选中。
 
直接在查询分析器中输入

CREATE PROCEDURE temp1 AS
Begin
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=Servername;User ID=sa;Password='
).AWFI.DBO.TEMP
End
GO
 
to zfwzfwnb:
你好!我现在也遇到了跟你一样的问题,你是怎样解决的能告诉我吗?
问题如下:
[本人在本地SQL服务器上执行远程查询操作,
查询语句为“SELECT * FROM [远程服务名].[库名].[dbo].[表名],
结果在SQL的查询分析器中正常执行,但把此语句放到存储过程中执行则
出现如下错误“异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。
这将确保一致的查询语义。请启用这些选项,然后重新发出查询。
[SQLSTATE 42000](错误 7405). 步骤失败。”,
即使加上“SET ANSI_WARNINGS ON,SET ANSI_NULLS ON"语句不行,]

E-mail:along407@21cn.com
谢谢~
along407
2001.12.13
 
我也碰到类似的问题,
我在查询时用:
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=Servername;User ID=sa;Password='
).AWFI.DBO.TEMP
没有问题,但是放到ADO控件的adoquery.sql.add('加入以上语句');这样就有问题,
请问怎样解决呢??谢谢!
 
我也非常想知道
 
各位:
  这个问题困了我很久,后来经向微软工程师咨询,日前我已经解决了。其实很简单,只要你在存储过程中最前面加以下三句话即可:
SET ANSI_WARNINGS ON
SET ANSI_NULLS ON
go
再下面是你存储过程的完整代码。
当然,当你下次打开时上面三句话会消失,但以后会都有效。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部