How to connect Visual Studio to Aurora MySQL DB? - mysql

In Visual Studio 2019 menu: Tools -> Connect To Database I see "MySQL Database" data provider, but an attempt to connect to my aurora database finishes with weird error:
"Microsoft Visual Studio / Unable to connect to any of the specified MySQL hosts. Sequence contains more than one matching element"
I have Aurora DB based on MySQL 5.6.10. I can connect to it using the latest MySQL Workbench 8.0.18. I have the latest "MySQL for Visual Studio 1.2.9" and Connector/NET 8.0.18. I work with .NET Framework 4.7.2. I can also connect to other (normal) MySQL instances from the Visual Studio, but not to Aurora DB.
My final target is to create ADO.NET Entity Data Model from the amazon db, but this fails on the same error message.
Is there any guide how to connect MySQL Aurora DB with .NET Framework (not .NET Core)? A guide to extremely simple application which can download single value from any table would mean a significant step forward for me.

OK. I found it's a Bug #97448 introduced in MySql.Data 8.0.18. Workaround is to define server name by IP address instead of xxx.rds.amazonaws.com address.

It's a know bug.
FYI the previous version of mysql.data (v6.10.9) is also affected.
As a workaround you could resolve the DNS value to an IP address manually.
In the code example below I check if the server value is an IP then I resolve the DNS name when the value is not an IP address.
if (IPAddress.TryParse(server, out var ipAddress))
{
// The server value is an IP address, it can be used directly
}
else
{
server = Dns.GetHostEntry(server).AddressList.FirstOrDefault()?.MapToIPv4().ToString();
}
return new MySqlConnectionStringBuilder
{
Server = server
// ...
};

Related

Visual Studio Code mssql extention: SQL Server (mssql) - Unable to connect to server

I'm trying for the first time to get my project to run in Visual Studio Code. This includes a MySQL database. So I've installed the SQL Server (mssql) extension version 1.7.1. I follow the instructions here: https://learn.microsoft.com/en-us/sql/visual-studio-code/sql-server-develop-use-vscode?view=sql-server-ver15
I get to the section "Connect to SQL Server" and enter:
servername: localhost
db name: c3
Authentication type: Integrated
At the end of the section it should connect with the server but instead I get two errors:
mssql: Error "Unable to connect using the connection information
provided. Retry profile creation?"
mssql: Error 2: 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)
Does anyone see what is going wrong here?
I've re-installed the extension but with the same result.
A MySQL db and Microsoft SQL Server db are two different things.
It seems that there's no SQL Server installed? You might install the free SQL Server Express Version, create the database in there and then connect from Visual Studio Code.
You have to install the database server yourself as VS Code is just a client. You might also use somekind of hosted offers (many webhosters offer a mysql server with self service installation, or use a cloud based database server). Yout can also use a local database (e.g. SqlLite) which is file based and doesn't need a special installation.
You should do the following
install SQL server in your machine and create Database here
Create a login and a database user here
If you are Using VS code install SQL Server (mssql) open new
connection, follow the prompts to specify the properties for the new
connection profile
If you want to login to your server to make sure of your data
sqlcmd -S localhost -U SA -P '<YourPassword>'

Create a Linked Server for a MySQL Database in SQL Server 2005

I'm currently trying something I've never done before - I'm trying to access MySQL data in an SQL Server environment. Where I am, we have two servers (the MySQL and MSSQL servers), and each stores different types of data. Recently I've found a need to write queries that include data for both servers. One of the ways I read to do this is adding a "Linked Server" in SQL Server. But try as I might I cannot seem to get a Linked Server added.
I am working on a Windows 7 system, our SQL Server instance is 2005, and the MySQL version is 5.5.31.
What I've done so far is this:
Downloaded and installed the MySQL ODBC drivers
Created a System DSN using that driver for the MySQL database, called "Production". (I also tested the connection from the Data Sources application and it connects just fine).
Checked for the Provider in SQL Server (MSDASQL) to configure options such as "allow nested queries" and "allow 'LIKE' operator"
right click on Linked Servers in Server Objects in SQL Server > "New Linked Server"
From here, I fill out the linked server info like this:
Checked "Other data source" (not SQL Server)
Chose Provider "Microsoft OLE DB Provider for ODBC Drivers"
Product Name: "Production"
Data Source: (the name of the System DSN) Production
Then in the security tab, I chose the "Connections will be made using this security context" and provided my username and login for the MySQL server.
Then this is where I run into an error every time. I always get the following error message:
The linked server has been created but failed a connection test. Do you want to keep the linked server?
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.Express.ConnectionInfo)
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "FLUX".
OLE DB provider "MSDASQL" for linked server "FLUX" returned message "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified". (Microsoft SQL Server, Error: 7303)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.5000&EvtSrc=MSSQLServer&EvtID=7303&LinkId=20476
If you click that link for help, by the way, nothing shows up.
I saw other people suggested trying an older MySQL ODBC driver, adding a System Data Source for the 32bit driver as well as the 64bit driver, and restarting my machine (not the DB server) -- none of these fixed my error.
What I do not understand is why my System DSN seems to work and connect fine, but SQL Server cannot see the Data Source. Does anyone see what I'm missing, or what I might be configuring incorrectly?
EDIT
Clarified that I restarted my local machine, but not the DB server since trying to add the Linked Server.
From everything you've said, you probably have a mismatch between bitnesses of SQL Server 2005 components and the installed ODBC Driver for MySQL.
System DSNs are definitely the way to go.
You probably will need to install both the 32-bit and 64-bit ODBC driver, and configure an identical (same name and everything!) System DSN with each.
I would say you may also want/need to install this patch it was useful for getting XP and 2003 to work properly for ODBC type connections for me.
http://www.microsoft.com/downloads/details.aspx?FamilyID=000364db-5e8b-44a8-b9be-ca44d18b059b&displaylang=en
Is your Database server on the same machine on which you have Sql Server Management Studio Installed? If the SQL Server is on a remote machine then you need to install the ODBC driver on remote Machine and create the DSN there as per link
I was having the same issue but the above link solved my problem.

Importing Entity Database Model from MySQL to Visual Studio 2010

Im trying to get Entity Data Model with wizard from remote MySQL server. I'm typing proper connection string, then choose next. I see all tables, i can check them. When wizard finished im getting no entity models and this errors:
Unable to generate the model because of the following exception: 'The provider did not return a ProviderManifestToken string.
Access denied for user 'myserver'#'myIP' (using password: NO)
P.S. Server Explorer and database sets working fine, I can write/read table data.
Environment:
Database:
Windows 2008 Server R2 (Enterprise)
MySQL Workbench 5.2
MySQL Connector Net 6.4.4
Client:
Windows 7 64bit Professional
Visual Studio 2010
MySQL Connector 6.4.4
.NET Framework 4
My Connection String:
metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=MySql.Data.MySqlClient;provider connection string="server=myserver;User Id=myID;database=myDatabase;password=myPassword"
I ran into similar issues. The connection string was good, and I could grab data from my application, server browser, etc. But whenever I tried to update the schema, the Entity framework would ignore the password in the config.
Workaround - Temporarily give the anonymous user all the necessary permissions on your mysql instance (in my case, local to my machine, so no security threats) and run the model update from Visual Studio. This way, a password won't be necessary.
Once all the entities are updated, go back and revert the permissions to the way they were.
It's not ideal, and I still don't know what the issue is, but it got me past the problem.

Toad for MySQL connection problems (Win 7 to Linux)

I have a MySQL instance running on a Linux box, and a Mac which also has Win7 (Bootcamp/VMWare). I can connect to the MySQL db from Navcat Lite for Mac with no problems, however, I prefer Toad. I installed Toad for MySQL for Win7 but it just CANNOT connect to the db. I installed ODBC for MySQL and it CAN successfully connect to the db, so it's not a firewall issue (I also tried disabling the firewall)
Here is a quick summary of what I see:
MySQL db running on Linux box, within my network, port 3306
Mac can successfully connect to the db through Navcat Lite
Toad for MySQL (Win 7) CANNOT connect to the db using a TCP connection (tried increasing connection timeout to 30 sec)
ODBC Driver for MySQL (Win 7) CAN connect to the db using the same credentials
Any help would be much appreciated!
Here is the error that Toad throws:
System.TimeoutException
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
Check this bug report. Might be what you are facing.
link:
http://toadformysql.com/thread.jspa?threadID=32380
Taking in account your recent outcome from the packet sniffing, i do believe it is related to this bug report.
Toad seems to use the .net framework, according to the release notes it requires version 3.5 to be installed and the security policy set to unrestricted.
So, do you have .net 3.5 installed? if so, can you try to run toad as administrator?
PS: to set the security policy and i'm quoting from the link above:
To run Toad, the .NET security policy must be set to Unrestricted. To modify the security policy:
Select Control Panel from the Windows Start menu.
Double-click Administrative Tools.
Double-click Microsoft .NET Framework version Configuration.
Select My Computer, and then select the Runtime Security Policy
node.
Select Evaluate Assembly from the list of tasks in the right panel,
and locate and select Toad.exe in the File field.
Click Next and set the permission to Unrestricted.
Hope it helps, keep providing information.
I have the same issue with one my MySQL installations. I am able to connect using MySQL Workbench, but Toad for MySQL does not connect. Also, every application I created using MySQL .NET Connector also times out.
The solution I found was to connect the machines to the Internet and they connect instantly. I believe it has to do with the Connector and not Toad. Updating to a version beyond 5 should help.
Using freeware Toad for MySQL 8.0.0.296 (64 bit), instead using connection type TCP, use connection type SSH, insert database data like Host IP, user, password, default database and port. Also add SSH port, SSH Host IP, SSH user and password. Toad will emulate onnection directly to SSH console, the interface is the same, it works very fine, the error "Character set 'utf8mb3' is not supported by .Net Framework" is gone.

Migrate Data and Schema from MySQL to SQL Server

Are there any free solutions for automatically migrating a database from MySQL to SQL Server Server that "just works"?
I've been attempting this simple (at least I thought so) task all day now. I've tried:
SQL Server Management Studio's Import Data feature
Create an empty database
Tasks -> Import Data...
.NET Framework Data Provider for Odbc
Valid DSN (verified it connects)
Copy data from one or more tables or views
Check 1 VERY simple table
Click Preview
Get Error:
The preview data could not be
retrieved. ADDITIONAL INFORMATION:
ERROR [42000] [MySQL][ODBC 5.1
Driver][mysqld-5.1.45-community]You
have an error in your SQL syntax;
check the manual that corresponds to
your MySQL server version for the
right syntax to use near
'"table_name"' at line 1 (myodbc5.dll)
A similar error occurs if I go through the rest of the wizard and perform the operation. The failed step is "Setting Source Connection" the error refers to retrieving column information and then lists the above error. It can retrieve column information just fine when I modify column mappings so I really don't know what the issue is.
I've also tried getting various MySql tools to output ddl statements that SQL Server understand but haven't succeeded.
I've tried with MySQL v5.1.11 to SQL Server 2005 and with MySQL v5.1.45 to SQL Server 2008 (with ODBC drivers 3.51.27.00 and 5.01.06.00 respectively)
There are two free toolkits provided by Microsoft.
Microsoft SQL Server Migration Assistant for MySQL v1.0
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=14280
Microsoft SQL Server Migration Assistant for MySQL v5.1
http://www.microsoft.com/download/en/details.aspx?id=26712
I have used only the second one and it worked for me without any glitch.
It required registration with Microsoft for downloading a license file.
But it is free to use for everyone.
This is really old now, but if you use MySQL Connector NET and set SQL Server Mode = true in the connection string, this will resolve your error.
Recently, I have successfully migrated the MySQL database to MSSQL database. Below are detailed steps:
Operating System: AWS Microsoft Windows Server 2012 R2 with SQL Server Standard
Tools Used:
SQL Server 2014 Management Studio SQL Developer,
Microsoft SQL Server Migration Assistant v6.0.1 for MySQL,
Remote Desktop Client, and
Third Party MySql ODBC Driver 5.1.13
1. Setup AWS Windows Server
2. From the AWS console ec2 instance list, right click on the windows server and select connect. You would see the similar screen below.
3. Click on the Get Password button which will be required for Remote Desktop connection[#4] and follow the instructions.
4. Connect to that EC2[#1] instance with the Remote Desktop Client by default available in your Ubuntu local machine. Use the credentials from #2.
5. Once you get connected using the remote client, you should be able to access the remote MSSQL server. Install the following tools.
Install Chrome : Since internet explorer has some security, install chrome.
Install Microsoft SQL Server Migration Assistant v6.0.1 for MySQL
https://www.microsoft.com/en-us/download/details.aspx?id=51218
Install Third Party MySql ODBC Driver 5.1.13
https://dev.mysql.com/downloads/connector/odbc/5.1.html
6. Configure ODBC Data Sources(64-bit) :
Open Administrative tools → click on ODBC Data Sources(64-bit) and
follow the steps to connect to MySQL database.
7. Open SQL Server 2014 Management Studio SQL Developer and connect using windows authentication.
Create destination MSSql database for MySql migration.
8. Open Microsoft SQL Server Migration Assistant : For detail visit this link: https://blogs.msdn.microsoft.com/ssma/2011/02/07/mysql-to-sql-server-migration-how-to-use-ssma/
Create new project
Connect to MySql
Connect to MSSql
Convert Schema
Migrate Data
8. You might have some problem listed here. Please read in detail where I have written the detail resolution.
MySql 5.6 to MSSql server 2014 migration : ExecuteReader requires an open and available Connection
I am afraid there is no simple solution. SQL used in MySQL and T-SQL used in SQL Server 200X are different dialects of SQL. It is not only simple changing say "auto_increment" to "identity", but reserved words that creates a problem.
For example
CREATE TABLE test (
user varchar(50)
)
will work in MySQL and fail in SQL Server 2008.
To cut long story short - unfortunately, you will need to do it by hand.
Export the file from MySQL to a CSV file.
Export the create statements for the tables from MySQL
Cry.
3a. Disable foreign key checks in SQL server
Tune the create statements in SQLserver until they work.
Import the CSV files in to MySQL.
5a. Enable foreign key checks in SQL server.
Also see these answers:
migrate-from-mysql-to-sql-server-2008
Had similiar issue about this error 42000, and for me I figured out that setting the MySQL global mode to ansi_quotes would solve it:
set global sql_mode=ansi_quotes;
There are commercial solutions, but not free solutions. Depending on complexity of your database, rewriting SQL for target dialect can be trivial task - or a very hard one.
Rewriting CREATE TABLE statements is never hard, it can be done by hand with no surprises. Procedures, functions and triggers are problematic.