flyway对天蓝色:用户权限创建存储过程

时间:2017-10-31 09:29:36

标签: sql-server azure stored-procedures flyway

我们使用FlyWay作为迁移工具来管理我们的数据库版本。 最近,我们在可重复脚本中添加了两个存储过程,其中一个使用用户定义的类型(CREATE TYPE)。另一个叫前者。

我在部署脚本中使用的帐户是主服务器上的db_owner(您从Azure门户获得的帐户)。相反,我在相关数据库上创建了一个单独的部署帐户,最初仅作为db_ddladmin,现在升级到db_owner,以便它可以GRANT EXEC用户定义的类型。

但是,当我尝试使用此帐户运行迁移时,第二个过程始终失败:

Migration R__21Proc_ConflictsForUI.sql failed
---------------------------------------------
SQL State  : 08S01
Error Code : 0
Message    : I/O Error: Connection reset
Location   : ./db/Stored Procedures/R__21Proc_ConflictsForUI.sql
Line       : 5
Statement  : CREATE PROC Conflicts_For_UI @CustomerId INT, @TotalRows  INT = 20

当我尝试使用我的门户db_owner帐户运行相同的迁移时,该帐户也在主帐户上运行。

为什么Azure会在第二个过程中关闭连接,而不是第一个过程?

1 个答案:

答案 0 :(得分:0)

只需执行GRANT EXEC即可获得执行权限,但是为了能够CREATE PROC引用UDT,用户应该拥有UDT的REFERENCES权限。

或者,您可以在UDT上授予CONTROL,该ID将带给用户

  • REFERENCES

  • EXECUTE

  • VIEW DEFINITION
  • TAKE OWNERSHIP

在UDT上