Tuesday, June 12, 2012

How to: Configure Express to accept remote connections


914277 How to configure SQL Server 2005 to allow remote connections
http://support.microsoft.com/default.aspx?scid=kb;EN-US;914277
-----------------------------------------------------------------------------------
Some people have been having issues when trying to make remote connections  to SQL Express.  This document will hopefully clarify most of the issues  around remote connections.

First, networking protocols are disabled by default in SQL Server Express.  Thus, if someone simply installs Express and chooses all the defaults, SQL  Server Express will only be able to have connections originating on the  local machine where SQL Server is installed.

To enable SQL Server Express to accept remote connections we need to perform  the following steps:
STEP 1: Enabling TCP/IP
First we must tell SQL Server Express to listen on TCP/IP, to do this perform the following steps:
1. Launch the SQL Server Configuration Manager from the "Microsoft SQL Server 2005 CTP" Program menu
2. Click on the "Protocols for SQLEXPRESS" node,
3. Right click on "TCP/IP" in the list of Protocols and choose, "Enable"

STEP 2: To Browse or not to Browse
Next, we have to determine if we want the SQL Browser service to be running or not.  The benefit of having this service run is that users connecting remotely do not have to specify the port in the connection string.  Note: It is a security best practice to not run the SQLBrowser service as it reduces the attack surface area by eliminating the need to listen on an udp port.

OPTION A: If you want to always specify a TCP port when connecting (Not using SQL Browser service) perform the following steps else skip these
steps:
1.      Launch the SQL Server Configuration Manager from the "Microsoft SQL Server 2005 CTP" Program menu
2.      Click on the "Protocols for SQLEXPRESS" node
3.      Click on the "TCP/IP" child node
4.      You will notice an entry on the right panel for "IPAll", right click on this and select, "Properties"
5.      Clear out the value for "TCP Dynamic Ports"
6.      Give a TcpPort number to use when making remote connections, for
purposes of this example lets choose, "2301"

At this point you should restart the SQL Server Express service.  At this point you will be able to connect remotely to SQL Express.  A way I like to check the connection is my using SQLCMD from a remote machine and connecting like this:
SQLCMD -E -S YourServer\SQLEXPRESS,2301
The "," in the server name tells SQCMD it's a port.

So you've tried this and still get an error.  Take a look at Step 3, this should address the remaining issue.

OPTION B:  If you want to use SQL Browser service perform these steps:
            Note:
            You will need to make this registry key change if you are using the April
            CTP or earlier versions:

            To enable sqlbrowser service to listen on the port 1434, the following
            registry key must be set to 1
            HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\SQL
            Browser\Ssrplistener

            Next, restart the sqlbrowser service.
      1. Start the SQL Browser Service

STEP 3: Firewall..?
      At this point you should be able to remotely connect.  If you still can't chances are you have a firewall configured on the computer where SQL  Express is running.  The instructions below are for Windows XP SP2's
firewall settings.
      To enable the firewall to allow SQL Server Express traffic:
         1. Launch the Windows Firewall configuration tool from the control  panel.
         2.Click the Exceptions Tab
         3.Click the "Add Programs." button and select "sqlservr.exe" from the location where you install SQL Server Express

You should be able to remotely connect.  Note, you can get more restrictive  by just specifying the port number that will be allowed (used best when  configured with Option A).

Note: If you chose to use the SQL Browser service, you must also add  sqlbrowser service executable to the exception list as it listens on udp port 1434.

source: http://blogs.msdn.com/b/sqlexpress/archive/2005/05/05/415084.aspx