While playing with my multiple SQL instances, I realized that I was not able to start one of the SQL instance on my laptop. Here is the error which I received when I tried starting it from Start > Run > Servics.msc . This error is related to TCP provider.
Windows could not start the SQL Server (MSSQLSERVER) on Local Computer. For more information, review the System Event Log. If this is a non-Microsoft service, contact the service vendor, and refer to service-specific error code 10048.
I opened ERRORLOG file and found below message.
2016-12-07 05:39:05.52 spid11s Server is listening on [ ‘any’ 51823].
2016-12-07 05:39:05.52 spid11s Error: 26023, Severity: 16, State: 1.
2016-12-07 05:39:05.52 spid11s Server TCP provider failed to listen on [ ‘any’ 51823]. Tcp port is already in use.
2016-12-07 05:39:05.52 spid11s Error: 17182, Severity: 16, State: 1.
2016-12-07 05:39:05.52 spid11s TDSSNIClient initialization failed with error 0x2740, status code 0xa. Reason: Unable to initialize the TCP/IP listener. Only one usage of each socket address (protocol/network address/port) is normally permitted.
2016-12-07 05:39:05.52 spid11s Error: 17120, Severity: 16, State: 1.
2016-12-07 05:39:05.52 spid11s SQL Server could not spawn FRunCommunicationsManager thread. Check the SQL Server error log and the Windows event logs for information about possible related problems.
Application event logs show below message.
Log Name: Application
Date: 12/7/2016 5:38:18 AM
Event ID: 26023
Task Category: Server
Server TCP provider failed to listen on [ ‘any’ 51823]. Tcp port is already in use.
By looking at error messages above, we know that SQL is trying to start on post 51823 and someone else is already using that port. We have two choices at this point.
- Find the process which is using 51823 ports and stop that process.
- Change port of SQL Server to a port which is not used by any other process.
To find out details about port usage, I generally use a free tool called TCPView. This utility is a sysinternals tool which gives us the information we need to fix this issue. Just start it, pause the data view, and look at which process is using the local port with the TCP protocol. As we can see below PID 3724 is using “Local Port” 51823 which is there in error message.
Once we identified know the process that is already using that port, we can take the appropriate action.
If you are not allowed to think in above direction, then you can always change the port in which your SQL Server instance is listening on, but I’d personally be extremely curious as to which process is already using that port.
Have you seen such behavior and how did you fix it? Please comment and let me know and share with other blog reader.
Reference: Pinal Dave (https://blog.sqlauthority.com)