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