【问题标题】:Application throws SQL exception when running as startup应用程序作为启动运行时抛出 SQL 异常
【发布时间】:2015-10-03 13:12:25
【问题描述】:

我正在开发一个 C# winforms 桌面应用程序。该应用程序有两个进程。用户只需要调用第一个进程,第一个进程将调用第二个进程。第一个过程进行所有 Web 服务调用以获取数据并存储在本地数据库中。第二个应用程序是基于 UI 的,并显示本地数据库中的数据。我正在为本地数据库使用 SQL Server 2008 R2 Express。

当用户单击桌面图标或从开始菜单调用时,此模型可以正常工作。但我的要求是在 Windows 启动时启动应用程序。所以我把第一个应用程序的快捷方式放在 Windows 启动中。在这种情况下,我看到在第二个进程上进行的数据库调用的 SQL 异常说用户sa 登录失败。

启动第二个进程的代码如下从第一个进程的表单加载调用

string MAIN_APP = "second.exe";
System.Diagnostics.Process.Start(MAIN_APP);
GetDataFromServer();

我不知道为什么它在从桌面调用时工作并且在启动时失败。我尝试在应用程序清单中将用户上下文设置为管理员,但这并没有解决问题。

有什么可能出错的提示吗?

第二个应用的代码如下:

try
{
    string sqlStr = "select remember_pass, imgfile from user_profile where  userid = '" + txtUserId.Text + "'";
    DataSet ds = new DataSet();

    SqlConnection con = new SqlConnection(mainConnectionString)
    SqlDataAdapter da = new SqlDataAdapter(str, con);
    da.Fill(ds);
}
catch(Exception ex)
{
   logger.log("Caught Exception. Reason {0}", ex.Message);
}

注意:我更正了问题陈述中的错误。

【问题讨论】:

  • 没有足够的代码来分析这个。显示您的第二个应用程序如何登录到数据库。
  • 请阅读您的帖子,因为它不是很清楚。示例:my requirement is to start the application at the start of the application
  • @Fabske 如果你阅读了整篇文章,很明显这句话应该是 "to start the [second] application at the start of the [first]"
  • 服务需要一段时间才能启动,而您等待的时间不够长。在这两个命令之间停几分钟,看看是否能解决问题。
  • @jdweng nope,“数据库调用的 SQL 异常 在第二个进程说登录失败”

标签: c# sql-server windows startup


【解决方案1】:

我认为您的服务在 SQL Server 准备好处理连接之前启动。

将您的服务设置为“自动(延迟)”,以便它在其他服务之后启动

更多关于延迟启动的信息:http://blogs.technet.com/b/askperf/archive/2008/02/02/ws2008-startup-processes-and-delayed-automatic-start.aspx

【讨论】:

  • OP 在哪里提到了 Windows 服务?他们声称已将应用程序置于 Windows 启动中,该应用程序仅在所有服务启动后才可用。
  • @CodeCaster 正确。我没有服务。我只是把应用程序的快捷方式放在 Windows 启动中。
  • @Prasanna 然后再次隔离问题。显示您的应用程序如何登录到 SQL Server。您是否从 app.config 加载连接字符串?
  • @CodeCaster 我没有使用应用程序配置。在安装过程中,我有一个模块显示 UI 供管理员输入 SQL 实例、用户名和密码的详细信息。根据输入的数据,我生成连接字符串并存储在一个文本文件中。应用程序在表单加载时读取文件并进行后续 DB 调用。连接字符串是正确的,因为它在我们手动启动应用程序时起作用。我的帖子中已经提到了调用数据库的代码。
  • @Prasanna 然后请检查该文件的加载方式...问题不在您显示的代码中。可能因为启动路径的原因找不到文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多