zoukankan      html  css  js  c++  java
  • pb11 PB12 查询数据时死锁问题解决办法<转>

    pb11 -- PB12 查询数据时死锁问题解决办法<转>

    一、 原先PB11中连接方式是:
    // Profile iadserver
    SQLCA.DBMS = "OLE DB"
    SQLCA.LogPass =profilestring('dbms.ini' , "database" , "logpass" , "")
    SQLCA.LogId = profilestring('dbms.ini', "database" , "logid" , "")
    SQLCA.AutoCommit = False
    SQLCA.DBParm = "PROVIDER='SQLOLEDB',"+&
    "DATASOURCE='" + profilestring('dbms.ini' , "database" , "serverip" , "") + "'," +&
    "PROVIDERSTRING='Database="+profilestring('dbms.ini' , "database" , "dbname" , "")+"'"

    connect using sqlca ;
    if SQLCA.SQLCode <> 0 then
    messagebox("提示信息:", '连接数据库出错!' + SQLCA.SQLErrText , stopsign!)
    rollback using sqlca ;
    halt close
    end if

    二、经高人指点后的连接方式
    用以上连接方式,经常在查询的时候都死锁,没有办法,在查询完成后都要COMMIT,后来有位高人指点,增加了

    加上sqlca.lock='RU' 或者 sqlca.lock='RC' 可以解决死锁问题。

    具体连接方式如下:
    // Profile iadserver
    SQLCA.DBMS = "OLE DB"
    SQLCA.LogPass =profilestring('dbms.ini' , "database" , "logpass" , "")
    SQLCA.LogId = profilestring('dbms.ini', "database" , "logid" , "")
    SQLCA.AutoCommit = False

    SQLCA.Lock='RC'
    SQLCA.DBParm = "PROVIDER='SQLOLEDB',"+&
    "DATASOURCE='" + profilestring('dbms.ini' , "database" , "serverip" , "") + "'," +&
    "PROVIDERSTRING='Database="+profilestring('dbms.ini' , "database" , "dbname" , "")+"'"

    connect using sqlca ;
    if SQLCA.SQLCode <> 0 then
    messagebox("提示信息:", '连接数据库出错!' + SQLCA.SQLErrText , stopsign!)
    rollback using sqlca ;
    halt close
    end if

    三、 MS SQL中lock属性
    RU Read Uncommitted
    RC Read Committed
    RR Repeatable Read
    TS Serializable
    查阅SQL SERVER2005联机丛书有以下描述:
    sql server 数据库引擎隔离级别
    SQL-99 标准定义了下列隔离级别,Microsoft SQL Server Database Engine 支持所有这些隔离级别:
    未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据)
    已提交读(数据库引擎 的默认级别)
    可重复读
    可序列化(隔离事务的最高级别,事务之间完全隔离)
    实际测试发现,当设置sqlca.lock='RR'可重复读时,会出现死锁,其他三种不会。

    似乎PB10以上版本缺省是sqlca.lock='RR'才会造成死锁,一般是用“RC”。
    低版本的PB用MS SQLSERVER连接时的默认级别,适用于大多数情况,当然还要看你的具体应用了。

  • 相关阅读:
    word查找与替换
    细说ASP.NET Windows身份认证
    防钓鱼代码
    sql触发器
    url地址栏参数
    sql递归查询
    认识TWICImage类
    尝试发个贴
    泛型单元
    [学习官方例子]TArray
  • 原文地址:https://www.cnblogs.com/wallis0922/p/2670340.html
Copyright © 2011-2022 走看看