首页 > 解决方案 > Azure 应用服务无法连接到恢复的 Azure SQL DB

问题描述

我已经从 Azure 存储中的 .bacpac 恢复了 Azure SQL DB。我可以成功连接并访问 SSMS 2019 中的所有对象。但是我的 Azure 应用服务抛出错误,“user..XXXX”登录失败

我已在 Azure DB 服务器上授予“允许 Azure 服务和资源访问此服务器”的权限。

如何排除故障或解决问题?

仅供参考:我可以从 SSMS 成功连接并完成所有操作。

Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user 'XXXXXXAppUser'.
   at Microsoft.Data.ProviderBase.DbConnectionPool.CheckPoolBlockingPeriod(Exception e)
   at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   at Microsoft.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at Microsoft.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry, SqlConnectionOverrides overrides)
   at Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides overrides)
   at Microsoft.Data.SqlClient.SqlConnection.Open()
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerConnection.OpenDbConnection(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected)
ClientConnectionId:XXXXXXXX-1e0a5b65dd11
Error Number:18456,State:1,Class:14
ClientConnectionId before routing:XXXXXXXX-c3154c7b1c61
Routing Destination:XXXXXXXXX.tr2023.northcentralus1-a.worker.database.windows.net,11002

标签: azure-sql-databaseazure-sql-server

解决方案


提到的错误可能是由于多种原因,因此我建议您查看错误日志以查看登录失败的确切原因。我猜数据库名称或密码拼写错误。

但是,确切的问题似乎与您的密码格式有关。您的密码可能包含一些特殊字符,例如“$”,因此当您将密码作为命令传递时,它会将其作为以“$”开头的某个参数作为命令读取,并将密码字符串的一半读取为不同的值。

解决方案:使用简单的普通密码(不包含'$'符号)创建另一个用户,或者更改现有用户的密码。


推荐阅读