zoukankan      html  css  js  c++  java
  • 当程序用ado的jet4.0方式连接的时候,对于设有access数据库密码的mdb的访问居然报错“无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开”,而用odbc方式不报错,小阴沟里翻船,郁闷中然后查文档解决之

    当程序用ado的jet4.0方式连接的时候,对于设有access数据库密码的mdb的访问居然报错“无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开”,而用odbc方式不报错,小阴沟里翻船,郁闷中然后查文档解决之:

     

     

    错误 7399

    严重级别 16
    消息正文

    OLE DB 提供程序 ''%1!'' 报错。%2!

    无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。

    解释

    用于 Jet 的 Microsoft OLE DB 提供程序返回的错误信息表明以下情况之一:

    • Microsoft® Access 数据库不是受保护的数据库,且指定的登录和密码不是无密码的 Admin

    • Access 数据库受到保护,并且 HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\SystemDB 注册表键值未指向正确的 Access 工作组文件。受保护的 Access 数据库具有相应的工作组文件,其中包括应由上面的注册表键值指出的完整路径。
    对策

    验证当前 Microsoft SQL Server™ 的登录是否映射为无密码的 Admin

    如果正在访问的 Access 数据库受到保护,请确保上面的注册表键值指向 Access 工作组文件的完整路径名。


    ADOConnection.ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False; Password=Psd;Data Source=filename.mdb"

    程序运行到ADOConnection.open时出错,显示“无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开。”请问该OPEN语句该这样写?
        注:该ACCESS数据库安装在服务器上,要求多用户可同时使用!
        水平: 中级(周明)
    问题出在: 
        ADOConnection.ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False; Password=Psd;Data Source=filename.mdb"
        不能用Password的形式定义数据库密码,应该改成:
        Provider=Microsoft.Jet.OLEDB.4.0;Data Source=filename.mdb ;Persist Security Info=False;Jet OLEDB:Database Password=Psd
     

    改了后就能够正常使用了,nnd,原来jet着鸟对于设置密码的mdb要用到windows的用户和组角色的设置的,以示安全,可tmd最可笑的是mdb的密码是单独存放的,脆弱的一踏糊涂,用一个小软件一看就能看到了,就象马奇诺防线,前面铜墙铁壁的,可德国人从后面抱了个园,谁和你正面作战呀,真可悲。。。。。
     
        
  • 相关阅读:
    Python—requests模块详解
    强烈推荐(原创亲测)!!!Fiddler抓取https设置详解(图文)
    dexlib2的源码框架
    Android检测代理
    APP加固反调试(Anti-debugging)技术点汇总
    IDA逆向常用宏定义
    JNI学习积累之一 ---- 常用函数大全
    CMake之CMakeLists.txt编写入门
    Android Project和app中两个build.gradle配置的区别
    更新说明
  • 原文地址:https://www.cnblogs.com/liangqihui/p/244338.html
Copyright © 2011-2022 走看看