When you try to connect to a clustered Microsoft SQL Server 2005 or Microsoft SQL Server 2000 named instance by using the "servername\instancename" syntax, you receive the following error message:
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.You may receive this error message when the following conditions are true:
- SQL Server 2005 or SQL Server 2000 is installed on a cluster.
- You are connecting to a SQL Server named instance by using TCP/IP sockets.
- IPSec policy is enabled on the client domain.
- IPSec policy is not enabled on the server domain.
This problem occurs during the discovery phase of the connection. The IPSec policy on the client drops packets from the server when the source IP changes.
To work around this problem, you have to hardcode the TCP port or the Named Pipe of the SQL Server named instance. To do this, use a connection string that is similar to one of the following:
; Hardcoded TCP OLE DB initstring
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=clientID;Data Source=tcp:TcpIpAddress,port[oledb]
; Hardcoded Named Pipes OLE DB initstring
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=clientID;Data Source=np:\\ServerName\pipe\MSSQL$InstanceName\sql\query
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
For additional information about how to troubleshoot connectivity issues in SQL Server 2000, click the following article number to view the article in the Microsoft Knowledge Base:
827422 How to troubleshoot connectivity issues in SQL Server 2000
Article ID: 888228 - Last Review: Jul 10, 2008 - Revision: 1