应用程序在作为启动运行时抛出SQL异常

时间:2015-10-03 13:12:25

标签: c# sql-server windows startup

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

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

启动第二个过程的代码如下所示,从第一个过程的Form Load

调用
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);
}

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

1 个答案:

答案 0 :(得分:0)

我认为您的服务在SQL Server准备好处理连接之前就开始了。

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

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