Wit*_*tle 6 c# sql-server azure azure-mobile-services azure-sql-database
我一直在使用我的应用程序使用Azure移动服务没有太多问题,但是今天当我尝试从服务中提取时出现此错误:
Exception = System.Data.SqlClient.SqlException(0x80131904):无法打开登录请求的数据库"master".登录失败.用户'JVlSvKwDpdLogin_ ***** ' 登录失败.
我以前从来没有遇到过这个问题,我只是用这样的代码连接到我的移动服务:
public static MobileServiceClient MobileService = new MobileServiceClient(
"https://<webservicename>.azure-mobile.net/",
"<YOUR-API-KEY-HERE>"
);
Run Code Online (Sandbox Code Playgroud)
在发生此错误之前,我从未提供用户名或密码.我已经看到了一些解决方案,他们为数据库创建了一个用户,但我现在不想创建一个用户,因为我们还在测试中,而现在我宁愿能够使用该服务.这是移动服务的问题,还是数据库的问题?
UPDATE
正如下面Matt的回答所示,我在Azure门户中找到了MS_ConnectionString.然后,我连接到Azure SQL服务器上的"主"数据库,并搜索上面的登录信息.我将密码更改为使用连接字符串中找到的密码
ALTER LOGIN <login> WITH password='<password-found-in-connection-string>';
Run Code Online (Sandbox Code Playgroud)
但是现在我收到了这个错误:
Exception = System.Data.Entity.Core.ProviderIncompatibleException:访问数据库时出错.这通常意味着与数据库的连接失败.检查连接字符串是否正确,以及是否使用了相应的DbContext构造函数来指定它或在应用程序的配置文件中找到它.有关DbContext和连接的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=386386.有关失败的详细信息,请参阅内部异常.---> System.Data.Entity.Core.ProviderIncompatibleException:提供程序未返回ProviderManifestToken字符串.---> System.Data.SqlClient.SqlException:用户'JVlSvKwDpdLogin_ ******* ' 登录失败.
我没有使用连接字符串或AzureMobileService项目的web.config文件进行任何更改.
web.config中:
<connectionStrings>
<add name="MS_TableConnectionString" connectionString="Data Source= (localdb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-CoverageTool.AzureMobileService-20140910083006.mdf;Initial Catalog=aspnet-CoverageTool.AzureMobileService-20140910083006;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
MobileContext:
private const string connectionStringName = "Name=MS_TableConnectionString";
public MobileServiceContext()
: base(connectionStringName)
{
}
Run Code Online (Sandbox Code Playgroud)
连接字符串
数据源= ***** .database.windows.net;初始目录= sbpconsulting_db;用户ID = *******Login_sbpconsulting;密码=************** ;异步加工= TRUE; TrustServerCertificate = FALSE;
如果您的Entity Framework数据库初始化程序与Azure移动服务正在使用的数据库用户的权限不兼容,也可能出现此错误.
例如,当您为Azure移动服务创建数据库时,Azure会自动为您的服务创建数据库用户.该用户没有管理员权限 - 它通常可以读取和写入数据到表.在这种情况下,如果您使用DropCreateDatabaseAlways数据库初始化程序,您的用户将没有足够的权限来实际删除数据库,您可能会看到您提到的错误.
引入了新的初始化程序以使用有限的权限集:
小智 1
我只能想到一件事可能是问题所在。Windows Azure 数据库仅允许您事先已列入白名单的特定 IP 地址。
因此,如果您尝试从不同的互联网连接运行您的应用程序,或者您的 IP 地址已更改,那么这可能是您的问题。
尝试直接在 Azure 管理控制台上访问数据库,并允许您的 IP 地址访问数据库服务器。
Azure 始终需要身份验证,因此请检查应用程序的 app.config / web.config 文件中的凭据。
更多基于代码的信息将有助于使这个答案不仅仅是盲目猜测。
| 归档时间: |
|
| 查看次数: |
2313 次 |
| 最近记录: |