我正在将 SQL Server LocalDB 用于网站。
安装 SQL Server LocalDB 并在安装过程中创建数据库。共享实例是通过LocalDBCreateInstance、StartLocalDBInstance和LocalDBShareInstance创建的。
如果实例启动,网站可以成功连接数据库。
但是,如果实例停止,它不会自动启动。从控制台应用程序访问数据库(当实例停止时)会导致实例启动。
所以这似乎是某种权限问题。
应用程序池以 AppPool 身份运行。但是,将其切换到网络服务或本地系统并不能解决问题。
应用程序池配置为加载其用户配置文件,并且“setProfileEnvironment”属性也设置为 true。(这两个设置都是必需的,如此处和此处所述)。
我已经使用 Sysinternal Process Monitor 监控了数据库访问,但没有找到任何“拒绝访问”条目。
我还尝试从网站本身(在 Global.asax 中)调用StartLocalDBInstance 。调用成功返回(返回值为S_OK),但实例仍然停止。