2019
2017
2016
2014
Flyway Teams 2012
Flyway Teams 2008 R2
Flyway Teams 2008
Flyway Teams URL format | jdbc:sqlserver://host:port;databaseName=database |
---|---|
SSL support | Yes - add ;encrypt=true |
Ships with Flyway Command-line | Yes |
Maven Central coordinates | com.microsoft.sqlserver:mssql-jdbc:7.2.0.jre8 |
Supported versions | 4.0 and later |
Default Java class | com.microsoft.sqlserver.jdbc.SQLServerDriver |
/* Single line comment */
CREATE TABLE Customers (
CustomerId smallint identity(1,1),
Name nvarchar(255),
Priority tinyint
)
CREATE TABLE Sales (
TransactionId smallint identity(1,1),
CustomerId smallint,
[Net Amount] int,
Completed bit
)
GO
/*
Multi-line
comment
*/
-- TSQL
CREATE TRIGGER dbo.Update_Customer_Priority
ON dbo.Sales
AFTER INSERT, UPDATE, DELETE
AS
WITH CTE AS (
select CustomerId from inserted
union
select CustomerId from deleted
)
UPDATE Customers
SET
Priority =
case
when t.Total < 10000 then 3
when t.Total between 10000 and 50000 then 2
when t.Total > 50000 then 1
when t.Total IS NULL then NULL
end
FROM Customers c
INNER JOIN CTE ON CTE.CustomerId = c.CustomerId
LEFT JOIN (
select
Sales.CustomerId,
SUM([Net Amount]) Total
from Sales
inner join CTE on CTE.CustomerId = Sales.CustomerId
where
Completed = 1
group by Sales.CustomerId
) t ON t.CustomerId = c.CustomerId
GO
-- Placeholder
INSERT INTO ${tableName} (name) VALUES ('Mr. T');
SQL Server supports several methods of authentication. These include:
SQL Server Authentication works ‘out-of-the-box’ with Flyway, whereas Windows Authentication and Azure Active Directory require extra manual setup.
The instructions provided here are adapted from the Microsoft JDBC Driver for SQL Server documentation. Refer to this when troubleshooting authentication problems.
Note These instructions may be incomplete. Flyway depends on Microsoft’s JDBC drivers, which in turn have many environmental dependencies to enable different authentication types. You may have to perform your own research to get the JDBC driver working for the different authentication types.
This uses a straightforward username and password to authenticate. Provide these with the user
and password
configuration options.
Windows Authentication and Azure Active Directory require an extra driver to be installed:
.tar.gz
file for the JDBC version used by Flyway
sqljdbc_auth.dll
, under sqljdbc_{version}\enu\auth\x64
sqljdbc_auth.dll
to an accessible location in your environment (e.g. C:\jdbc-drivers\
)sqljdbc_auth.dll
to your PATH
environment variableWindows Authentication, also known as Integrated Security, is enabled by amending your JDBC connection string to set integratedSecurity=true
.
Example: jdbc:sqlserver://host:port;databaseName=database;integratedSecurity=true
.
There are several types of Azure Active Directory authentication:
For MSI and Integrated, amend your JDBC URL to set the authentication
parameter:
authentication=ActiveDirectoryIntegrated
jdbc:sqlserver://host:port;databaseName=database;authentication=ActiveDirectoryIntegrated
authentication=ActiveDirectoryMSI
jdbc:sqlserver://host:port;databaseName=database;authentication=ActiveDirectoryMSI
authentication=ActiveDirectoryPassword
jdbc:sqlserver://host:port;databaseName=database;authentication=ActiveDirectoryPassword
user
and password
configuration optionsNote: You may also need to add ADAL4J and its dependencies to your classpath. See the ADAL4J GitHub page.
The Microsoft documentation has more details about how these work with JDBC URLs.
*Flyway doesn’t support Azure Active Directory with MFA, as it is not supported by the Microsoft JDBC drivers.
CREATE/ALTER/DROP
statements acting on memory-optimised tables (that is, those created with
WITH (MEMORY_OPTIMIZED = ON)
). You will need to override the executeInTransaction
setting to be false,
either on a per-script basis or globally.flyway.defaultSchema
property
has no value, unless used for a Placeholder in
your sql scripts. If you decide to use flyway.defaultSchema
, it also must exist in flyway.schemas
.flyway.schemas=custom_schema
, as the first entry will become the
default schema if flyway.defaultSchema
itself is not set.ANSI_NULLS
or QUOTED_IDENTIFIER
in a script will cause an error. This is
a driver limitation, and can be solved by using the Microsoft driver instead.