This article describes several items and potential issues to consider when
you run Microsoft SQL Server versions 6.0 and 4.21 simultaneously on the
same server.
For additional information on this topic, please see the following article
in the Microsoft Knowledge Base:
- One server version must use an alternate pipe name. Before you choose on
which version to change the default pipe, you may want to consider if
you will be using Windows NT Performance Monitor, because it only
listens on the default pipe.
The default pipe for both versions of SQL Server is
\\.\PIPE\SQL\QUERY. Both versions of SQL Server cannot use the default
pipe name to accept connections. In this pipe name configuration, one of
the server versions must change the "\SQL\" portion to another name,
such as \SQL421A\ or \SQL60\. This same concept applies to port numbers
for TCP\IP socket connections and service names for NWLink connections.
If both servers need to listen for TCP\IP socket connections, then
they must be setup to use different port numbers.
To change the named pipe for SQL Server version 4.2x, you need to edit
the following key in the Windows NT registry using the NT Registry
Editor (REGEDT32.EXE):
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\SQLServer\Server
Change the ListenOn value from the default to something like
\\.\PIPE\SQL42\QUERY. You should always make a backup of the NT registry
before making any direct modifications using the NT Registry Editor.
To change the default pipe for SQL Server version 6.0, select the
Change Network Support Option using the SQL Server Setup program. For
TCP\IP and NWLink configurations, the SQL Server Setup program
can be used for both versions 4.21a and 6.0. If you are running SQL
Server using Windows NT integrated security mode, you cannot change
the network support options. If you need to make changes, you must first
reset security mode to standard or mixed.
NOTE: Certain SQL tools such as SQL Enterprise Manager, SQL
Executive, and SQL Monitor connect by default to SQL Server's
default pipe and are changeable. Only SQL Performance Monitor is not
changeable.
- If the version 6.0 SQL\DLL directory appears before the 4.2x SQL\DLL
directory in the path, client programs such as ISQL/w will use the
6.0 version of DB-Library (NTWDBLIB.DLL).
When you try to connect to SQL Server listening on an alternate pipe
with the 6.0 version of DB-Library, the advanced configuration entry
must have been made with the 6.0 version of Client Configuration
Utility. If the 4.21 version of DB-Library is used, the advanced
configuration entries must be made with the 4.21 version of the Client
Configuration Utility.
- You must add client configuration entries to register a server with SQL
Enterprise Manager when the server is configured to listen on an
alternate pipe.
If version 6.0 is configured to listen on an alternate pipe, then an
entry in the Advanced section of the Client Configuration Utility must
be created.
One method is to create an entry for the version 6.0 server using the
NT computer name of the server as the registered SQL server name. In
this situation, you need to create another entry for the 4.21a server
using an alternate server name. This way, both servers can be registered
with SQL Enterprise Manager.
The following are example Advanced entries (using the NT computer name
of the server as 'treasure'):
6.0 : SERVER : treasure; DLL : dbnmpntw; CONNECTION STRING :
\.\PIPE\SQL60\QUERY
4.21a: SERVER: treasure_421a; DLL: dbnmpntw; CONNECTION STRING:
\.\PIPE\SQL\QUERY
NOTE: If a server is registered with SQL Enterprise Manager that is not
a valid NT computer name, you will not be able to control the services
of that server with SQL Enterprise Manager. Furthermore, if you use an
alternate name for a local server that matches the NT computer name of
another SQL server on your network, SQL Enterprise Manager will try to
control the remote service while connecting to the local server.
- If the alternate pipe is set for version 6.0, you need to configure SQL
Executive to connect to SQL Server using a specific server name. First,
create a specific server connection entry using the Advanced tab of the
SQL Client Configuration Utility. Configure this server entry to connect
to the local server using the appropriate Net-Library and connection
string. Then set the ServerHost value in the SQL Executive section of
the Windows NT Registry to the name the name used for the advanced
connection above. Here is the location of the ServerHost value:
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MSSQLServer\SQLExecutive
- If the alternate pipe is set for version 4.2x, you need to configure SQL
Monitor to connect to SQL Server using a specific server name. First,
create a specific server connection entry using the Advanced tab of the
SQL Client Configuration Utility. Configure this server entry to connect
to the local server using the appropriate Net-Library and connection
string. Then set the Server value in the SQL Monitor section of the
Windows NT Registry to the name the name used for the advanced
connection above. Here is the location of the Server value:
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\SQLServer\SQLMonitor
- Client applications may require additional configuration. For DB-Library
or ODBC clients using the named pipe network library, an additional
advanced client configuration entry may be needed similar to step 2. If
the client does not create an advanced entry and connects to a server
name that matches the NT computer name, it will connect to the server
version that is listening on the default named pipe.
- Transfer Manager requires a change to the server name if you transfer
databases between server versions on the same server. If you need to
transfer data between the two SQL Server versions on the same server or
perform remote stored procedure calls between them, you have to change
the local SQL server name for one of the server versions. This can be
done using the stored procedure sp_addserver.
For example, to change the name of the SQL Server version 4.21a, run:
sp_addserver treasure_421a, local
This changes the server name in the master.dbo.sysservers table and sets
the @@servername global variable.