【问题标题】:Can I use Flyway with the SQL Server encryption?我可以将 Flyway 与 SQL Server 加密一起使用吗?
【发布时间】:2020-07-30 18:38:44
【问题描述】:
在我们的测试环境中,我们使用 flyway。现在我们也想在我们的生产系统上使用它。
在此系统上,我们强制 SQL Server 加密,因此 flyway 无法与我们的数据库通信。
我收到以下错误:
D:\flyway-6.2.0>飞路信息
数据库密码:
Redgate 的 Flyway 社区版 6.2.0
错误:
无法从数据库获取连接 (jdbc:jtds:sqlserver://localhost:Port;
databaseName=myDatabase;integratedSecurity=true;) 用于用户 '********':
I/O 错误:数据库服务器已关闭连接。
SQL 状态:08S01
错误代码:0
消息:I/O 错误:数据库服务器关闭连接。
有人知道这个问题并可以帮助我吗?
【问题讨论】:
标签:
sql-server
flyway
windows-server-2012-r2
sql-server-2017
【解决方案1】:
Flyway 在 Flyway 6.2.4 (release notes) 中开始支持“integratedSecurity=true”jdbc 参数,因此如果您升级到该版本或更高版本,它应该可以工作。它还要求 sqljdbc_auth.dll 在类路径中可用。
从https://flywaydb.org/documentation/database/sqlserver#authentication 采取的必要步骤。
Windows 身份验证和 Azure Active Directory 需要安装额外的驱动程序:
转到“下载 Microsoft JDBC Driver for SQL Server”页面
下载 Flyway 使用的 JDBC 版本的 .tar.gz 文件
版本可以在本页顶部驱动部分下的“Maven 中心坐标”url 中查看
提取文件内容
在 sqljdbc_{version}\enu\auth\x64 下查找 sqljdbc_auth.dll
将 sqljdbc_auth.dll 复制到环境中可访问的位置(例如 C:\jdbc-drivers)
将 sqljdbc_auth.dll 的位置添加到您的 PATH 环境变量中