如何通过IIS启动SQL Server LocalDB

Hen*_*use 6 sql-server iis localdb

我正在使用SQL Server LocalDB作为网站.

安装SQL Server LocalDB并在安装过程中创建数据库.通过LocalDBCreateInstance,StartLocalDBInstanceLocalDBShareInstance创建共享实例.

如果实例启动,网站可以成功连接到数据库.

但是,如果实例已停止,则不会自动启动.从控制台应用程序访问数据库(当实例停止时)会导致实例启动.

所以这似乎是某种许可问题.

应用程序池在AppPool标识下运行.但是,将其切换到网络服务或本地系统并不能解决问题.

应用程序池配置为加载其用户配置文件,"setProfileEnvironment"属性也设置为true.(如此此处所述,这两个设置都是必需的).

我已使用Sysinternal Process Monitor监视数据库访问,但未能找到任何"拒绝访问"条目.

我也尝试从网站本身调用StartLocalDBInstance(在Global.asax中).调用成功返回(返回值为S_OK),但实例仍然停止.

Krz*_*zyk 7

这是在IIS下使用LocalDB的缺点 - 该实例由您的交互式登录拥有,并且实例进程只能通过此登录启动.由于IIS作为某个服务帐户运行,因此无法启动属于您的交互式登录帐户的LocalDB实例.

您可以使用IIS服务帐户拥有的LocalDB实例,但请注意,您可能会遇到用户配置文件问题 - LocalDB需要创建和加载用户配置文件,而IIS使用有时可能无法完全创建和加载的轻量级用户配置文件.

有关在完整IIS中运行LocalDB的更详细讨论,请参阅这两篇博客文章.我只推荐它用于开发环境,并使用基于服务的SQL Express进行生产.

  1. 第1部分:用户配置文件
  2. 第2部分:实例所有权

  • 多么的不幸. (3认同)