如何设置ANST_NULLS和ANSI_WARNINGS选项?

duola1 2003-07-06 10:45:50
本人在SQL SERVER2000中创建一个存储过程(用dBase的数据表记录来更新SQL数据表记录),具体代码如下:
CREATE PROCEDURE EnrollData_Import
AS
begin
begin tran
delete from T_KSHKCJ
if @@Error<>0 goto Error
insert T_KSHKCJ
select *
from OpenDataSource('Microsoft.Jet.4.0',Data Source="c:\data";User ID=;Password=;Extended properties=dBase 5.0')...T_KSHKCJ
if @@Error<>0 goto Error
commit tran
return 0
Error:
rollback tran
return 1
end
已通过语法检查,但是按下"确定"出错,出错提示:
错误7405:异类查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项,这将确保一致的查询语义.请启用这些选项,然后重新发出查询.
请问高手:应在什么地方设置这些选项,应设为什么,麻烦请给出具体做法,谢谢!
...全文
226 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-07-08
  • 打赏
  • 举报
回复
前面有个begin
duola1 2003-07-08
  • 打赏
  • 举报
回复
不明白,你的代码和我的有什么不同?
pengdali 2003-07-08
  • 打赏
  • 举报
回复
CREATE PROCEDURE EnrollData_Import
AS
begin
begin tran
set XACT_ABORT on
set ANSI_NULL_DFLT_ON on
set ANSI_WARNINGS on
delete from T_KSHKCJ
if @@Error<>0 goto Error
insert T_KSHKCJ
select *
from OpenDataSource('Microsoft.Jet.4.0','Data Source="c:\data";User ID=;Password=;Extended properties=dBase 5.0')...T_KSHKCJ
if @@Error<>0 goto Error
commit tran
return 0
Error:
rollback tran
return 1
end
duola1 2003-07-08
  • 打赏
  • 举报
回复
还是有问题,我在查询分析器中输入下面代码:
CREATE PROCEDURE EnrollData_Import
AS
begin tran
set XACT_ABORT on
set ANSI_NULL_DFLT_ON on
set ANSI_WARNINGS on
delete from T_KSHKCJ
if @@Error<>0 goto Error
insert T_KSHKCJ
select *
from OpenDataSource('Microsoft.Jet.4.0','Data Source="c:\data";User ID=;Password=;Extended properties=dBase 5.0')...T_KSHKCJ
if @@Error<>0 goto Error
commit tran
return 0
Error:
rollback tran
return 1
end
执行出错:
服务器: 消息 156,级别 15,状态 1,过程 EnrollData_Import,行 18
在关键字 'end' 附近有语法错误。
pengdali 2003-07-07
  • 打赏
  • 举报
回复
直接在过程里:

set XACT_ABORT on
SET ANSI_NULL_DFLT_ON on --注意
SET ANSI_WARNINGS on
happydreamer 2003-07-07
  • 打赏
  • 举报
回复


建立连接服务器,通过ip和有访问权限就行了

如果在过程里使用连接服务器要加上


SET XACT_ABORT ON
SET ANSI_NULL_DFLT_ON on --注意
SET ANSI_WARNINGS on



请在查询分析器中创建这个存储过程,以后这个存储过程在企业管理和查询分析器都能修改了。

对于存储过程,SQL Server 使用最初创建存储过程时的 SET ANSI_NULLS 设置值。无论随后何时执行存储过程,SET ANSI_NULLS 的设置都还原为其最初使用的值并生效。当在存储过程内唤醒调用 SET ANSI_NULLS 时,其设置不更改。

在执行分布式查询时应将 SET ANSI_NULLS 设置为 ON。

在执行分布式查询时应将 ANSI_WARNINGS 设置为 ON。

企业管理中的ANSI_NULLS和ANSI_WARNINGS选项不对,但没有方法改动。在查询分析器可以设置ANSI_NULLS和ANSI_WARNINGS选项,而且默认值是对的。所以能在查询分析器创建此类存储过程,而不能在企业管理器创建此类存储过程。

就是:
create proc 名
as
SET ANSI_NULL_DFLT_ON on --注意
SET ANSI_WARNINGS on

select * from open...

SET ANSI_WARNINGS on

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧