SQLException when deploying ASP.NET Boilerplate application to Azure - mysql

I've been trying to deploy an ASP.NET Boilerplate application to Azure for the last couple of days and I haven't been able to do so. I keep stumbling upon this error:
First I make a Web App + SQL resource and then publish my project to it from inside Visual Studio using the right click -> deploy option, and then importing the publication profile I got from Azure. I make sure the database connection string in the appsettings.production.json are correct but I can't seem to connect to the database. If I try to connect to the database through the SQL Server Management Studio I get a similar error. This means something is wrong with the database itself.
Do I need to create a separate SQL database in Azure that makes use of the SQL database server that comes with the Web App + MySQL resource?
Any help would be greatly appreciated! I have been spending way too much time on this problem already.
This is a screenshot of all the resources in the Azure portal, these were created while creating the Web app + MySQL resource:
Edit: This is the error I am getting:
Win32Exception: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. 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: TCP Provider, error: 0 - A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.) Microsoft.Data.ProviderBase.DbConnectionPool.CheckPoolBlockingPeriod(Exception e) InvalidOperationException: An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseSqlServer' call. Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute<TState, TResult>(TState state, Func<DbContext, TState, TResult> operation, Func<DbContext, TState, ExecutionResult<TResult>> verifySucceeded) Win32Exception: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

Since you mentioned you can't access db in any other way, I provided step-by-step instruction
You can get your connection string from Azure resource panel
Navigate to Connection security tab and enable access from other Azure resources. This way WebApp will be able access database server inside Azure network. I also added my client IP to test db connection from my PC later. Click Save at the top when you are done
On the same page there is setting called configure SSL connection. Certificate can be downloaded from https://learn.microsoft.com/uk-ua/azure/mysql/howto-configure-ssl. I used this file https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem . Optionally, you could disable this feature for now.
Now we have everything to test db connection. I will show it with the use of HeidiSQL client.
Click open and see your databases
According to this you need to have CACertificateFile parameter appended to connection string to use SSL, so you need to put file into repository and provide its relative path in connection string

This was all caused by a stupid mistake, in the Azure portal I selected the Web App + MySQL resource instead of the Web App + SQL resource. For the ASP.NET Boilerplate project I am using you need a Web App + SQL resource.

Related

I am unable to connect with my online phpmyadmin mysql database which i created for testing my windows forms application

error message from microsoft sql server management studioI set up a free phpmyadmin mysql database (online) and would like to use it for testing purposes on my windows forms application. I've been trying to connect to it from Microsoft server management studio and from visual studio but it always gives me the following error:
title: Connect to Server
Cannot connect to xxx.xx.xxx.xx(purposely ex'd out)
ADDITIONAL INFORMATION:
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) (Microsoft SQL Server, Error: 53)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=53&LinkId=20476
The network path was not found
BUTTONS:
OK
------------------------------[connection error message][1]
If anyone can give me detailed steps on how to resolve this, I'll really appreciate.
welcome to Stack Overflow.
phpMyAdmin is a graphical interface for administrators to manage a MySQL or MariaDB installation. It's not an API that your Windows Forms application can access. You'll have to connect directly to the database (over the standard port 3306) or use some sort of API that's hosted alongside the database.
Most hosting providers block incoming connections on 3306, certainly I would expect a free MySQL hosting provider to do that as well. You'll have to ask the hosting provider if you're able to connect from your local machine to the database machine; you may need to add your IP address to a list of allowed hosts, for instance. Often, it's a bad idea to expose your MySQL installation directly to the internet (for security and performance reasons).
Your error message mentions named pipes. Named pipes are a Windows method for inter-process communication that is usually meant to be accessed from the same local machine (I believe Windows technically allows using a named pipe through a local network connection, but you're certainly not on the same local network segment and your chances of the free hosting provider allowing you a way to access a named pipe from across the network are less than them opening up MySQL's port 3306). Somehow you'll have to adjust your connection string to connect via IP address or host name instead of named pipe.
And finally, your error message refers to SQL Server. Microsoft SQL Server is a very different database product from MySQL/MariaDB. If your code is expecting to connect to SQL Server, you won't be able to use a MySQL or MariaDB backend instead. The two products are different enough and even use different ports, so the code won't be able to connect.

PHP MyAdmin Azure App Services - (HY000/2002): An attempt was made to access a socket in a way forbidden by its access permissions

When attempting to connect to the Azure App Services (ASP.NET) MySQL database (Navigating to the Manage link) the Page info returned from PHPMyAdmin prevents me from moving forward. I cannot seem to find the location of the log for the app within Kudu and navigating to the MYSQLCONNSTR_*.ini file did not provide me with the information that I needed.
I've attempted to use the connection strings for the database for both the scm and the web app but neither work. I have also attempted to use the public-facing IP within the Kudu environment variable without any luck.
I cannot seem to find the information I need to connect to my instance of PHPMyAdmin, and am now quite lost.
The solution to my problem was here: https://stackoverflow.com/a/57545678/4212591
The free tier of the Azure Web Service does not allow for the always-on feature. Thus my inability to connect to the service.
I’m unsure on the exact location/path you are looking for that file, the connection string is stored at D:\home\data\mysql\MYSQLCONNSTR_localdb.txt.
If you wish to customize the database, username and password, after you have created a new database, add new username or update password, simply modify:
D:\home\data\mysql\MYSQLCONNSTR_localdb.ini , remove D:\home\data\mysql\MYSQLCONNSTR_localdb.txt and restart the WebApps.
Furthermore, the connection string flows to your application as an env variable MYSQLCONNSTR_localdb. The env is added to the main site process. For Kudu site, one may read the same info from D:\home\data\mysql\MYSQLCONNSTR_localdb.txt file. Beware that we are not using the default MySql port (3306). In fact, the port number may vary for each application life cycle depending on its availability at startup time. The port info is also available as an env variable WEBSITE_MYSQL_PORT to your site.
Ensure that MySQL process is running. Check in your web app application settings if there is a connection string. PHPmyadmin uses MYSQLCONNSTR_ to connect to the MySQL server. If you have a connection string in application setting change the connection string type to Custom , so you can still have the information if needed or delete it. This will force PHPmyadmin to access MYSQLCONNSTR_localdb and connect to the MySQL in-app server.
As a side note, on Azure WebApps Sandbox - Connection attempts to local addresses (e.g. localhost, 127.0.0.1) and the machine's own IP will fail, except if another process in the same sandbox has created a listening socket on the destination port.
To rule out, application code or the client library leaking TCP socket handles or burst load of requests opening too many TCP socket connections at once, scale-up Azure App Service Plan and see if that makes any difference.

SSRS express 2017, Configuration manager does not connect to service; RPC issue

I just upgraded SSRS Express 2016 to SSRS Express 2017.
When configuring the service I can set the web service url and the Web Portal url.
When creating a new database I can use the wizard without any issue. Database credentials are ok, connection test are successful and so on.
However, when it is time to make the creation effective, the last step of the wizard, there is an error when "Generating database script".
Here are the details:
Microsoft.ReportingServices.WmiProvider.WMIProviderException: An error occurred when attempting to connect to the report server remote procedure call (RPC) end point. Verify that the Report Server Windows service is running, and then retry the operation.
---> System.Runtime.InteropServices.COMException: The RPC server is not listening. (Exception from HRESULT: 0x800706B3)
--- End of inner exception stack trace ---
at Microsoft.ReportingServices.WmiProvider.RSWmiAdmin.ThrowOnError(ManagementBaseObject mo)
at Microsoft.ReportingServices.WmiProvider.RSWmiAdmin.GenerateDatabaseScript(String databaseName, Int32 lcid, Boolean isSharePointIntegrated, String& script)
at ReportServicesConfigUI.WMIProvider.RSReportServerAdmin.GenerateDatabaseScript(String databaseName, Int32 lcid, Boolean isSharePointIntegrated, String& script)
The only clue it gives it to make sure the service is running. I confirm the service is really running. What do I don't understand?
Thanks in advance for your help
I just had the same issue a few days ago. I solved it by adding local admin rights to the service account that I have, that runs the SSRS instance. I guess it needs more than normal user rights to start the WMIProvider.

Connecting to a local SQL server from a website

We have a small network behind a firewall (WatchGuard XTM 2 series) and network switch. On our network we have multiple instances of SQL server, but 1 in specific that I would like to be able to access remotely from our website. We have a static IP address from our ISP and then all the machines on the network have a locally assigned dynamic IP address. When trying to connect to the database from outside our network how do I get the request to be directed to the proper machine / SQL instance? Is it a parameter in my connection string or something in my firewall?
A few things to rule out:
1) The firewall is allowing access from the website to our network. I added the site's IP and opened up port 1433. Also, when trying to connect and monitoring the firewall no exceptions come up as they did before I added the proper IP address.
2) Remote connections on the SQL server has been setup and enabled. I've done a lot of reading up on remote connections and I am sure it has been setup properly.
I am currently getting this error message on my site:
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 - A connection attempt failed
because the connected party did not
properly respond after a period of
time, or established connection failed
because connected host has failed to
respond.)
The Server parameter of the ConnectionString indicates what server to connect to. Assign an ip address or URL to the server that you want to access and put that in your connection string.

Access denied error when trying to load a package on Intergration Services

I am getting an error when I try and upload a import an ssis project onto our server. The server only has integration and reporting services installed as the live sql server is on another server. I log onto the integration service fine but as soon as I try to right click the MSDB folder to import a package I get the error listed at the end of this question. I have added my local user account as an administrator on the server where the Integration Service is installed and I have added the administrators group to the security permissions for MsDtsServer in component services. Any help with this would be appreciated.
TITLE: Microsoft SQL Server Management Studio
Failed to retrieve data for this request. (Microsoft.SqlServer.SmoEnum)
ADDITIONAL INFORMATION:
Login timeout expired
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.
Named Pipes Provider: Could not open a connection to SQL Server [2]. (Microsoft SQL Native Client)
BUTTONS:
OK
I had this problem recently. It was a little tricky to figure out.
Here is a nice link from MSDN on how to hack, err, I mean fix it.
Configuring the Integration Services Service
"To manage packages that are stored in a named instance or a remote instance of the Database Engine, or in multiple instances of the Database Engine, you have to modify the configuration file." - MSDN
Thanks Microsoft??
To be more specific, you need to edit this file on your server:
C:\Program Files\Microsoft SQL Server\90\DTS\Binn\ MsDtsSrvr.ini.xml
Change:
<ServerName>.</ServerName>
to
<ServerName>ServerName\InstanceName</ServerName>
Save. and reboot.
Is your server set up to accept remote sql connections? Maybe check your firewall on the server to check that all the SSIS ports are allowed through, and also check in the SQL Surface Area Configuration tool to make sure all the services are set up to allow remote connections.