【问题标题】:Installer Win Forms Application with SQL Server 2014 Database带有 SQL Server 2014 数据库的安装程序 Win Forms 应用程序
【发布时间】:2016-01-07 12:11:15
【问题描述】:

我使用 VB.Net 和 SQL Express 2014 开发了一个应用程序。我使用 inno setup 创建了一个安装程序。数据库文件(mdf 和 ldf)与安装程序捆绑在一起,并安装在具有“完全”访问权限的单独数据库文件夹中。

连接字符串如下:

 <add name="MyApp.My.MySettings.MyAppConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Program Files\MyAppDB\MyApp.mdf&quot;;Integrated Security=True"
            providerName="System.Data.SqlClient" />

我正在使用 SQL Server 作为本地实例应用程序,使用 Windows 身份验证,没有 sql server 的登录 ID 和密码。

安装通常由具有管理员权限的 IT 部门人员完成,但当预期用户使用它时,由于用户没有权限,它会拒绝连接到服务器。如果用户是管理员,则应用程序能够连接到 SQL Server。 (当然,SQL Server 需要通过 Windows 资源管理器文件属性菜单手动授予“安全”权限 - 用户必须“添加”到具有“完全控制”权限的用户列表中)。

但在某些情况下,IT 部门拒绝向用户提供“管理员”凭据,这会成为一个安全问题。

我尝试谷歌搜索了一段时间并找到了信息,但无法解决应用程序 + sql server 为尚未安装应用程序的“非管理员”用户工作的问题..

希望我已经解释得够多了..

请帮我解决这个问题..

谢谢 伦加

【问题讨论】:

  • 当你说它拒绝连接 - 究竟是什么错误?

标签: sql-server vb.net deployment


【解决方案1】:

你试过把安装目录改成user/appdata吗?即使它只是为了数据库。 这可以解决任何冲突的用户权限。 您可以在位置的 inno 设置中使用以下这些环境变量。

C:\Users\user>echo %userprofile%
C:\Users\user

C:\Users\user>echo %appdata%
C:\Users\user\AppData\Roaming

【讨论】:

    【解决方案2】:

    将数据库文件放入Program Files 目录在概念上是不正确的。后者适用于未更改的内容,例如应用程序的二进制文件。数据库很可能会不断变化,即使在100%只读模式下使用也会有一些变化。

    不久前,当我在自己的项目中遇到同样的问题时,我选择了%ALLUSERSPROFILE% 目录。它专门针对所有用户通用的数据文件,因此默认情况下具有非常宽松的权限。

    除非您需要在同一台机器上为每个用户执行多个安装,否则它将是放置数据库文件的理想选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多