4

I'm trying to connect to a SQL Server Express server from a Linux Ubuntu 16.04 computer. I Installed all SQL commad line utilities for the linux machine and follow instructions from Microsoft SQL Server on Linux docs.

When I run

sqlcmd -S ip/SQLEXPRESS -U SA -P 1234

the command always returns the following error :

Microsoft ODBC Driver 13 for SQL Server : Login timeout expired.
Microsoft ODBC Driver 13 for SQL Server : TCP Provider: Error code 0x2AF9

I was able to run the same command from a Windows 10 computers and it works with no flaws.

The linux computer can communicate to the server machine and SQL Server 1433 port. I test this with the linux nc command (netcat).

Linux nc command results:

nc -z -v -w5 192.168.0.1 1433

Connection to 192.168.0.1 1433 port [tcp/ms-sql-s] succeeded!

Any suggestions or something missing?

I have tried changing the ports, parameter order etc... and Linux version of sqlcmd doesn't work.

I also tried including extra '/' character, because it is special on Linux. The new command line is sqlcmd -S ip//SQLEXPRESS -U SA -P 1234 but it doesn't work. It works faster but returns other error:

Microsoft ODBC Driver 13 for SQL Server : TCP Provider: Error code 0x2746.

Instance name doesn't work neither. sqlcmd -S SERVER-NAME\\SQLEXPRESS -U SA -P 1234 or sqlcmd -H ipaddress -S SERVER-NAME\\SQLEXPRESS -U SA -P 1234 The command recognizes quotes so sqlcmd -S "SERVER-NAME\SQLEXPRESS" -U SA -P 1234. Nothing works.

The correct syntax is sqlcmd -S ip\\SQLEXPRESS -U SA -P 1234 with double '\'. It doesn't connect anyway. I have several days struggling with it and could not find a way to make this thing work.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.