数据库文件(Access)放在公司公共文件夹中(网络硬盘),15人左右的访问量,如果数据库已经打开,我是否可以拷贝.mdb文件呢?是否对其他人的访问造成影响,或者经常这样操作是否对数据库有影响?另外数据库的搜索和数据读写都用以下函数,是否有优化的可能呢?感觉速度比较慢(也有一部分是因为数据库是存放在网络硬盘上的原因):
Public Function WIS_Base_Connect(ByVal txtSQL As String) As ADODB.Recordset
On Error GoTo ErrCode
Dim WIS_ConnectName As StringFlag_DB_Con = True
WIS_ConnectName = WIS_Base_DataBaseConnectName & ";"Set WIS_Base_Con = New ADODB.Connection
WIS_Base_Con.Open "provider=microsoft.jet.OLEDB.4.0;data source= " & WIS_ConnectName & ";Jet OLEDB:Database Password = pd"
Set WIS_Base_Rs = New ADODB.Recordset
WIS_Base_Rs.Open txtSQL, WIS_Base_Con, adOpenKeyset, adLockPessimistic
Set WIS_Base_Connect = WIS_Base_Rs
end function

解决方案 »

  1.   

    mdb文件被打开时,是可以拷贝到其他地方去的,只不过要注意,ACCESS 数据库的并行访问性能并不太好,多人通过共享的方式一起访问它,有可能出现数据丢失。即出现所谓的“脏数据”。程序上,能否将
    Set WIS_Base_Rs = New ADODB.Recordset
    WIS_Base_Rs.Open txtSQL, WIS_Base_Con, adOpenKeyset, adLockPessimistic
    Set WIS_Base_Connect = WIS_Base_Rs
    并成一句,直接
    WIS_Base_Connect.Open ...
    呢?
    没试过。
      

  2.   

    象这样的情况最好使用Sql Server
      

  3.   

    不知道这样的改动会有什么好的效果呢,我在本地上看不出什么变化...
    我把数据库分成2个文件,其中一个文件A为公共数据,比如说一些人员的信息,而另外一个文件B为记录数据,经常要更新,在本地硬盘上测试,软件读取文件A和B时很快,但网络硬盘比较慢,如果我将文件A在每次开启软件后自动拷贝到本地硬盘,这样操作比较顺畅,就是怕这样操作带来一些很多弊端。。
    是否有什么好的方法来解决呢?呵呵
      

  4.   

    从性能和安全性来说,你的环境中数据库用ACCESS不是很恰当.
    建议步骤: 
    1:先在服务器上安装sql server
    2:从sql server管理器中导入mdb文件, 会自动生成相同结构的库.
    3:将连接字符串替换成sql server方式: "Provider=SQLOLEDB.1..."
    4:测试,调试
    5:替换所有客户端
      

  5.   

    另外如果别人都在访问这个数据库,我开启软件后先进行:If WIS_Base_Con.State = adStateOpen Then WIS_Base_Con.Close
    Set WIS_Base_Con = Nothing
    If WIS_Base_Rs.State = adStateOpen Then WIS_Base_Rs.Close
    Set WIS_Base_Rs = Nothing先判断是否打开然后关闭,释放资源。
    这个动作是否会对别人或者数据库产生影响?
      

  6.   

    不知道是否会产生这样的影响:
    当别人正在打开数据库时,而我正常启动软件,清除啦连接以及资源(close / Nothing)是否会导致别人访问数据库异常?
      

  7.   

    ACCESS,15人,在共享机制下,想快起来根本不可能。
    我曾经6个人,ACCESS换成SQL SERVER,快了好多。不是你并发处理的好不好和优化SQL语句的问题,不信自己测试。
      

  8.   

    数据库操作的不是很频繁,主要是用来作为每天的工作交接事项,所以暂时没用SQL,最主要的目前还在学习 SQL,不会用,呵呵
    还是恢复到问题:如果我在做 清除资源/断开连接动作 是否会对别人造成影响呢?
      

  9.   

    ACCESS是独占模式的,想一起访问应该是出问题的,同一时间,特别是写操作,可定是不允许两个人同时的。