繁体   English   中英

在 azure sql 上连接到数据库的问题

[英]Problems connecting to database on azure sql

我正在尝试在 Entity Framework Core 上执行更新数据库,这给了我这个错误。

Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user 'hxxxxxxxo@hxxxxxxxogmail.onmicrosoft.com'.
   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.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerConnection.OpenDbConnection(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass18_0.<Exists>b__0(DateTime giveUp)
   at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__DisplayClass12_0`2.<Execute>b__0(DbContext c, TState s)
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
   at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, TState state, Func`2 operation, Func`2 verifySucceeded)
   at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, TState state, Func`2 operation)
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists(Boolean retryOnNotExists)
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists()
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
ClientConnectionId:429fba14-5656-4560-9cb8-efb35ab0dc34
Error Number:18456,State:1,Class:14
Login failed for user 'hxxxxxxxo@hxxxxxxxogmail.onmicrosoft.com'.

我可以用这个密码连接SSMS并连接到数据库,我有其他API并且我可以连接到它,我不知道会发生什么。

services.AddDbContext<AAAADbContext>(options => 
  options.UseSqlServer(Configuration.GetConnectionString("DefaultConnectionString")));

连接字符串

"DefaultConnectionString": "Server=tcp:xxxx-xxxxxxxx.database.windows.net,1433;Initial Catalog=xxxxxxxxxxxDb;Persist Security Info=False;User ID= ;Password= ;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication=Active Directory Password"

有关MSSQLSERVER_18456 的更多信息:

当连接尝试因涉及错误密码或用户名的身份验证失败而被拒绝时,将向客户端返回类似于以下内容的消息:“用户 '<user_name>' 登录失败。(Microsoft SQL Server,错误: 18456)”。

有关状态 1 的更多信息:

错误信息不可用。 这种状态通常意味着您无权接收错误详细信息。 有关详细信息,请联系您的 SQL Server 管理员。

似乎这一切都归结为错误的用户名/密码或用户/数据库的错误配置。

编辑:

您是否考虑过使用托管身份连接到您的数据库?

应用服务在 Azure 中提供高度可扩展、自修补的 Web 托管服务。 它还为您的应用程序提供托管标识,这是用于保护对Azure SQL 数据库和其他 Azure 服务的访问的交钥匙解决方案。 应用服务中的托管身份通过消除应用中的机密(例如连接字符串中的凭据)来提高应用的安全性。 在本教程中,您将向您在以下教程之一中构建的示例 Web 应用程序添加托管标识:

  • 教程:使用 Azure SQL 数据库在 Azure 中构建 ASP.NET 应用
  • 教程:在 Azure 应用服务中构建 ASP.NET Core 和 Azure SQL 数据库应用

来源: 教程:使用托管标识保护来自应用服务的 Azure SQL 数据库连接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM