【发布时间】:2010-07-01 14:13:42
【问题描述】:
我创建了一个将连接到 SQL Server 以运行存储过程的类。在 Windows 窗体解决方案中使用此类时,可以成功访问数据库。将类放入 Windows 服务时,出现以下错误:
与网络相关或特定于实例的 建立时发生错误 连接到 SQL Server。服务器 未找到或无法访问。 验证实例名称是否为 正确,并且 SQL Server 是 配置为允许远程 连接。 (提供者:SQL 网络 接口,错误:26 - 错误定位 服务器/实例指定)
我怀疑问题与权限有关。
这是相关代码部分:
SqlConnection conn = new SqlConnection(j.ConnectionString);
SqlCommand cmd = new SqlCommand(j.Query, conn);
cmd.CommandType = CommandType.Text;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet("Table1");
da.Fill(ds, "Table1"); // <----- error occurs here (Windows Service only)
SQL Server 版本是
Microsoft SQL Server 2008 (SP1) - 10.0.2766.0 (X64)
Enterprise Edition (64-bit) on Windows NT 5.2 <X64>
(Build 3790: Service Pack 2)
Visual Studio 版本是Microsoft Visual C# 2008
框架版本为3.5 SP1。
【问题讨论】:
-
我会查看运行服务的用户。是本地用户吗?
-
你用的是什么连接字符串,你用的是集成认证还是sql server认证?
-
我尝试过使用“LocalService”、“NetworkService”、“LocalSystem”和“User”。连接字符串是“Persist Security Info=False;User ID=call_tracker;Password=pCa11Tracker;Initial Catalog=CallData;Data Source=SQLData\CORP”,这与用于有效的 Windows 窗体应用程序的连接字符串完全相同(从配置文件中读取字符串)。
-
你经常在公共论坛上泄露用户名和密码吗?
-
它们不是真实的(为了保护无辜而改变)。
标签: c# sql-server windows-services