我正在尝试在用C#编写的Windows服务和SQL Server Express数据库之间建立连接。但是当调用connection.open
时,我得到了这个异常
System.data.sqlClient.sqlexception:
{"由于失败而无法生成SQL Server的用户实例 启动用户实例的进程。连接将是 关闭"}
但是当我将它作为控制台应用程序运行时,相同的代码工作正常。有人可以帮我这个吗?
_connection = new SqlConnection("Data Source=.\\MSSQLSERVER1;AttachDbFilename=D:\\vinay\\project\\LightHistorian\\LH_DB.MDF;Integrated Security=True;User Instance=True;");
我提供了与本地系统相同的凭据。它工作了一段时间并且在其他时间没有。但是当这个异常发生时,如果我重新启动机器它工作。认为问题是什么?
我已经为Windows服务和控制台应用程序使用了相同的连接
答案 0 :(得分:1)
执行控制台应用程序时,EXE在您的用户凭据下运行 当您执行服务时,这是用户凭据?您的服务是否在Locl服务帐户下运行?还是系统?或者是什么? 尝试手动设置服务必须运行的凭据(在Windows服务面板中,检查您的服务属性)并尝试使用与您运行控制台应用程序相同的用户/密码执行它。
更新取自here:
在本地SQL Server Express实例上使用用户实例
用户实例功能在连接期间动态创建新的SQL Server实例。这仅适用于本地SQL Server 2005实例,并且仅在通过本地命名管道使用Windows身份验证进行连接时才有效。目的是能够为计算机上具有有限管理权限的用户创建完整权限SQL Server实例
我认为您的服务凭据未授予创建新的SQL服务器实例,因此请尝试删除该部分。
无论如何,在服务属性上设置用户凭据,看看会发生什么。