Topics from the Microsoft SQL Server Protocols team - Netlibs, TDS, SQL Browser, etc.
SQL Server running on Windows Cluster Service is called SQL Server Virtual Server or SQL Server Cluster. There are three related terminologies in SQL Server Virtual Server. It’s important not to confuse with each other.
When a client connects to SQL Server Virtual Server, users should always use Virtual Server Name, You can think of the Virtual Server Name as the server name of a standalone SQL Server. If you try to connect your Virtual Server through the physical node names or the cluster name, you will typically see the following error message:
C:\ >osql -E -SMyClusterName[SQL Native Client]Named Pipes Provider: Could not open a connection to SQL Server .[SQL Native Client]Login timeout expired[SQL Native Client]An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.
Among all network protocols provided by SQL Server 2005, Shared Memory is not supported on SQL Server 2005 Virtual Server. As we know, Shared Memory is only for local usage. If you connect SQL Server Virtual Server using Shared Memory from the physical node, you’ll see the following error message:
C:\ >osql -E -Slpc:Node1[SQL Native Client]SQL Network Interfaces: Cannot open a Shared Memory connection to a remote SQL server .[SQL Native Client]Login timeout expired[SQL Native Client]An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.
So, you know that the system considers the SQL Server Virtual Server as another computer. If you happened to have a cluster resource which depends on the same "Network Name" resource that the SQL Server Cluster depends on, you will see the following message when your application tries to connect the SQL Server Cluster using Shared Memory:
C:\>osql -E -Slpc:MyVirtualServer[SQL Native Client]Shared Memory Provider: Shared Memory is not supported for clustered server connectivity .[SQL Native Client]Client unable to establish connection [SQL Native Client]Login timeout expired
Named Pipes is supported on SQL Server Virtual Server. The pipe name on virtual server is specially formed, but transparent to the clients, i.e. the clients should still use the standard form \\MyVirtualServer\pipe\sql\query. If you have to configure your own pipe name for the SQL Server Cluster through SQL Server Configuration Manager, you should use the following form of strings as the pipe name: \\.\pipe\$$\MyVirtualServer\sql\query. Windows Cluster Services automatically maps the pipe name (\\MyVirtualServer\pipe\sql\query) on a virtual server to the pipe name ( \\.\pipe\$$\MyVirtualServer\sql\query ) on the physical machine. The ‘$$’ is a hint to Windows to bind the pipe to a virtual server as opposed to the physical name.
SQL Server 2005 extends the supportability of TCP on Cluster and provides better usability for customers to configure/reconfigure IP addresses. In SQL Server 2000 Virtual Server, users configure IP addresses for the SQL server instance to listen on during installation. Once the server is installed, the user is not allowed to change/add/remove IP addresses. To reconfigure IP addresses, users may have to reinstall the SQL Server instance. This is not the case anymore in SQL Server 2005. SQL Server 2005 Virtual Server relies on Cluster Services to manage the IP addresses that the virtual server listens on. On Windows Cluster, everything is considered as resources. A SQL Server Virtual Server is a “SQL Server” resource. The “SQL Server” resource depends on a “Network Name” resource, which may depend on one or more “IP Address” resources. The name parameter of the “Network Name” resource is the name of the virtual server. To add an additional IP address your virtual server listens on, you can let your “Network Name” resource depend on an additional “IP Address” resource. You can also configure/update the IP address and its NIC card through Cluster Administrator. These IP addresses may belong to different networks. We recommend users use Cluster Administrator, rather than SQL Server Configuration Manager, to configure IP addresses of a SQL Server 20005 Virtual Server. Users can still use the SQL Server Configuration Manager to configure the TCP ports the virtual server listens on, though.
To enable VIA protocol, special hardware and drivers are required. For most users, VIA should be turned off, especially when you don’t know what it is. This blog does not cover the topic about VIA on Cluster. Please refer our future blogs for details.
Xinwei Hong, SQL Server ProtocolsDisclaimer: This posting is provided "AS IS" with no warranties, and confers no rights
Regarding this portion -
To add an additional IP address your virtual server listens on, you can let your “Network Name” resource depend on an additional “IP Address” resource. You can also configure/update the IP address and its NIC card through Cluster Administrator. These IP addresses may belong to different networks. We recommend users use Cluster Administrator, rather than SQL Server Configuration Manager, to configure IP addresses of a SQL Server 20005 Virtual Server. Users can still use the SQL Server Configuration Manager to configure the TCP ports the virtual server listens on, though.
What if you wanted to add a second network that was for server to server traffic only that should not have it's IP registered publicly? I believe if you have the network name depend on both IP's they will both be registered in DNS. Also, new IP's registered on the server don't seem to show up in configuration manager. Anyone have any idea how to get them to show up?
You can ask Cluster Administrator avoid registering DNS. There is a check box you should be able to find in the properities windows. The IP addresses shows on SQL configuration manager does not apply to SQL Cluster. SQL Configuration manager seems not able to check the IP addresses for SQL Cluster(need specific APIs to do it). I will check with related team see if they can improve this in next release.
PingBack from http://chaespot.com/mssql/2007/04/22/two-sql-server-2005-in-a-cluster/
PingBack from http://chaespot.com/mssql/2007/09/14/before-you-start-learning-how-to-cluster-this/
PingBack from http://josephsite.beyondspeed.com/howdoifailoveraspecificnamedinstanceofsql2005toaanothernode.html
Thamks for these nice hints, you saved my day.
I had added an additional virtual IP (though Cluster Adminitrator) to an SQL2005 Cluster, but SQLserver would not listen to it.
Was puzzled, 'til I read your description: The depedency from network name to the IP was missing.
Changed this, restarted: all fine.
クラスタ構成の SQL Server 2005 で共有メモリ接続をしようとすると以下のエラーが発生します。 このメッセージだけだと分かりにくいのですが、接続先サーバーを localhost として設定すると
Virtual private servers bridge the gap between shared web hosting services and dedicated hosting services, giving independence from other customers of the VPS service in software terms but at less cost than a physical dedicated server.
Good and very useful information.