加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 现有的DAO代码是否适用于SQL Server?

发布时间:2021-03-18 13:11:32 所属栏目:MsSql教程 来源:网络整理
导读:如果我将数据从Access MDB传输到SQL Server,则VB应用程序中的DAO代码将对SQL Server起作用. 我意识到需要更改初始连接调用,但是还有什么需要改变吗? 解决方法 这里有很多问题. 如果您使用ADP作为SQL Server的前端,则不会使用DAO,因为您不能,因为ADP不使用Jet

如果我将数据从Access MDB传输到SQL Server,则VB应用程序中的DAO代码将对SQL Server起作用.

我意识到需要更改初始连接调用,但是还有什么需要改变吗?

解决方法

这里有很多问题.

>如果您使用ADP作为SQL Server的前端,则不会使用DAO,因为您不能,因为ADP不使用Jet / ACE.然后,您将与SQL Server建立直接ADO连接.
>但是,在过去5年左右的时间里,MS一直在使用ODBC弃用ADP而支持MDB / ACCDB(某些报告方案除外). A2007和A2010中的ADP没有变化,这可能表明MS正计划完全放弃它们(正如他们在A2002和A2003没有变化后对DAP所做的那样).但也可能是MS计划在下一版本的Access中恢复ADP,因为Access团队一直在积极寻求使用SQL Server的人的输入.
>使用推荐的技术(MDB / ACCDB)和ODBC(以及可能是链接表),您使用的是Jet / ACE,逻辑数据接口是DAO,Jet / ACE的本机数据接口.

Jet / ACE在处理服务器数据库方面实际上非常聪明,但它确实会出错,而且某些类型的查询缺乏经验,Access开发人员可能会编写带有服务器数据库的性能猪(因为他们强制使用Jet / ACE)从服务器拉出整个表并在客户端工作站上完成所有工作 – 请参阅上面的@Philippe Grondier的答案.

从MDB / ACCDB通过ODBC使用SQL Server的常用方法是尝试使用绑定表单和整个九码的Access方式(没有什么不同,如果你设计的应用程序用于Jet / ACE后端),然后使用SQL事件探查器确定哪些部分是性能瓶颈,应该重新构建,以便在服务器端进行适当的处??理.

明智地使用ADO通常是有道理的,因为ADO在某些方面做得非常出色,DAO表现不佳或根本没有.

但基本思路是使用与Jet / ACE后端相同的方法,因为Jet / ACE正在管理与服务器的接口.这意味着您不必担心Jet / ACE的SQL方言与服务器数据库方言之间的差异,因为Jet / ACE和ODBC完全消除了这些差异.

一些随机问题:

>对于DAO记录集,您需要添加dbSeeChanges选项.>所有表都有主键至关重要,否则您可能会有奇怪的屏幕更新.但你们所有的桌子都有PK,对吧?>我发现在SQL Server的所有表中放置一个时间戳字段是可取的,即使我从未明确使用它.这(与#2结合使用)确保刷新尽可能高效(ODBC可以检查时间戳,而不是需要将所有客户端字段逐个与服务器端值进行比较).>如果你使用passthrough查询或ODBCDirect,你需要担心服务器数据库的SQL方言,并保持Jet / ACE正在处理哪个SQL(并将其解释为后端方言),哪个直接进行到服务器.> Jet / ACE没有与bigint对应的数据类型,因此如果在SQL Server表中将其用作PK,则需要以非标准方式处理它. MS知识库中有关于解决此问题的文章.>如果您使用ADO,请记住ADO使用Access调用的“SQL 92兼容模式”,这意味着SQL Server通配符和派生表语法.

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读