2012-06-19 33 views
3

我试图运行默认的“欢迎使用ASP.NET MVC!” Azure上的MVC3应用程序,通过ASP.NET Universal Providers为ASP.NET成员资格存储区使用SQL Azure。我有一个名为“MyDatabase”的SQL Azure数据库,其中包含一个名为“MyUser”的新登录名和用户名。用户绑定到登录名并且已为MyDatabase赋予dbo_owner角色。 MyDatabase在管理门户中设置为Web角色的链接资源。SQL Azure连接不断尝试打开“主”尽管连接字符串

该网站显示了罚款,在Azure上,但在尝试任何数据库操作,我的数据库连接失败:

无法打开数据库“大师”由登录请求。登录失败。用户'MyUser'登录失败。

查找答案时,通常的响应是在连接字符串中设置“Database”参数。我确实已经这样做了,但它仍然在努力尝试“主人”。这就像它被忽略:

Server=tcp:myserver.database.windows.net,1433;Database=MyDatabase;User [email protected];Password=mypassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True 

其他的事情我已经排除了:

  • 我RDP'ed到我的Web角色,并确认此连接字符串是表示我的web.config起来。
  • 我试过“初始目录”而不是“数据库”,但结果相同。
  • 可能意义重大:当我将“连接到数据库:”设置为“MyDatabase”时,SSMS连接到我的数据库,但如果我将其保留为默认值并放入“Database = MyDatabase;”在其他连接参数中。我不确定那是什么意思?

这里可能是一些新手的错误 - 我应该检查什么?

+0

你可以检查什么默认数据库设置在这个用户的属性? –

+0

考虑到这一点,但我认识到SQL Azure不支持用户的默认数据库:http://stackoverflow.com/questions/8859067/changing-the-default-database-for-a-sql- azure-login – user1454265

+2

解决了这个问题,但我没有代表自己回复6个小时(新帐户)。在此之前的简短回答:检查堆栈跟踪和ASP。NET Universal Providers试图创建会员/角色/等。表在运行时,并需要使用主数据库。我在master中为相同的登录名创建了一个MyUser,并将其添加到“dbmanager”角色中,现在全部工作。 – user1454265

回答

4

看看到异常的堆栈跟踪帮助解决这个问题之一:

...在System.Data.SqlClient.SqlProviderServices.UsingMasterConnection(...)在System.Data.SqlClient.SqlProviderServices .DbDatabaseExists(...)在System.Web.Providers.Entities.DatabaseCreationHelper.DatabaseExists(...)在System.Web.Providers.ModelHelper.CreateMembershipEntities(ConnectionStringSettings设置)System.Data.Objects.ObjectContext.DatabaseExists()在System.Web.Providers.DefaultMembershipProvider.Membership_CreateUser(...)...

由于我wa在使用新数据库时,ASP.NET Universal Providers试图创建成员/角色表,出于某种原因实际上需要使用master数据库来完成此操作。我添加了一个新的用户作为master,绑定到我的登录名,并确保它具有“dbmanager”角色,以便它可以在需要时创建表。

我不是100%确定它为什么需要通过master,但堆栈跟踪使它看起来像这样做,以检查是否实际存在数据库。 (请继续评论,如果你知道确切的答案!)

+0

你有没有想过为什么这个程序工作? – Rachael