azure-sql-database - 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
解决方案
提到的错误可能是由于多种原因,因此我建议您查看错误日志以查看登录失败的确切原因。我猜数据库名称或密码拼写错误。
但是,确切的问题似乎与您的密码格式有关。您的密码可能包含一些特殊字符,例如“$”,因此当您将密码作为命令传递时,它会将其作为以“$”开头的某个参数作为命令读取,并将密码字符串的一半读取为不同的值。
解决方案:使用简单的普通密码(不包含'$'符号)创建另一个用户,或者更改现有用户的密码。
推荐阅读
- javascript - 如何在子原型中重写父原型函数?
- elasticsearch - Elastic Search 文本搜索在完全匹配方面得分不高
- amazon-web-services - 如何限制 iam 角色可访问的 ssm 文档以使用标签启动自动化?
- android - 使用 RxJava (Android/Kotlin) 从可观察调用与非可观察调用返回
- html - 将 JSON 响应转换为新闻提要
- java - Eclipse Juno 不会自动更新更改(清理和重建也不起作用)
- azure-devops - 我应该使用 Releases 还是 YAML Pipelines 来部署应用程序?
- python - 在 pyspark 的 StructStreaming 中;如何将 DataFrame 中的每一行(json 格式的字符串)转换为多列
- websocket - 如何将 Play Framework 2.8 WebSocket 与 Sink 和 Source 一起使用?
- javascript - 如何在字符串中呈现变量
React Native 中的 JSX 标签