问题: 在代码中更改模型第一个Mobile Services项目,然后发布到Azure会导致以下错误:
System.Data.SqlClient.SqlException(0x80131904):无法打开数据库" master"登录请求。登录失败。 用户登录失败' xxxxxxxxxxxxxxxxxx'。
重现的步骤:
我已经检查过,数据库仍然存在但没有更改模型,因此我认为Azure由于某种原因无法删除它。
在默认的Mobile Service项目中,在WebApiConfig类中,数据库初始值设定项设置为继承DropCreateDatabaseIfModelChanges的类型。那么Azure不应该删除数据库并重新创建它吗?我在我的一个自定义项目中遇到了这个问题,所以尝试使用默认的移动服务进行此测试,并且能够重现它,至少这个默认站点不能在盒子外工作吗?
我是否需要做些什么才能让Azure删除数据库?错误消息表明它无法登录,但我们已经证明,当服务首次发布时,MobileServiceInitializer类中的Seed方法肯定会被调用(因为我们能够返回) 2来自fiddler发送的第一个GET请求的ToDoItems。
有什么想法吗?非常感谢任何帮助,谢谢。
答案 0 :(得分:2)
提交后立即找到答案,典型!
db用户Azure使用不具有删除数据库的权限,因此您需要将DropCreateDatabaseIfModelChanges中使用的初始化程序的类型更改为ClearDatabaseSchemaIfModelChanges。这会在每次部署时很好地更新架构!