如何在SQL Server的Flyway中为单个迁移禁用事务

问题描述 投票:0回答:1

我有一个Flyway迁移,在Flyway Community Edition 6.0.8中失败,出现以下错误:

The procedure 'sys.sp_grantdbaccess' cannot be executed within a transaction.

我的原始迁移脚本是:

EXEC sp_grantdbaccess 'foo', 'bar'

我尝试将其作为动态SQL运行,但遇到了相同的问题:

exec('EXEC sp_grantdbaccess N''foo'', N''bar''')

我还尝试了flyway migration命令行上的-mixed = true选项,以允许运行事务性和非事务性迁移,但我收到相同的错误。

可以基于每个迁移禁用交易吗?甚至是整个“迁移”操作?如果这些都不是选项,那么迁移脚本本身是否可以在不遇到事务限制的情况下实现所涉及的更改?

由于某些原因,这不是Is there any way to disable flyway SQL migration from the transaction的副本:

  1. 错误因其他SQL操作而发生。
  2. 该行为在Flyway的早期版本中似乎已得到解决,但此操作仍在发生。
sql-server flyway
1个回答
1
投票

本周发布的Flyway 6.1中已添加了配置单个脚本以使其(不能)在事务中运行的功能:https://flywaydb.org/documentation/migrations#manual-override

© www.soinside.com 2019 - 2024. All rights reserved.