我正在尝试建立一个供员工在办公室使用的系统,以便他们可以从网站上运行某些程序。
他们将能够登录并转到报告页面,单击按钮以在公用服务器上运行报告程序。该程序将连接到SQL Server以获取登录信息,然后登录到另一个站点并以编程方式创建报告并下载它们。
如果我在服务器上将程序作为独立程序运行,它运行正常。我甚至将它作为服务器本身的计划任务运行,并且运行正常。只有当我尝试从网站运行程序时,我才会收到错误说明程序,但由于未处理的异常而终止。以下是事件查看器中错误的堆栈跟踪。
申请:趋势报告.exe
框架版本:v4.0.30319
描述:由于未处理的异常,该过程终止 异常信息:System.Data.SqlClient.SqlException堆栈: 在System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(System.Data.Common.DbConnection,System.Data.ProviderBase.DbConnectionFactory,System.Threading.Tasks.TaskCompletionSource
1<System.Data.ProviderBase.DbConnectionInternal>, System.Data.Common.DbConnectionOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(System.Data.Common.DbConnection, System.Data.ProviderBase.DbConnectionFactory, System.Threading.Tasks.TaskCompletionSource
1,System.Data.Common.DbConnectionOptions) 在System.Data.SqlClient.SqlConnection.TryOpenInner(System.Threading.Tasks.TaskCompletionSource1<System.Data.ProviderBase.DbConnectionInternal>) at System.Data.SqlClient.SqlConnection.TryOpen(System.Threading.Tasks.TaskCompletionSource
1) 在System.Data.SqlClient.SqlConnection.Open() 在Trending_Reports.Program.Main(System.String [])
以下是我用来启动该程序的代码。
var processToRun = new[] { @"D:\test\Trending Reports.exe" };
var connection = new ConnectionOptions();
connection.Impersonation = System.Management.ImpersonationLevel.Impersonate;
connection.Username = "Username";
connection.Password = "password";
var wmiScope = new ManagementScope(String.Format("\\\\{0}\\root\\cimv2", "Server"), connection);
wmiScope.Connect();
var wmiProcess = new ManagementClass(wmiScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
wmiProcess.InvokeMethod("Create", processToRun);
程序本身正在使用多线程。这会导致这个问题吗?或者它可能是一个用户问题,它不在远程计算机上使用我的用户配置文件?
答案 0 :(得分:0)
您是否已将SQL Server配置为接受远程连接?这是导致错误的常见原因。
您可以按照以下步骤操作:
This链接有一个带图片的分步教程(Microsoft SQL Server 2012 Express)。