无法从 Vista x64 Windows 服务连接到 SQL Server 2005 Db
Posted
技术标签:
【中文标题】无法从 Vista x64 Windows 服务连接到 SQL Server 2005 Db【英文标题】:Unable to Connect to SQL Server 2005 Db From Vista x64 Windows Service 【发布时间】:2008-12-23 02:00:14 【问题描述】:我正在尝试从在 Vista Home Premium x64 中运行的 .NET Windows 服务连接到远程 SQL Server 2005 数据库。我可以毫无问题地从控制台应用程序访问远程数据库。我可以毫无问题地从 Windows 服务连接到本地数据库。我能够毫无问题地从 XP 服务连接。没有运行防火墙或防病毒软件。如何配置此服务以能够连接到远程数据库?
我尝试通过以本地管理员帐户、LocalSystem、LocalService 和 NetworkService 身份运行 Windows 服务来进行连接。
连接字符串:
数据源=SERVER_NAME;初始目录=DB_NAME;集成安全=True;
错误:
与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)
更多信息:
我也尝试使用 SQL Server 身份验证进行连接,但没有成功:
数据源=SERVER_NAME;用户 ID=USER_ID;密码=PWD;初始目录=DB_NAME
此连接字符串也适用于控制台应用程序。
更多信息:
我为 Windows 服务和控制台应用程序运行了进程监视器。 Windows 服务显示 \SERVER_NAME\pipe\sql\query 被拒绝访问,但控制台应用程序在读取/写入文件到 \SERVER_NAME\pipe\sql\query 时显示成功。
【问题讨论】:
【参考方案1】:天哪!为什么这个网站上所有的胡言乱语和复杂的反应。创建用户帐户 本地或域,并将服务设置为使用该帐户。然后进入您的 SQL Server 并将您的新帐户添加到数据库并设置权限。瞧!
哦,是的,不要用 SQL 身份验证来困扰自己。集成安全性更易于维护,并且您的 web.config 中没有密码更安全。
【讨论】:
或者只在连接字符串中使用 SQL 身份验证。轻松多了。【参考方案2】:1) 打开命令提示符。键入“ping SERVER_NAME”。它有反应吗?如果这不起作用,您可能会遇到 DNS 或连接问题。
2) “telnet SERVER_NAME 1443”。您是否看到任何东西,或者它是否拒绝您的连接?这将明确告诉您另一端是否有人在收听。
3) 进入 SQL Server Management Studio。右键单击服务器的属性。从左侧选择“连接”。是否勾选了“允许远程连接”?
4) 由于您使用网络服务/系统运行,因此您需要确保在您的服务器上为机器帐户 DOMAIN\CLIENTSYSTEMNAME$ 配置了登录名。注意 $ 符号。这是您的计算机帐户,这将是 SQL Server 将看到的用户。
【讨论】:
1.平工作正常; 2. 1143不行,445好像行; 3:是的; 4:我通过 *** 进入网络并使用 Win Explorer 转到 \\Server,然后使用我的网络用户 ID/密码登录。之后,控制台应用程序连接到数据库就像从 XP 连接一样。 当你进入 *** 时,你的 机器 本身是域的成员吗?还可以尝试进入 SQL Server 配置管理器(在您的客户端上)并禁用命名管道。确保 TCP/IP 已启用。如果您使用 SQL Server 登录,它是否有效? 我的机器不是域的成员;我禁用了命名管道,并且已经启用了 tcp/ip。然后我使用 SQL Server 登录,它可以在控制台应用程序和 Windows 服务中运行!!! Windows 身份验证无法使用 tcp/ip 进行,但这没问题。非常感谢戴夫!以上是关于无法从 Vista x64 Windows 服务连接到 SQL Server 2005 Db的主要内容,如果未能解决你的问题,请参考以下文章
Rails 应用程序无法通过命名管道/套接字连接到本地 MySQL 服务器 --- Windows 7 x64
无法在 Vista x64 的 C# 应用程序中加载 C++ DLL