帖子的标题说明了一切,但这是我的复制程序:
使用命令提示符创建新的测试数据库:
SqlLocalDB创建testdb
SqlLocalDB启动testdb
SqlLocalDB停止testdb
创建一个新的.Net 4.7控制台应用程序,将其命名为Launcher以外的任何名称,并使用以下命令填充main方法:
System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = @" C:\ Program Files \ Microsoft SQL Server \ 120 \ Tools \ Binn \ SQlLocalDB.exe&#34 ;; startInfo.Arguments ="启动testdb&#34 ;; process.StartInfo = startInfo; 的Process.Start(); process.WaitForExit();
运行应用程序,它应该启动数据库,您可以在控制台中检查:
SqlLocalDB info testdb
使用以下命令停止数据库:
SqlLocalDB stop testdb
进行更改后,我从sqlservr.exe收到弹出错误说:"应用程序无法正确启动(0xc0000142)。单击“确定”关闭应用程序。
检查事件日志我看到这与错误匹配:
Windows API调用WaitForMultipleObjects返回错误代码:575。Windows系统错误消息是:{Application Error} 应用程序无法正确启动(0x%lx)。单击“确定”关闭应用程序。 在线报道:3728
我发现可执行文件的名称只需要包含Launcher就可以发生问题,而且你不需要返回并重新编译产生错误,只需重命名可执行文件名即可
A"解决方案"只是重命名可执行文件,但这是一些强大的魔棒编程,所有这些背后必定有一些实际原因,但我还没有找到。