【问题标题】:SQL Server Express Database hosted on Network Share - Is it Possible?托管在网络共享上的 SQL Server Express 数据库 - 可能吗?
【发布时间】:2012-08-10 20:18:50
【问题描述】:

我已经开始了一个需要 SQL Server 数据库的项目。我将在 c# .Net 3.5 中构建一个前端应用程序,它将使用 LINQ to SQL。

我需要将数据库托管在网络共享上,以便一组用户都可以访问数据库,主要是只读的。

我知道 SQL Server Compact 设计为在本地计算机上运行,​​而我的公司不愿意承担完整的 SQL Server 的成本。

有没有办法通过 SQL Server Express 实现我需要做的事情?

如果是这样,哪些是关于如何设置的最佳指南?

谢谢

【问题讨论】:

  • 任何 SQL Server 实例都希望以独占方式打开数据库文件。没有办法像你一样共享 SQL Server 数据库文件,例如访问数据库。
  • +1 提出一个好问题。

标签: c# sql sql-server-express


【解决方案1】:

如果您使用(免费)SQL Server express,它将满足您的需求 - 但您不能通过网络共享驱动器访问它 - 服务器将通过 IP 地址(或等效的 DNS)定位。

您的 c# 应用程序将与服务 - SQL Server 通信 - 而不是从数据库文件读取/读取。该服务将处理与数据库的交互。只有 SQL Server 服务需要知道文件的实际位置——您的客户端机器不会知道也不应该关心。

如果您的背景只是基于文件的数据库 - 即 MS Access,您需要稍微改变一下您对 SQL Server 工作原理的看法。

【讨论】:

  • 谢谢你,你知道我可以遵循什么好的指南吗?
  • 这里有一个,但是网上有很多教程可以找到:mssqltips.com/sqlservertip/2694/…
  • 在这种情况下使用 MS Access 甚至 LINQ to XML 会更好吗?
【解决方案2】:

您可以安装 SQL Server Express 实例,并为所有需要访问数据库的用户安装 SQL Management Studio Express。 Express Edition 是标准 SQL 服务器,在使用的处理器数量、使用的最大内存量和最大数据库大小方面存在限制。如果这些限制不打扰您,它应该对您很好。

使用网络共享作为数据库存储来访问来自多个客户端的 db 文件是一个坏主意,因为 sql server 实例应该始终是唯一直接访问数据库的实例,包括读取和写入访问。配置多个 SQL Server 实例来访问同一个数据库可能不起作用 - 如果它起作用,它可能会在您的数据库文件中造成严重破坏。

【讨论】:

  • 我想使用 c# 应用程序通过 DataContext 类访问数据库。这不可能吗?连接字符串将指向网络共享上的数据库?
  • 简单规则:数据库文件只能由使用它们的任何服务器的单个实例访问。可能是 SQL Server Compact 或 Express Edition,多个实例同时访问文件会带来麻烦。您可以使用 SQL Express 实例,使用 SQL Server 提供程序连接到数据库,并使用 Linq to SQL 查询数据库。这适用于任何数量的客户。在多个客户端上使用嵌入式 SQL Server compact 中的数据库肯定行不通 - 或者,正如我所说,对您的数据库文件造成严重破坏。
猜你喜欢
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 2011-03-18
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多