Could not connect to SQL Server instance from one of the machines - sql-server

I have two machines (a laptop and a desktop) connected to the same network throgh the same router and an SQL Server with 2 instances: ODD and EVEN, both instances have the same configuration (as far as I can see), including sa account settings.
From my desktop I can connect to both instances, but from laptop I can connect only to the EVEN instance, when I try to connect to ODD instance I get the following error:
Microsoft Visual Studio
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
OK
I know that:
I have correct password, because I can connect to EVEN
I have correct firewall settings, because I can connect to EVEN and both instances use the same TCP/IP port 1433
I have properly configures server, because I can connect to the both instances from desktop.
How should I troubleshoot this issue? Is there any more detailed information about what went wrong? Why does Visual Studio uses named pipes and does not try TCP/IP for example?

Check Sql Server Configuration manager on your client and server to see if TCP/IP protocol is enable or not. you can even disable Named Pipes protocol there and see how it will effect on VS error message.
you can even check server setting by trying below command from command shell.
telnet server-ip 1433

Related

Connect IIS in DMZ to SQL Server on intranet

I'm trying to connect IIS which is running on a server in the DMZ to a SQL Server instance on the company intranet. But, I'm getting the following error:
An unhandled exception occurred while processing the request.
Win32Exception: Access is denied.
Unknown location
SqlException: A network-related or instance-specific error occurred while establishing a
connection to SQL Server. The server was not found or was not accessible. Verify that the
instance name is correct and that SQL Server is configured to allow remote connections.
(provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
Do I need specific ports opened up on one of the servers? Or is there something else I need to do?
Considering your SQL server is running, start with the networking. On which port is your SQL instance listening (default 1433)?
If you don't know, open the SQL Server Configuration Manager (on the SQL Server). Navigate to the SQL Server Network Configuration > Protocols for %instancename% > TCP/IP > IP Addresses. Then, test if something is blocking this connection; on your IIS in PowerShell:
Test-NetConnection -ComputerName sqlservername -Port 1433
If this doesn't work, check the Inbound Rules for Windows Firewall on your SQL Server. Make sure you work on the right network profile and eventually speak to the one managing your network systems in your company.
Maybe your IIS can't resolve the SQL Servers hostname? Try using the IP and check your DNS configuration.
There might also be something off with your connection string. Mind posting it here?

How to connect to an SQL Server on Parallels VM

I'm attempting to connect to a test Database on a Parallels VM on Mac using Azure Data Studio, but I'm getting the standard, generic connection error:
System.Data.SqlClient.SqlException (0x80131904): A network-related or
instance-specific error occurred while establishing a connection to
SQL Server. The server was not found or was not accessible. Verify
that the instance name is correct and that SQL Server is configured to
allow remote connections. (provider: TCP Provider, error: 40 - Could
not open a connection to SQL Server)
Steps I've taken so far to open the connection include:
Opening port 1433 through windows firewall
Ensuring remote connections are allowed on the SQL instance
Setting the TCP/IP Protocol to 5171 for IPAll
Running SQL Server and SQL Browser Instances
Adding a rule to windows firewall for sqlservr.exe to allow all connections
Enabling the SA account and adding a password (password is correct - I've double checked in SSMS on the VM)
I'm able to connect from the windows VM but not the Mac.
My connection string is below (IP is correct, again I've double checked):
Is there a step I've missed or some extra config that I need to do on the VM itself maybe? Or maybe the connection string isn't quite right? I've also tried using the Machine Alias to connect to the instance (SQLEXPRESS) - but still no joy. Anyone know what the problem might be because it's driving me crazy and I can see that other devs have made it work, so I know it's possible. My version of Parallels is Desktop 15, I don't know if that makes a difference or not?
Ok so turns out I needed to open the IPAll port I had set for the TCP/IP Config which in my case was 5171 as well as adding a rule to allow SQL Server Browser to connect to the internet.
For those of whom the above method doesn't work, try Bridged Network instead of Shared Networking in the Network settings and replace the old IP address with the new one.
I am able to connect to Microsoft SQL Server (in Parallels Desktop 16) using Visual Studio Code in macOS Big Sur.

.Net core connection string to MSSQL from OSX

I am trying to connect to an MSSQL server from a C# ASP.Net core application running in OSX. The MSSQL is on a separate machine which firewall is configured to let connections via TCP to port 1433 and via UDP to port 1434.
The connection string I am using is:
Server=IP\SQLEXPRESS;Database=DB_NAME;user id=****;password=*****
What is very confusing at this point is that the very same connection string works flawlessly from Windows and both Visual Studio and Visual Studio Code. The moment I reboot in my OSX, then VS Code opens the project but raises the dreaded
System.Data.SqlClient.SqlException: A network-related or
instance-specific error occurred while establishing a connection
to SQL Server. The server was not found or was not accessible.
Verify that the instance name is correct and that SQL Server is
configured to allow remote connections. (provider: TCP Provider,
error: 40 - Could not open a connection to SQL Server)
exception. I have no idea what to do, as this code should work. What does the OSX implementation of the SQL Server connector do that is so different?
As Giuseppe said, you need to use IP,port. Named instances can run on various ports and Windows clients (i.e. SQL Management Studio) detects port by asking SQL Browser service.
In you case, you should open SQL Configuration Manager, Go to SQL Server Network Configution -> Protocols for SQLExpress (or whatever is name of the instance) -> TCP/IP (right click) -> Properties -> Ip Adresses tab, scroll to bottom and see (and/or) set the current port.
Apparently the *nix implementation of the UseSQLServer method does not support instance names. Therefore IP,port is the way to go.

Named pipes error when connecting to remote Express Edition server

I am trying to connect to MS SQL Server 2008 R2 Express Edition through a Remote computer.
I am getting this error :
A network-related or instance-specific error occurred while
establishing a connection to SQL Server. The server was not found or
was not accessible. Verify that the instance name is correct and that
SQL Server is configured to allow remote connections. (provider: Named
Pipes Provider, error: 40 - Could not open a connection to SQL Server)
On running SELECT CONVERT(char(20), SERVERPROPERTY('InstanceName')) instancenameting
I get NULL as the instance name. I have started SQL Browser service, checked TCP/IP are enabled.
What else can be done?
Use
Data Source=IP-0A6E3175;Network=DBMSSOCN;...
Or
Data Source=<<ip address>>;Network=DBMSSOCN;...
You'll also need to make sure that TCP/IP is enabled on the host using SQL Server Configuration Manager, that you aren't blocked by a firewall, etc.
And just for kicks, also please try:
Data Source=<<ip address>>\SQLEXPRESS;Network=DBMSSOCN;...
In addition to Aaron's suggestion to ensure your connection string uses tcp, run SQL Server Configuration manager and check the following:
do you have more than one instance?
tcp/ip enabled?
if the instance you are targeting is not the default instance, it will not be on port 1433 but rather some dynamic port. The Microsoft libraries figure out which port using SQL Server Browser on port 1434. Your firewall needs to allow that also (UDP).
if your Express instance is the only instance, you can change to use port 1433. Then you don't need SQL Server Browser.

Remote login to SQL Server Express 2008

I am remotely accessing SQL Server Express 2008.
I have turned on service "SQL Server Browser"
I have turned on service "SQL Server (SQLExpress)"
I have enabled TCP/IP and set dynamic ports to blank and tcp port to 1433 in properties
I can connect localy(using ip) so my credentials are correct.
I have a exceptions record in my windows firewall setting port 1433 as open.
I have performed a system reboot making all services are still turned on.
After i try and connect via a remote computer I get this error.
Cannot connect to XXX.XXX.XXX.XX
===================================
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (.Net SqlClient Data Provider)
------------------------------
Error Number: 3
Severity: 20
State: 0
your ideas and solutions will be greatly appreciated.
KJ
Edit
Hi and thanks for the quick responses. At present there is no connection string. I am trying to connect using: SQL Server Management Studio 2008
Edit 2
Hey Nick.
I am connecting using SERVERNAME\SQLEXPRESS I turned off windows firewall off and still there was no joy.
I tried adding the port like you suggested:
===================================
Cannot connect to XXX.XXX.XXX.XX, 1433.
===================================
A network-related or instance-specific error occurred while
establishing a connection to SQL Server.
The server was not found or was not accessible. Verify that the instance name is
correct and that SQL Server is configured to allow remote connections. (provider: TCP `Provider, error: 0 - No connection could be made because the target machine actively refused it.) (.Net SqlClient Data Provider)`
please show us the connection string in you are using to connect to the server with.
If your connecting using the instance name. eg. SERVERNAME\SQLEXPRESS then you will need to open up your firewall for the SQL Browser service i.e. UDP port 1434.
Alternatively, try using the port in your connection string and forget the instance name. Eg. in SSMS you can connect using SERVERNAME,1433 where 1433 is the port you've specified sql server listens to.
You say you have configured TCP/IP but your connection error message says this:
provider: Named Pipes Provider
Update
It appears you have one protocol enabled on Sql Express and are trying to connect with another via Sql management Studio. You need to connect with the TCP provider or enable Named Pipes on your Sql Server Express Configuration.
To connect with TCP, in Sql Management Studio click the Options button on the login page. This will take you to a Connection Properties page where you can select the provider. The Network protocol is probably set to default or Named Pipes at the moment and it needs to be changed to TCP.
Alternatively, in Sql Server Configuration Manager, enable Named Pipes in Protocols for Sql Express.

Resources