网络共享上托管的SQL Server Express数据库是否可行?

3
我开始着手处理一个需要使用 SQL Server 数据库的项目。 我将在 c# .Net 3.5 中构建一个前端应用程序,该应用程序将使用 LINQ to SQL。
我需要将数据库托管在网络共享上,以便一组用户都可以访问该数据库,主要是只读访问。
我知道 SQL Server Compact 是设计在本地机器上运行的,而我的公司不愿意支付完整版 SQL Server 的费用。
那么,通过 SQL Server Express 是否有实现我所需功能的方法?
如果有,有哪些最佳指南可以告诉我如何设置?
谢谢。

任何 SQL Server 实例都需要以“独占”的方式打开数据库文件。与例如 Access 数据库不同,无法共享 SQL Server 数据库文件。 - Damien_The_Unbeliever
对于一个好问题,点赞! - Not So Sharp
2个回答

3
如果您选择免费的SQL Server Express,它将完成您需要的工作 - 但您不会通过网络共享驱动器访问它 - 服务器将通过IP地址(或等效DNS)定位。
您的C#应用程序将与服务-SQL Server-交互,而不是读写数据库文件。服务将处理与数据库的交互。只有SQL Server服务需要知道文件实际在哪里 - 您的客户机不会知道并且不应该关心。
如果您只熟悉基于文件的数据库 - 即MS Access,则需要稍微调整一下对SQL Server工作方式的理解。

谢谢您,您知道有哪些好的指南可以供我参考吗? - Derek
这里有一个教程,但是在线上可以找到很多其他的教程:http://www.mssqltips.com/sqlservertip/2694/getting-started-with-sql-server-2012-express-localdb/ - E.J. Brennan
在这种情况下,我是否最好使用类似于MS Access或甚至LINQ to XML的东西? - Derek

1
您可以安装SQL Server Express实例并为所有需要访问数据库的用户安装SQL Management Studio Express。Express版本是标准SQL服务器,但在使用处理器数量、最大内存使用量和最大数据库大小方面存在限制。如果这些限制对您没有影响,那么它应该可以正常工作。
将网络共享用作数据库存储以从多个客户端访问db文件是一个不好的想法,因为SQL服务器实例应始终是唯一直接访问数据库的实例,无论是读取还是写入访问。配置多个SQL Server实例以访问同一数据库可能不起作用,而且如果起作用,可能会在数据库文件中创建混乱。

我想使用C#应用程序通过DataContext类访问数据库。这不可能吗?连接字符串将指向网络共享上的数据库? - Derek
简单的规则是:数据库文件只能被使用它们的服务器的一个单独实例访问。无论是SQL Server Compact还是Express Edition,多个实例同时访问文件都会引起问题。您可以使用SQL Express实例,使用SQL Server提供程序连接到数据库并使用Linq to SQL查询数据库。这将适用于任何数量的客户端。在多个客户端上使用嵌入式SQL Server Compact从数据库中读取数据肯定不会起作用,或者像我说的那样,会对数据库文件造成严重影响。 - Dirk Trilsbeek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接