我有一个驻留在网络驱动器上的简单访问数据库。所有需要对此数据库进行任何修改的人都可以访问他们的计算机,但他们希望只有一个只读网站才能显示其中包含的数据。我设置了一个网站并尝试使用accessdatasource,虽然我可以连接,但只要用户在访问中打开数据库,它就会出现问题。我根据www.connectionstrings.com交换了使用设置了连接字符串的sqldatasource,但我似乎遇到了相同或类似的问题,具体取决于我如何设置字符串/数据库。基本上,整个问题是,如果任何用户打开数据库,则阻止网页打开数据库。是否可以只从网页打开数据库?
它是一个访问2000数据库,但是每个人都使用access 2007的副本,并且在所有这些实例中,ASP.NET用户对包含数据库的网络目录具有读/写访问权限,并且对数据库具有读访问权限本身。
当我使用连接字符串时:
ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\<source>\<database>.mdb;User Id=<USER>;Password=<PASSWORD>;Mode=Share Deny Write;"
哪里不是默认的“admin”用户,并且配置为对数据库具有打开/运行(非开放/独占)权限,我收到错误:
无法启动您的应用程序。工作组信息文件丢失或由其他用户独占打开。
据我所知,没有工作组信息文件,但我不确定我在那里做什么。
什么时候是默认的“admin”用户,我收到错误:
无法使用'';文件已在使用中。
如果某人有数据库当前打开,否则,它可以正常工作。
最后,如果我使用连接字符串:
ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\<source>\<database>.mdb;User Id=<USER>;Password=<PASSWORD>;Mode=Read;"
我收到错误:
无法锁定文件。
我过去几天一直在谷歌搜索这个,我觉得我刚刚在圈子里四处走动。任何见解都将不胜感激。
答案 0 :(得分:0)
因为它是Access 2000格式,所以肯定必须是工作组文件(.mdw),即使它没有这样的安全设置。我会尝试连接字符串,您也可以指定工作组位置,例如:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword;
此外,我不建议在连接字符串中设置读/写属性,相反,我认为您最好在工作组文件中创建一个帐户,并仅将其分配为只读权限。
更新
这是ODBC连接方法:
Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;