azure - 尽管有连接字符串,SQL Azure 连接仍不断尝试打开 "master"

标签 azure connection-string azure-sql-database

我正在尝试运行默认的“欢迎使用 ASP.NET MVC!” Azure 上的 MVC3 应用程序,通过 ASP.NET 通用提供程序使用 SQL Azure 作为 ASP.NET 成员资格存储。我有一个名为“MyDatabase”的 SQL Azure 数据库,其新登录名和用户都名为“MyUser”。用户与登录名绑定(bind),并被授予 MyDatabase 的 dbo_owner 角色。 MyDatabase 设置为管理门户中 Web 角色的链接资源。

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

Cannot open database "master" requested by the login. The login failed. Login failed for user 'MyUser'.

寻找答案时,通常的响应是在连接字符串中设置“Database”参数。我确实做到了这一点,但它仍然不断地尝试“主人”。就像它被忽略了:

Server=tcp:myserver.database.windows.net,1433;Database=MyDatabase;User ID=MyUser@myserver;Password=mypassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True

我排除的其他事情:

  • 我通过 RDP 连接到我的 Web 角色,并确认此连接字符串显示在我的 Web.config 中。
  • 我尝试了“初始目录”而不是“数据库”,但结果相同。
  • 可能很重要:当我将“连接到数据库:”设置为“MyDatabase”时,SSMS 连接到我的数据库,但如果我将其保留为默认值并输入“Database=MyDatabase;”,则会失败并出现相同的错误。在附加连接参数中。我不确定这意味着什么?

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

最佳答案

查看异常的堆栈跟踪有助于解决这个问题:

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

由于我使用新数据库,ASP.NET 通用提供程序尝试创建成员资格/角色表,并且由于某种原因实际上需要使用主数据库来完成此操作。我向 master 添加了一个新用户,与我的登录名绑定(bind),并确保它具有“dbmanager”角色,以便它可以在需要时创建表。

我不是 100% 确定为什么它需要通过 master,但是堆栈跟踪使它看起来像是为了检查您提供给它的数据库是否确实存在。 (如果您知道最终答案,请继续评论!)

关于azure - 尽管有连接字符串,SQL Azure 连接仍不断尝试打开 "master",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11108908/

相关文章:

azure - 在不使用GenerateScripts的情况下将大型表从一个Azure SQL Server迁移到另一个Azure SQL Server

c# - 如何为用 C# 编写的 Azure Function App 编写单元测试?

系统中不存在具有指定 ID 的 Azure 逻辑应用 CosmosDB 实体

asp.net - 这个连接字符串有什么问题?

c# - 从 App.config 获取连接字符串

c# - SQL Azure 数据库的本地 SQL 更改

azure - 通过Azure功能批量插入表存储

Azure 服务主体无法访问服务管理 API

c# - 如何安全地存储和访问连接字符串详细信息?

delphi - 使用 Delphi 连接到 SQL Azure?