Running SQL Server 2012 Express on a remote machine, trying to get Flyway up and running. I have a database on pcesqldev.pce.local
called Hawk
(dbo.Hawk
, if that matters) that I want to connect to, and the template from the config file looks like this:
SQL Server : jdbc:jtds:sqlserver://<host>:<port>/<database>
Note, this is different from other jdbc connection strings I have used with other products - most of them do not include the jtds portion and do include the instance name.
Here's a few connection strings that I have tried, all of which failed:
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local:1433/Hawk
Network error IOException: Connection refused: connect
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local\SQLEXPRESS:1433/Hawk
Unknown server host name 'pcesqldev.pce.local\SQLEXPRESS'
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local/SQLEXPRESS:1433/Hawk
Network error IOException: Connection refused: connect
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local:1433/SQLEXPRESS\Hawk
Network error IOException: Connection refused: connect
What am I missing? There must be something obvious, but I can't see it.
Before anybody asks, yes we do have TCP access to the database enabled and it is using port 1433.
Database connections in SQL Server projects in Flyway Desktop can be configured to use: Azure Active Directory Universal with MFA (Multi-Factor Authentication) - learn more about configuring MFA Flyway Desktop uses our SQL Compare technology behind the scenes to understand the differences.
What are SQL connection strings? The connection string is an expression that contains the parameters required for the applications to connect a database server. In terms of SQL Server, connection strings include the server instance, database name, authentication details, and some other settings to communicate with the database server.
Learn about syntax of connection strings in ADO.NET. The syntax for each provider is documented in its ConnectionString property. Gets or sets the string used to open a SQL Server database. This article describes how to programmatically specify the client network library in the connection string when you connect to a SQL Server database.
The specific connection string syntax for the SqlClient provider is documented in its ConnectionString property. For more information on connection string syntax, see ConnectionString. Microsoft SqlClient Data Provider for SQL Server introduced the following connection string builder.
This one got me, and there was not many answers out there on how to format a connection string with an instance name.
Here's what worked for me:
flyway.url=jdbc:jtds:sqlserver://<host>:<port>/<database>;instance=<instance_name>
This did my head in for a bit.
The connection string which I used was this (passed as parameters to flyway on the commandline).
Note also that the mydatabasename needed to already exist.
./flyway migrate -url=jdbc:jtds:sqlserver://localhost:1433/mydatabasename -user=myuser -password=mypassword -baselineVersion=269 -baselineDescription="Base version" -outOfOrder=true -baselineOnMigrate=
A piece that was missing though was that I wasn't running SQL Server Browser and possibly didn't have TCP set up correctly:
From the SQL Server section here. After the installation is complete, enable TCP/IP:
Launch the Sql Server Configuration Manager Go to SQL Server Network Configuration -> Protocols for SQLEXPRESS Enable TCP/IP TCP/IP Properties -> IP Addresses -> IPAll TCP Dynamic Ports: blank TCP Port: 1433 Then enable remote access:
Launch the Sql Server Configuration Manager SQL Server Services -> SQL Server Browser -> Properties -> Service Tab Start Mode: Automatic OK SQL Server Browser -> Start SQL Server -> Restart
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With