我正在尝试从Vista Home Premium x64中运行的.NET Windows服务连接到远程SQL Server 2005数据库。我可以从控制台应用程序访问远程数据库没有问题。我可以从Windows服务连接到本地数据库没有问题。我能够从XP的服务连接没有问题。没有防火墙或防病毒运行。如何配置此服务以便能够连接到远程数据库?
我尝试通过将Windows服务作为本地管理员帐户,LocalSystem,LocalService和NetworkService运行来进行连接。
连接字符串:
数据源= SERVER_NAME;初始目录= DB_NAME;集成安全性= True;
错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)
更多信息:
我还尝试使用SQL Server身份验证进行连接但没有成功:
数据源= SERVER_NAME;用户ID = USER_ID;密码= PWD;初始目录= DB_NAME
此连接字符串也可以从控制台应用程序中运行。
更多信息:
我为Windows服务和控制台应用程序运行了Process Monitor。 Windows服务显示\ SERVER_NAME \ pipe \ sql \ query是ACCESS DENIED,但是当读取/写入文件到\ SERVER_NAME \ pipe \ sql \ query时,控制台应用程序显示SUCCESS。
答案 0 :(得分:1)
哦,是的,不要用SQL身份验证来困扰自己。集成安全性更容易维护,并且在web.config中没有密码更安全。
答案 1 :(得分:0)
1)打开命令提示符。输入“ping SERVER_NAME”。它会回应吗?如果这不起作用,您可能会遇到DNS或连接问题。
2)“telnet SERVER_NAME 1443”。你看到了什么或拒绝你的连接吗?这将明确地告诉你是否有人在另一端听。
3)进入SQL Server Management Studio。右键单击服务器的“属性”。从左侧选择“连接”。是否选中“允许远程连接”?
4)由于您正在使用网络服务/系统运行,因此您需要确保在服务器上为计算机帐户DOMAIN \ CLIENTSYSTEMNAME $配置了登录。注意$符号。这是您的计算机帐户,这将是SQL Server将看到的用户。