我们构建了一个 Web 工具 (C# WebAPI) 来管理使用 Entity Framework Code First Migrations 的 SQL Azure 数据库迁移。
默认情况下,当我们创建数据库时,我们还为每个数据库创建登录名和用户帐户。
这些帐户获得db_datareader和db_datawriter权限。
我们使用 Web 应用中的这些帐户连接到数据库以获取当前迁移,如果有任何挂起的迁移,请应用它们。
由于某种原因,此操作每次大约需要 10 秒(不应用任何更新)。
如果我们使用管理员帐户(在 Azure 中设置 SQL 服务器时关联),则时间会下降到不到一秒。
我得出的结论是,一定有某种许可的东西会让我们性能下降。
我添加了db_ddladmin此处解释的角色,但没有成功。
我们在实体框架迁移中使用 DbMigrator 类来获取挂起的迁移。
经过进一步的调查,我发现该问题的解决方案是在 master 数据库中创建 sql 用户。
之前我们只在数据库中创建了登录名和相应的用户。 根据这篇文章,SQL Azure不支持默认数据库,因此它默认为主数据库,因为我没有任何权利。
将用户添加到 master 数据库解决了"性能"问题。