我有个mdb格式的数据库文件放在局域网上,可通过共享目录访问(比如\\PC1\DATA\db.mdb),另外我做了一个客户端程序(.exe),去读取这个存放局域网上的mdb文件。如果该客户端放在本地上执行,则可以成功连接并读取数据库上的内容;但如果我把客户端放在局域网上(我把它放和mdb文件同一个目录上),直接运行,则无法连接数据库,提示:“请求“System.Data.Odbc.OdbcPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败。”连接数据库是使用绝对路径。而且odbc,oledb,ado都试过了,情况都和上面的一样。请问有没办法直接运行存放在局域网上的客户端也可以成功访问局域网上数据库文件呢?谢谢

解决方案 »

  1.   

    你好。存放MDB的目录已经设置为全部权限开通了,不然客户端放在本地也无法读取的。
    但奇怪的是客户端放在局域网上就连接不到数据库一个程序在本地运行和放在局域网上直接运行,会有什么差别可能影响到数据库连接呢?
      

  2.   

    还是权限问题,吧everyone的权限全部开放,然后共享的权限也是一样
      

  3.   

    访问和修改权限都保证肯定有了
    映射效果和读取局域网MDB效果完全一样谢谢^^
      

  4.   

    已经全部开通了,“共享”和“安全”都已经设置为everyone全部权限开通
    我觉得应该不是权限问题吧?因为我在本地运行的程序可以连接成功,但在局域网放的就不可以。如果是局域网目录权限问题,那本地程序应该也不能连接到局域网上的程序了
      

  5.   

    托管代码有安全设置的,默认情况下网络是不被信任的,你要在控制面板的.Net配置界面中信任你的程序所在路径。
    不过Access是不适合用于局域网共享的,因为数据库操作要把文件全部读出之后写回,在数据库较大时效率很低,而且容易造成数据库损坏
      

  6.   

    把access数据库和客户端放在同一个目录下,用access的相对路径访问数据库
      

  7.   

    to jiangsheng:
    很感谢!我招到了.NET配置内的“运行库安全策略->用户->受信任的应用程序”,但发现只能查看,不能添加
      

  8.   

    to wzq6511:
    这个也试过了,呵呵~还是一样效果啊>_<
    3q
      

  9.   

    运行%SystemRoot%\Microsoft.NET\Framework\v1.1.4322\ConfigWizards.exe,然后“调整.Net安全性”,把信任值调高就可以了。
      

  10.   

    to jinta2001:
    谢谢。还第一次知道有这个设置的地方,呵呵
    不过全部都设置成完全信任了还是不行T_T
      

  11.   

    只要把Internet那一项设置成完全信任就可以了啊,我这里的程序也有使用到MDB,这样设置后运行就正常了。在给几条建议:
    1。把你的程序加到“信任程序集”里面;
    2。配置“配置中等风险文件类型”的列表;
    3。在你的机器建一个跟服务器上面一样的用户/密码,然后使用该用户密码登陆;
      

  12.   

    to jinta2001:还是不行已经把Internet那一项设置成完全信任了,还是连不到你的程序使用的MDB也是放在局域网上吗?有没试过程序页一起放在局域网上呢?
    “信任程序集”里也添加不到局域网上的程序,一添加就提示---------------------------
    加载程序集时出错
    ---------------------------
    无法加载程序集: \\pc1\xx.exe
    ---------------------------
    确定   
    ---------------------------
      

  13.   

    你的会是\\pc1\xx.exe?
    \\server\temp\xx.exe
    我的EXE跟MDB都是在\\server\temp下面,设置完全信任后运行正常。
    程序中我是这样访问MDB的
    dtField=new DataTable();
    OleDbDataAdapter adapter=new OleDbDataAdapter("select * from PDM","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbFile);
    adapter.Fill(dtField);
      

  14.   

    to jinta2001() :啊。。其实我修改了一下文件地址再贴上来,少了个目录,呵呵
    我的启动方法完全和你一样啊~
    那在你设置完全信任之前是不是也是会提示“请求“xxxxxxx”类型的权限已失败。”?
    %SystemRoot%\Microsoft.NET\Framework\v1.1.4322\ConfigWizards.exe
    这是.net 1.1版本的配置吗?我连2.0 3.0都安装了,是不是要设置相应版本的配置?我在%SystemRoot%\Microsoft.NET\Framework\下其他版本目录没有招到ConfigWizards.exe谢谢jinta2001
      

  15.   

    写个server端读写数据,用socket连接
      

  16.   

    1。我在配置的时候很顺利就配置好了,并没有提示什么;
    2。ConfigWizards是1.1的,2.0的好象没有相应文件。没招了。
      

  17.   

    to vgy12304:这个是可以,但改动太大,无法实现了,呵呵
    to jinta2001:再次表示感谢!我再等等看^^
      

  18.   

    to jingliuting:谢谢,那有没试过把程序文件页放到局域网长,然后在局域网中直接运行,再读取局域网中的MDB文件呢?to wyhao:没有安装防火墙呢,呵呵
      

  19.   

    放置MDB 数据库的文件你用 Win98 准行.
      

  20.   

    to Jinwmmail:
    呵呵,,这个如果为了使用我的程序,服务器的2003换成98,估计就要被老板X掉了^^
      

  21.   

    是2.0的,估计要使用caspol.exe进行配置。
    还没看懂…
      

  22.   

    "D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\mscorcfg.msc"
    然后选择:.NET Framework 2.0 Configuration\我的电脑\运行库安全策略\计算机\代码组\All_Code\Internet_Zone,然后选择"编辑代码组属性",修改权限为FullTrust应该就可以了
      

  23.   

    to jinta2001:哈哈~成功了!谢谢!
    不过不是修改Internet_Zone,而是LocalIntranet_Zone,因为是本地网络。
    非常感谢jinta2001,还有感谢其他关注的朋友!!