【问题标题】:Windows service and MS Access on UNCUNC 上的 Windows 服务和 MS Access
【发布时间】:2017-12-12 09:13:03
【问题描述】:

我正在尝试让我的 Windows 服务连接到位于 UNC 上的 MS Acces 数据库

private static void InsertData(string sql)
    {
        System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();

        conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
                                @"Data source=\\svr\Users\XXXX\XXXXX\db.accdb";


        try
        {
            conn.Open();
            OleDbCommand cmd = new OleDbCommand(sql, conn);
            cmd.ExecuteNonQuery();

            WriteToFile("Data saved successfuly...!");
        }
        catch (Exception ex)
        {
          WriteToFile("Failed due to: " + ex.Message);
        }
        finally
        {
            conn.Close();
        }
    }

这是我得到的错误 "Microsoft Access 数据库引擎无法打开或写入文件 '\svr\Users\XXXX\XXXXX\db.accdb'。它已被其他用户以独占方式打开,或者您需要权限才能查看和写入其数据。"

权限设置为域用户,读、写、修改等。数据库不被任何人打开。

我已经在控制台应用程序中尝试了确切的代码,它运行良好。 有什么想法吗?

【问题讨论】:

  • 如果您将 UNC 路径映射到网络驱动器号,它是否有效?您对放置 db 的目录也有读/写权限吗?
  • 我也尝试在服务中使用驱动器号,它说“X:\xxxx.xxxx 不是有效路径。确保路径名拼写正确并且您已连接到文件所在的服务器。”。我也有驱动器的权限。

标签: c# service ms-access-2010 unc


【解决方案1】:

我只记得您可能在哪里遇到问题。我记得 64 位 ODBC 与 32 位 ODBC 有问题!

如果您运行的是 32 位 Ms Access,则必须使用路径 C:\Windows\SysWOW64\odbcad32.exe! 的 32 位 ODBC 可执行文件!

您必须先设置连接:

1) C:\Windows\SysWOW64\odbcad32.exe 以管理员身份启动并单击按钮添加

2) 然后在此处输入您的连接:

第一次编辑填写 ODBC 数据源的示例:

不要忘记,之后您正在处理新创建的数据源。

【讨论】:

  • 谢谢。神经人会知道这一点的。最初没有用,但是一旦我设置了系统数据库按钮,一切都很好。
  • 您的应用程序或 ODBC 设置出现错误?你能补充一些细节吗?
  • @james:你试过了吗?
  • ODBC 设置显示正常,VS2017 出现错误。我刚刚尝试写入文本文件并拒绝访问。该服务作为本地系统运行应该是网络服务吗?
  • @James 你说的是哪个服务?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2015-11-13
  • 1970-01-01
相关资源
最近更新 更多