SQL Server Local DB 2014在使用" Launcher"从程序调用时无法启动在文件名中

时间:2017-12-20 18:51:29

标签: .net localdb

帖子的标题说明了一切,但这是我的复制程序:

  1. 在32位Windows 10版本1607上运行此操作,不确定Windows构建是否重要,但我认为32位确实
  2. 安装SQL Server Local DB 2014 32位
  3. 使用命令提示符创建新的测试数据库:

    SqlLocalDB创建testdb
    SqlLocalDB启动testdb
    SqlLocalDB停止testdb

  4. 创建一个新的.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();

  5. 运行应用程序,它应该启动数据库,您可以在控制台中检查:

    SqlLocalDB info testdb

  6. 使用以下命令停止数据库:

    SqlLocalDB stop testdb

  7. 将控制台应用程序的程序集名称更改为Launcher并重新构建/重新运行该应用程序
  8. 进行更改后,我从sqlservr.exe收到弹出错误说:"应用程序无法正确启动(0xc0000142)。单击“确定”关闭应用程序。

    检查事件日志我看到这与错误匹配:

    Windows API调用WaitForMultipleObjects返回错误代码:575。Windows系统错误消息是:{Application Error} 应用程序无法正确启动(0x%lx)。单击“确定”关闭应用程序。 在线报道:3728

    我发现可执行文件的名称只需要包含Launcher就可以发生问题,而且你不需要返回并重新编译产生错误,只需重命名可执行文件名即可

    A"解决方案"只是重命名可执行文件,但这是一些强大的魔棒编程,所有这些背后必定有一些实际原因,但我还没有找到。

0 个答案:

没有答案