异步sql
① 2008异步图画失败
sqlserver2008不支持异步模式。
2008异步图画失败可能是因为sqlserver2008不支持异步模式,需要升级,所以会出现提示为,此sqlserver版本不支持修改事务安全模式,alterdatabase失败。
② 怎么使程序与sql server异步执行请达人指教!!!
这种问题我早就碰过了,使用
多线程
是一种非常不好的选择,你的系统随时都会崩溃。
办法其实非常简单,你只要使用ADO异步操作就可以了,完全不必建立多线程,当然这涉及ADO的高级应用,今天心情好,教你几招!(下面是我在VB中使用过的方法,DELPHI中同样也能使用ADO异步操作访问SQLSERVER)
之前先与SQL
SERVER建立一个CONNECTION对象,将其CURSORLOCATION属性设置为adUseClient
然后用ADO
CONNECTION的Execute方法异步执行
存储过程
即可
例如:con.CursorLocation
=
adUseClient
dim
strSQL
as
String
strSQL="SQL语句或存储过程名及其参数"
'语法必须正确
con.Execute
strSQL,
,
adAsyncExecute
'adAsyncExecute指令异步操作
这样你的
应用程序
就不用等待存储过程执行完毕后才可执行后续
代码
了。
你还可以使用ADO
CONNECTION对象的ExecuteComplete事件在执行完存储过程后
通知你的应用程序执行相应的动作,例如MSGBOX等之类的东西,具体的实现代码你自己去查ADO联机手册。
另外顺便提一下,如果对于一个执行了很长时间都未能完成的查询,你别指望使用貌似很行的ADO的CANCEL方法,立即取消一个正在执行的ADO异步操作,即使在更新版本的ADO.net
3.5也是如此(非要等到超时后才能生效),真不明白微软的工程师们是如何想的!谁要是能给出
解决方法
,我奖他300分,外加现金若干。
答复补充问题:
“四楼的大哥
我还想问一下
如果我在这个存储过程还没有执行完成的时候
其他客户端又调用了这个存储过程
会不会出错呢???我不太清楚一个存储过程还没有执行完的时候
是否可以再次调用
请指教
谢谢!!!!”
不会的,因为SQLSERVER
引擎
会处理这些并发问题(自动使用事务处理,微软的工程师们早就想到这些问题了,请放心使用)
③ 如何进行异构数据库同步
数据库同步有很多方法,这里不讨论了,我这里只针对异构数据库.那什么是异构数据库呢,我们先看下定义(引用)
异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DMBS。异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制。异构数据库系统的异构性主要体现在以下几个方面:
计算机体系结构的异构
各个参与的数据库可以分别运行在大型机、小型机、工作站、PC或嵌入式系统中。
基础操作系统的异构
各个数据库系统的基础操作系统可以是Unix、Windows NT、 Linux等。
DMBS本身的异构
可以是同为关系型数据库系统的Oracle、 SQL Server等,也可以是不同数据模型的数据库,如关系、模式、层次、网络、面向对象,函数型数据库共同组成一个异构数据库系统。
在转换的过程中,有时要想实现严格的等价转换是比较困难的。首先要确定两种模型中所存在的各种语法和语义上的冲突,这些冲突可能包括:
命名冲突:即源模型中的标识符可能是目的模型中的保留字,这时就需要重新命名。
格式冲突:同一种数据类型可能有不同的表示方法和语义差异,这时需要定义两种模型之间的变换函数。
结构冲突:如果两种数据库系统之间的数据定义模型不同,如分别为关系模型和层次模型,那么需要重新定义实体属性和联系,以防止属性或联系信息的丢失。
异构数据库同步的解决方法主要有以下几种:
1.建立触发器记录表的变化情况,在源数据库建立增、删、改触发器,然后根据变化登记表进行处理.优点是充分结合业务进行处理,保持数据的一致性、完整性,实时性较强,对多个数据源合并有非常大的优势,我们现在也是采用这种方式来同步的。
2.日志:通过分析源数据库日志,来获得源数据库中的变化的数据。ORCLE 的 异步 CDC (Asynchronized CDC) 就是使用这种方式,但缺点是有一定延时.