使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

问题
:我有一个 Access DB 和一SQL存储信息的表。 在 7.0 SQL的链接服务器功能下,我允许SQL Access DB 作为另一个 SQL 数据库。 我还会编写一个存储过程,用于将记录从 Access DB 复制到 SQL 表。 从 ISQL/Query Analyzer 运行,存储过程可正常运行。 从 Dexterity 调用存储过程会从 SQL Server 生成以下错误消息:异类查询需要为连接设置 ANSI_NULLS 和 ANSI_WARNINGS
选项。 这可确保一致的查询语义。 启用这些选项,然后重新启用查询。我甚至可以从 Dexterity 运行此存储过程吗?



:可以,但必须稍微修改存储过程。 失败的原因是为了在 Dexterity 中正确读取 SQL 表,必须将这些选项关闭,以便调用 Dexterity 中的存储过程在运行存储过程之前发出这些命令。 用户必须确保未将违反这些规则的数据引入SQL表中。 在下面的示例中,table_access是访问表。 该table_test是SQL表。

          
if exists (select * from sysobjects where id =

object_id('dbo.access_update') and sysstat & 0xf = 4)

drop procedure dbo.access_update

GO


create procedure dbo.access_update @O_SQL_Error_State int = NULL output


as


INSERT INTO access_table ( DOCNUMBR, DOCAMNT )

SELECT access_test.DOCNUMBR, access_test.DOCAMNT

FROM access_test


GO



我们可以修改存储过程来设置警告,如下所示:

          
if exists (select * from sysobjects where id =

object_id('dbo.access_update') and sysstat & 0xf = 4)

drop procedure dbo.access_update

GO


create procedure dbo.access_update @O_SQL_Error_State int = NULL output


as


set ANSI_NULLS ON

SET ANSI_WARNINGS ON


exec access_table2 ( DOCNUMBR, DOCAMNT )


GO



在这种情况下,存储过程将继承调用它的属性。 对于这种情况,Dexterity 调用 theaccess_tableprocedure,这会打开ANSI_NULLS & ANSI_WARNINGS然后调用实际存储过程并传递参数。


本文为 TechKnowledge 文档 ID:10011

TechKnowledge 内容

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×