Controlling Net-Libraries and Communications Addresses
New Information - SQL Server 2000 SP3.
After installing Microsoft® SQL Server™ 2000, you define the behaviors of the client Net-Libraries by using the Client Network Utility and server Net-Libraries by using the Server Network Utility.
Each instance of SQL Server 2000 can be listening on any combination of the server Net-Libraries at one time. There is one set of server Net-Libraries for each set of database engine executable files. The server Net-Libraries are installed in: C:\Program Files\Microsoft SQL Server\MSSQL$n, where n is the number associated with this set of database engine executable files.
All of the server Net-Libraries are installed during the server portion of SQL Server Setup, but some of them may not be active. The person running the Setup program can choose which combination of Net-Libraries is active for the instance being installed. The table shows the default server Net-Libraries that are activated by SQL Server Setup for the Microsoft Windows NT®, Microsoft Windows® 2000, Windows Me, and Microsoft Windows 98 operating systems.
|Windows NT and Windows 2000||Windows Me and Windows 98|
|TCP/IP Sockets||TCP/IP Sockets|
|Shared Memory||Shared Memory|
Disabling and Enabling Net-Libraries
After setup, you can disable and enable individual server Net-Libraries for each instance of SQL Server on a database computer using the Server Network Utility. When a server Net-Library is disabled for a specific instance, the database engine for the instance does not load the server Net-Library and does not accept connections using that Net-Library. The server Net-Library remains installed and can be enabled for other instances sharing the same set of executable files. For more information, see SQL Server Network Utility.
There is always one set of the client Net-Library DLLs installed on any computer running SQL Server 2000 client components. The client Net-Library DLLs are installed in the C:\Windows\System32 or C:\Windows\System directory. All of the client Net-Libraries are installed when you install the SQL Server 2000 client utilities. You can enable and disable the various client Net-Libraries using the Client Network Utility. When a client Net-Library is disabled it remains installed but is not considered for any connections. You can:
- Specify the sequence in which client Net-Libraries are considered for all connections except those that use a server alias.
- Enable or disable specific client Net-Libraries.
- As a compatibility option, define server aliases that define specific Net-Libraries and connection parameters to use when connecting to instances of SQL Server version 7.0 or earlier.
For more information, see Configuring Client Net-Libraries.
Connecting to SQL Server 2000
For a client to connect to a server running SQL Server 2000, the client must use a client Net-Library that matches one of the server Net-Libraries the server is currently listening on. Also, both the client and server must be running a protocol stack supporting the network API called by the Net-Library being used for the connection. For example, if the client tries using the client Multiprotocol Net-Library, and the server is listening on the server Multiprotocol Net-Library, but the server is running with the TCP/IP protocol while the client computer is running only with the IPX/SPX protocol stack, the client cannot connect to the server. Both the client and the server must be using the same Net-Library and running the same protocol stack.
Each instance of SQL Server on a computer must listen on different network addresses so that applications can connect to specific instances. Default instances of SQL Server 2000 listen on the same default network addresses as earlier versions of SQL Server so that existing client computers can continue to connect to the default instance. The table shows the default network addresses that instances of SQL Server 2000 listen on.
|Net-Library||Default instance network address|| |
Named instance network address
|TCP/IP Sockets||TCP Port 1433||A TCP port is chosen dynamically the first time the MSSQL$instancename service is started.|
|NWLink IPX/SPX||Port 33854||First available port after 33854 for each instance.|
|VIA SAN||VIA Port 0:1433||VIA Port 0:1433|
The VIA server Net-Libraries assign the same default address to both default and named instances. The system administrator must use the Server Network Utility to assign unique port addresses to each instance on a computer.
You can use the SQL Server 2000 Server Network Utility to find out what specific set of network address each instance of SQL Server is listening on for client connections.
When the SQL Server 2000 client Net-Libraries connect to an instance of SQL Server 2000, only the network name of the computer running the instance and the instance name are required. When an application requests a connection to a remote computer, Dbnetlib.dll opens a connection to UDP port 1434 on the computer network name specified in the connection. All computers running an instance of SQL Server 2000 listen on this port. When a client Dbnetlib.dll connects to this port, the server returns a packet listing all the instances running on the server. For each instance, the packet reports the server Net-Libraries and network addresses the instance is listening on. After the Dbnetlib.dll on the application computer receives this packet, it chooses a Net-Library that is enabled on both the application computer and on the instance of SQL Server, and makes a connection to the address listed for that Net-Library in the packet. The connection attempt fails only if:
- The requested instance of SQL Server 2000 is not running.
- None of the Net-Libraries that the instance of SQL Server 2000 is listening on is active on the application computer.
When Dbnetlib.dll compares the network protocols enabled on the application computer against those enabled on the instance of SQL Server 2000, the sequence of the comparison is specified using the Client Network Utility on the application computer. For example, assume an application computer has three client Net-Libraries enabled and specifies that the comparison sequence is TCP/IP Sockets first, NWLink IPX/SPX second, and named pipes third. If the application computer attempts a connection to an instance of SQL Server 2000 that has enabled only the NWLink IPX/SPX, named pipes and Multiprotocol server Net-Libraries, the connection is made using NWLink IPX/SPX. For more information about configuring the comparison sequence, see Configuring Client Net-Libraries.
Starting with SQL Server 2000 SP3a, instances of the SQL Server 2000 database engine and MSDE 2000 that are not configured to support network communications do not use UDP port 1434. Instances that are configured to support network communications do use UDP 1434.
An instance upgraded to SP3a stops using UDP 1434 whenever all of the server Net-Libraries for the instance, except the shared memory Net-Library, are disabled. The instance starts using port 1434 whenever you enable any of the server Net-Libraries. For information on disabling or enabling server Net-Libraries, see SQL Server Network Utility.
The use of UDP port 1434 by a computer does not stop until all instances of SQL Server 2000 and MSDE 2000 on the computer have been upgraded to SP3a and configured to not support network communications.
Whether UDP port 1434 is open or closed does not depend on the state of the shared memory Net-Library. The shared memory Net-Library is used only for local connections, and does not use a network. The shared memory Net-Library is always active; it cannot be enabled or disabled.
You can also specify whether the server Net-Libraries are disabled when installing or upgrading an instance of MSDE 2000 using the MSDE 2000 Setup utility DISABLENETWORKPROTOCOLS parameter. For more information on this option, see Customizing Desktop Engine Setup.exe.
You cannot assign UDP port 1434 to an application other than SQL Server on computers running instances of SQL Server 2000. Network administrators managing network filters must allow communications on UDP port 1434 to enable SQL Server 2000 connections to pass through the filter.
When running an application on the same computer as a default instance of SQL Server, you can use these names to reference the default instance.
|Windows NT and Windows 2000||Windows Me and Windows 98|
|Computer name||Computer name|
*Where "(local)" is the word local in parentheses and "." is a period, or dot. "." is valid only in SQL Server utilities, such as SQL Query Analyzer and osql; it cannot be specified in API connection requests.
Do not use either (local) or . to connect to a virtual server implemented using failover clustering.
Using the computer name is recommended. These connections will be made with the Shared Memory Net-Library. DB-Library does not support using (local).
Connecting to Earlier Instances of SQL Server
When applications using the SQL Server 2000 client components connect to instances of SQL Server version 7.0 or earlier, the communications between the instance and the application function the same as they did in the earlier versions of SQL Server. Applications using SQL Server version 7.0 or earlier client components to connect to default instances of SQL Server 2000 also communicate as they did in earlier versions of SQL Server. In both of these cases you must administer the network addresses the way they were administered in earlier versions of SQL Server. For more information about configuring a client in earlier versions of SQL Server, see Managing Clients.
SQL Server version 6.5 and earlier supported Windows Authentication (called Integrated Security in those versions) only on the Named Pipes and Multiprotocol Net-Libraries. SQL Server 2000 and SQL Server version 7.0 support Windows Authentication on all Net-Libraries. Existing SQL Server version 6.5 or 7.0 applications that use the default Named Pipes Net-Library can be used to open Windows Authentication connections to instances of SQL Server version 6.5. However, if you upgrade the SQL Server client utilities on the application computer to SQL Server 2000, the default Net-Library changes to TCP/IP, and any attempt to open a Windows Authentication connection to instances of SQL Server version 6.5 fails. To resolve this, you can use the Client Network Utility to put the Named Pipes Net-Library at the top of the Net-Library list, thereby establishing it as the default Net-Library.