仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1349|回复: 6
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之在ACCESS 中挪用背景存储历程

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:25:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这类操作的执行过程是,1)按照新的表定义建立一个临时表tmpa,2)将原表数据拷贝到临时表,3)将原始表改名tmpb,4)将tmpa改名为原表名,5)将tmpb删除。access|存储历程|背景 ACCESS是一个Client/Server的优异前端开辟工具,具有易学易用,界面友爱,开辟复杂,和其他数据库接口天真。可是,它要对大批数据处置时,速率对照慢。深圳供电局现有60万用户,上面有6个业务所,经由过程64KDDN和局相连,假如有一个业务所要对1万用户举行处置的话,要花2~3小时,严峻影响其他营业的展开。以是,当有大批数据必要处置时,不克不及在Client端处置,而必需在Server端处置。但ACCESS和Server端之间多半经由过程ODBC来毗连,如许就增添了挪用背景存储历程的难度。笔者经由过程在实践事情中临时的探索,依据分歧的营业必要,能够用上面三种办法往挪用背景存储历程。

  1、Access向背景提交功课,这一个个功课对应一个个的存储历程。在SQLServer6.5中,经由过程TaskManager来创建响应的Task;而在Oracle8.0中,经由过程ManagingJobQueue来创建响应的Job。在Access中,在job_list表中拔出一个功课,这些功课一样平常天天早晨运转一次。这些功课对应的营业通常为必要处置十分大批数据,而及时性又是较低的,在我们的营业中对照典范的例子是天天早晨大批的电费盘算。

  2、在Server端创建一些触发器(Trigger),在Access中激活这些触发器。在SQLServer6.5和Oracle8.0中,都是经由过程CreateTrigger来完成。在Access中,依据分歧的营业,经由过程拔出、修正、删除纪录来激活分歧触发器。在我们的营业中一个例子是,当营业职员修正用户的电表读数后,激活盘算电费的触发器,能当即从头盘算该用户的电费。如许子,既能够和批量盘算电费共享统一程序,不必在Access端从头开辟,有能够加速前真个呼应速率。

  3、以上二种办法,只能够说是直接挪用背景存储历程,Access还供应一种间接挪用的办法,能够用Access传送查询间接将命令发送到数据库服务器。

  创建Access传送查询步骤以下:

  (1)在数据库窗口中单击“查询”选项卡,然后单击“新建”按钮。

  (2)在“新建查询”对话框中单击“计划视图”选项,然后单击“断定”按钮。

  (3)在“显现表”对话框内单击“封闭”按钮。

  (4)在“查询”菜单上,指到“SQL语句前提”,然后单击“传送”命令。

  (5)在工具栏上,请单击“属性”按钮以显现查询属性表。

  (6)在查询属性表中,请设置“ODBC毗连字符串”属性来指定要毗连的数据库信息。能够输出毗连信息:”ODBC;DSN=ntserver0;UID=sa;PWD=;DATABASE=BMS”,或用“天生器”按钮天生。

  (7)因存储历程不必前往纪录,以是将“前往纪录”属性设置为“否”。

  (8)在“SQL传送查询”窗口中,输出传送查询:execstatistics。Statistics是SQLServer数据库的一个存储历程。

  (9)封闭查询,保留查询为:stat_query。

  运转传送查询的办法有:

  (1)用MicrosoftAccess的宏OpenQuery。

  (2)用上面的事务历程:

PrivateSub统计_Click()
DimdbsAsDatabase,qdfAsQueryDef
DimtmqAsDynaset
DimstrSQLAsString

Setdbs=CurrentDb
翻开下面建的传送查询stat_query
Setqdf=dbs.OpenQueryDef("stat_query")
qdf.Execute
Setdbs=Nothing
EndSub

  这类办法在SQLServer6.5中完成完整没成绩,在Oracle8.0中不克不及完成,毛病信息为:ORA-00900invalidSQLstatement.因为这类办法不必要一其中间的表往列队或激活背景存储历程,以是它的使用面就很广,但凡必要处置大批数据的营业,都能够放到Server端去向理,如统计报表。

  经由过程以上三种办法,办理了Access对大批数据处置速率慢的缺点,年夜年夜加年夜了深圳供电局数据处置才能。
从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。
简单生活 该用户已被删除
沙发
 楼主| 发表于 2015-1-19 11:55:25 | 只看该作者
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
透明 该用户已被删除
板凳
发表于 2015-1-27 23:13:12 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
分手快乐 该用户已被删除
地板
发表于 2015-2-5 13:13:24 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
因胸联盟 该用户已被删除
5#
发表于 2015-2-11 21:16:31 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
谁可相欹 该用户已被删除
6#
发表于 2015-3-17 22:08:05 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-25 03:41:46 | 只看该作者
我个人认为就是孜孜不懈的学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 13:46

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表