【问题标题】:How to Connect to a Remote Database如何连接到远程数据库
【发布时间】:2017-01-25 14:38:03
【问题描述】:

我在连接到远程计算机上的 Access 数据库时遇到了一些问题:

Microsoft Access 数据库引擎无法打开或写入文件“\\ACCESSSERVER-PC\Warehouse Manager\Error Logging\Error Logging.accdb”。它已被其他用户独占打开,或者您需要权限才能查看和写入其数据。

数据库没有开放供其他人编辑,我应该可以连接到它。

我正在使用这个连接字符串:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\ACCESSSERVER-PC\Warehouse Manager\Error Logging\Error Logging.accdb;Persist Security Info=False;

并且调用connOpen();时出现错误

using (var conn = new OleDbConnection(ConnectionString))
{
    try
    {    
        conn.Open();
    }
}

我为自己授予了服务器以及.accdb 文件本身的完全权限,并按照this postNETWORK SERVICE 帐户执行了相同的操作,但仍然没有运气。

我连接到本地存储的数据库时没有问题,这似乎只是在尝试通过网络连接时发生。

有没有其他人遇到过这种情况并找到了解决方案?非常感谢任何帮助或建议。

我已经检查了this answer 并且可以确认我拥有访问该文件所需的所有权限。

该问题被标记为与this question 重复,但我没有运行任何可以打开文件流的程序。

【问题讨论】:

标签: c# database ms-access permissions remote-server


【解决方案1】:

事实证明,这是由于尝试使用一些糟糕的 IT 基础架构造成的。

问题在于\\ACCESSSERVER-PC 实际上是一台 Windows 7 机器,因此只能处理有限数量的连接。

this answer 对数据库文件运行IsLocked 代码给了我一个更有用的错误消息:

此时无法与这台远程计算机建立更多连接,因为已经有该计算机可以接受的连接数。

在让一些用户断开其 Access 运行时和映射驱动器与服务器的连接并再次运行代码后,IsLocked 返回了false,然后我就能够连接到数据库。

这是我用来帮助我找到解决方案的代码:

protected virtual bool IsFileLocked(FileInfo file)
{
    FileStream stream = null;

    try
    {
        stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None);
    }
    catch (IOException)
    {
        //the file is unavailable because it is:
        //still being written to
        //or being processed by another thread
        //or does not exist (has already been processed)
        // 
        // ** OR There are already too many connections open to the         
        // ** "server" where the file exists!
        return true;
    }
    finally
    {
        if (stream != null)
            stream.Close();
    }

    //file is not locked
    return false;
}

故事的寓意是当您需要 20 多个并发连接到服务器时,不要使用(或在他们使用的环境中工作)Windows 7 机器作为服务器!

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2013-02-13
    • 2014-11-21
    • 1970-01-01
    • 2016-08-05
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多