Steps to troubleshoot SQL connectivity issues

Steps to troubleshoot SQL connectivity issues

Rate This
  • Comments 51

We have been seeing and trying to resolve SQL connectivity issue all the time. I guess it would be helpful if we can put some guidance on how to resolve connectivity issues. Here comes a proposal based on my experience.

 

Basically, when you failed to connect to your SQL Server, the issue could be:

1) Network issue,

2) SQL Server configuration issue.

3) Firewall issue,

4) Client driver issue,

5) Application configuration issue.

6) Authentication and logon issue.

 

Usually, customers see connectivity issue in their applications, but it would be great if you can follow the steps below to eliminate issues one by one and post a question on SQL Server Data Access forum if needed.

 

 

Step 1: Network issue

You might be able to make local connection without a working network, but that's a special case. For remote connection, a stable network is required. The first thing to trouble shoot SQL connectivity issues is to make sure the network we rely on is workable and stable. Please run the following commands:

 

ping -a <your_target_machine>    (use -4 and -6 for IPv4 and IPv6 specifically)

ping -a <Your_remote_IPAddress>

nslookup (type your local and remote machine name and IP address multiple times)

 

Be careful to see any mismatch on the returned results. If you are not able to ping your target machine, it has high chance that either the network is broken or the target machine is not running. It's possible the target machine is behind a firewall and the firewall blocks the packets sent by ping, though. Windows firewall does not block ping (ECHO) packet by default. The correctness of DNS configuration on the network is vital to SQL connection. Wrong DNS entry could cause of all sorts of connectivity issue later. See this link for example, "Cannot Generate SSPI Context" error message, Poisoned DNS.

 

Step 2: SQL Server configuration issue

You need to make sure the target SQL Server is running and is listening on appropriate protocols. You can use SQL Server Configuration Manager (SCM) to enable protocols on the server machine. SQL Server supports Shared Memory, Named Pipes, and TCP protocols (and VIA which needs special hardware and is rarely used). For remote connection, NP and/or TCP protocols must be enabled. Once you enabled protocols in SCM, please make sure restart the SQL Server.

 

You can open errorlog file to see if the server is successfully listening on any of the protocol. The location of errorlog file is usually under:

%ProgramFile%Microsoft SQL Server/MSSQLxx.xxx/MSSQL/Log

If the target SQL instance is a named instance, you also need to make sure SQL Browser is running on the target machine. If you are not able to access the remote SQL Server, please ask your admin to make sure all these happen.

 

Step 3: Firewall issue

A firewall on the SQL Server machine (or anywhere between client and server) could block SQL connection request. An easy way to isolate if this is a firewall issue is to turn off firewall for a short time if you can. Long term solution is to put exception for SQL Server and SQL Browser.

 

For NP protocol, please make sure file sharing is in firewall exception list. Both file sharing and NP use SMB protocol underneath.

For TCP protocol, you need put the TCP port on which the SQL Server listens on into exception.

For SQL Browser, please put UDP port 1434 into exception.

Meanwhile, you can put sqlservr.exe and sqlbrowser.exe into exception as well, but this is not recommended. IPSec between machines that we are not trusted could also block some packets. Note that firewall should never be an issue for local connections.

 

 

Step 4: Client driver issue

At this stage, you can test your connection using some tools. The tests need to be done on client machine for sure.

 

First try:

telnet <your_target_machine> <TCP_Port>

You should be able to telnet to the SQL server TCP port if TCP is enabled. Otherwise, go back to check steps 1-3. Then, use OSQL, SQLCMD, and SQL Management Studio to test sql connections. If you don't have those tools, please download SQL Express from Microsoft and you can get those tools for free.

 

OSQL (the one shipped with SQL Server 2000) uses MDAC.

OSQL (the one shipped with SQL Server 2005 & 2008) uses SNAC ODBC.

SQLCMD (shipped with SQL Server 2005 & 2008) uses SNAC OLEDB.

SQL Management Studio (shipped with SQL Server 2005 & 2008) uses SQLClient.

 

Possilbe command use be:

osql -E -SYour_target_machine\Your_instance for Windows Auth

osql -Uyour_user -SYour_target_machine\Your_instance for SQL Auth

 

SQLCMD also applies here. In addition, you can use “-Stcp:Your_target_machine, Tcp_port” for TCP,  “-Snp:Your_target_machine\Your_instance” for NP, and “-Slpc:Your_target_machine\Your_instance” for Shared Memory. You would know if it fails for all protocols or just some specific procotols.

 

At this stage, you should not see general error message such as error 26 and error 40 anymore. If you are using NP and you still see error 40 (Named Pipes Provider: Could not open a connection to SQL Server), please try the following steps:

a)       Open a file share on your server machine.

b)       Run “net view \\your_target_machine” and “net use \\your_target_machine\your_share  (You can try Map Network Drive from Windows Explorer as well)

If you get failure in b), it's very likely you have OS/Network configuration issue, which is not SQL Server specific. Please search on internet to resolve this issue first.

 

You can try connection using both Windows Authentication and SQL Authentication. If the tests with all tools failed, there is a good chance that steps 1-3 were not set correctly, unless the failure is logon-related then you can look at step 6.  

 

If you succeeds with some of the tools, but fails with other tools, it's probably a driver issue. You can post a question on our forum and give us the details.

 

You can also use “\windows\system32\odbcad32.exe” (which ships with Windows) to test connection by adding new DSN for various drivers, but that's for ODBC only.

 

 

Step 5: Application issue

If you succeed with steps 1-4 but still see failure in your application, it's likely a configuration issue in your application. Think about couple of possible issues here.

a) Is your application running under the same account with the account you did tests in step 4? If not, you might want to try testing in step 4 under that account or change to a workable service account for your application if possible.

b) Which SQL driver does your app use?

c) What's your connection string? Is the connection string compatible to your driver? Please check http://www.connectionstrings.com/ for reference.

 

 

Step 6: Authentication and logon issue

This is probably the most difficult part for sql connectivity issues. It's often related to the configuration on your network, your OS and your SQL Server database. There is no simple solution for this, and we have to solve it case by case. There are already several blogs in sql_protocols talking about some special cases and you can check them see if any of them applies to your case. Apart from that, things to keep in mind:

a) If you use SQL auth, mixed authentication must be enabled. Check this page for reference http://msdn.microsoft.com/en-us/library/ms188670.aspx

b) Make sure your login account has access permission on the database you used during login ("Initial Catalog" in OLEDB).

c) Check the eventlog on your system see if there is more information

 

At last, please post question on our forum. More people could help you over there. When you post question, you can refer to this link and indicate you see failure at which step. The most important things for us to troubleshoot are a) exact error message and b) connection string.

 

 

Xinwei Hong, SQL Server Protocols
Disclaimer: This posting is provided "AS IS" with no warranties, and confers no rights

Leave a Comment
  • Please add 4 and 2 and type the answer here:
  • Post
  • Currently we have installed Windows operating server 2008 and SQL server 2008 and now i want to connect server and workstation,unfortunately im unable to see SQL SERVER native client 10.1 at in ODBC connectivity.If i select SQL SERVER then it's prompting me "Login user failure :ABCServer\Guest" in ODBC section.

    1) do i need to install any package to all workstation/client pc?

    2) Can i connect directly using SQL Server setting to connect to server and database?

    Advise needed

  • Hi Ana,

    Sounds like you have 2 machines, one where SQL Server 2008 is installed and another machine where your application is running.  On the machine where your application is running, did you install SQL Server Native Client?  If not, you can find the latest SQL Server 2008 Native Client at http://www.microsoft.com/downloads/details.aspx?familyid=B33D2C78-1059-4CE2-B80D-2343C099BCB4&displaylang=en

    BTW, the ODBC driver name is "SQL Server Native Client 10.0}".

    Regarding your 2nd question, it would really depend on your application and how it configures the SQL Server setting.

    HTH,

    Jimmy Wu

  • Sorry, minor copy/paste error.  The ODBC driver name is supposed to be "{SQL Server Native Client 10.0}", with the '{}' around the name and not just '}' at the end.

    Jimmy Wu

  • I already installed the SQL Server Native Client 10.1 at client pc and while im connecting it prompt me error message " Login Failed for user "SERVER\GUEST" WHY?

    Urgently help needed.

    tks

  • Looks like you are trying to use Trusted_Connection.  Is the application running on IIS or some other mid-tier application server?

    Using Trusted_Connection will utility the authentication of the process.  So, if the process is configured to run as "SERVER\GUEST" then, that's the user credential SQL Server Native Client will use.

    If the application is hosted in IIS, please make sure IIS is configured to support Windows Authentication http://technet.microsoft.com/en-us/library/cc754628(WS.10).aspx

    BTW, for these type of troubleshooting questions, I recommend posting the question on our forum http://social.msdn.microsoft.com/forums/en-US/sqldataaccess/thread/ where you have the entire community to help you.

    HTH,

    Jimmy Wu

  • This link was very useful. Thanks a lot

  • line 1: Incorrect syntax near ‘-‘.

    • please help me out.

    I traced it, but I didn't find the character (I didn't write the character '-'). I ran my app on different computers, there's no problem with my app. I reformatted my computer and reinstalled all the programs, it didn't work. It still had that error...

    Can someone tell me what's wrong with my application (or computer)??

    Note: I'm using VB6 for the interface and SQLServer 2000 for the database and crystal report for report view. the error occurs when view reports using crystalr report.

  • • please help me out.

    I traced it, but I didn't find the character (I didn't write the character '-'). I ran my app on different computers, there's no problem with my app. I reformatted my computer and reinstalled all the programs, it didn't work. It still had that error...

    Can someone tell me what's wrong with my application (or computer)??

    Note: I'm using VB6 for the interface and SQLServer 2000 for the database and crystal report for report view. the error occurs when view reports using crystalr report.

  • Nice compilation.. This saved me today!

  • I have 2 SQL 2005 instances installed on a 2 node w2008 cluster.  Mgt Studio can connect  from XP client, but not from Windows 7 client.  

    ...suggestion?

  • Nice One. :) Thanks. Really helped me...

  • I am facing guest Login error when connecting to remote database

    running winxp pofessional sp3 with sqlserver express 2005.

    please help me to understand this & resolve this.

    hoping earnest reply.

  • Intermittent connectivity issues between application servers and sql cluster , i have 3 application servers are on NLB and 2 database severs  configured on SQL cluster [SQL 2005] . i am facing a intermittent connectivity issues with one of the application server (in NLB) to the db cluster . If anybody faced like this scenario before please let me know the resolution . Your  advises is highly appreciable.........

  • Thanks, was able to fix the Firewall issue!

  • i am using windows server 2008 r2 64 bit operating system and i've installed sql server 2008 standard edition 32 bit in that.  my application is working properly in server system . but, while accessing from client its not working properly. so, i've tested with .udl at client machine . it's raising an error as   [DBNETLIB][Connection Open(Connect()).]SQL Server does not exist or access denied. i was using xp2 in client machine. please give me the solution so that i can start the work at client side.

Page 3 of 4 (51 items) 1234