【发布时间】:2018-04-12 10:03:29
【问题描述】:
我们使用 FlyWay 作为迁移工具来管理我们的数据库版本。
最近我们在可重复的脚本中添加了两个存储过程,其中一个使用用户定义的类型 (CREATE TYPE)。另一个叫前者。
我在部署脚本中使用的帐户不是 master 上的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 帐户运行相同的迁移时,它也在 master 上。
为什么 Azure 会在第二个过程中关闭连接,而不是第一个?
【问题讨论】:
-
所以不是 EXEC proc 失败了,而是 CREATE proc 失败了?
-
正确。我们在脚本顶部有一个 IF EXISTS ,它首先删除 proc。这样可行。这就是第 5 行报错的原因。
标签: sql-server azure stored-procedures flyway