我知道使用LocalDb
非常好并且易于开发,我想知道在 IIS 服务器上托管网站时在生产中使用它是否是个好主意?
我问是因为我想知道它在生产中是否不会出现任何速度问题。
这是我想在生产中使用的连接字符串
Server=(LocalDB)\\v11.0;Integrated Security=SSPI;MultipleActiveResultSets=true;
AttachDBFilename=|DataDirectory|ProjectDB.mdf;
我知道使用LocalDb
非常好并且易于开发,我想知道在 IIS 服务器上托管网站时在生产中使用它是否是个好主意?
我问是因为我想知道它在生产中是否不会出现任何速度问题。
这是我想在生产中使用的连接字符串
Server=(LocalDB)\\v11.0;Integrated Security=SSPI;MultipleActiveResultSets=true;
AttachDBFilename=|DataDirectory|ProjectDB.mdf;
LocalDB 在生产中是绝对支持的。从性能的角度来看,它与 SQL Server Express 相同,因为它们共享相同的数据库引擎。
现在,对于在完整 IIS 中运行的站点,我建议使用基于服务的 SQL Server Express 实例。由于 IIS 作为服务运行,因此最好也有一个服务托管数据库。这意味着您不应该在连接字符串中使用User Instance=true
或AttachDbFileName=...
。
如果您想了解更多信息,我推荐这篇关于从完整 IIS 中使用 LocalDB 的帖子,第 1 部分及其后续内容,第 2 部分。他们进入更多细节。
“正常” - 很难说,这是一个相对的术语。
允许 - 是的。 以下是引入 LocalDB 的 Microsoft SQL Server Express 博客的引述:
“...如果 LocalDB 的简单性(和局限性)符合目标应用程序环境的需求,开发人员可以继续在生产中使用它,因为 LocalDB 也是一个非常好的嵌入式数据库。 ”
更新(2019 年 3 月)
在数十个生产站点使用 LocalDB 两年后,我将确认它有效。但是,如果您需要免费的多用户(LocalDB 术语中的“共享”)数据库,请改用 SQL Server Express。LocalDB 不是一个好的多用户解决方案。有许多障碍需要克服。我现在没有时间,但是如果您想了解有关这些障碍和相应解决方法的详细信息,请发表评论,我将在此处或其他问题中记录它们。
更新(2021 年 4 月)
Showstopper——共享(即多用户)实例功能在 SQL Server LocalDB 2017 和 2019 中被破坏。安装其中一个版本甚至会阻止访问在早期版本中创建的共享实例。问题记录在这里。唯一已知的“解决方法”是卸载损坏的 LocalDB 版本,并使用 LocalDB 2016 或更早版本。
更新(2021 年 9 月)
现在修复了之前更新(2021 年 4 月更新)中提到的Showstopper问题。警告:我没有亲自测试过这个修复。
我不这么认为,
尽管 LocalDb 和 SQLExpress 在性能上可能相同,但如果一段时间内没有任何请求,LocalDb 的进程会自行关闭。而且通常下一个请求需要很长时间才能响应(或者更糟糕的是,它会超时)。
我建议您安装自己的 SQLEXPRESS 实例。