【问题标题】:Failing to connect to SQL Server 2008 R2 from Kubernetes using EF Core无法使用 EF Core 从 Kubernetes 连接到 SQL Server 2008 R2
【发布时间】:2018-03-14 04:10:04
【问题描述】:

我在使用 EF Core 从 dotnet core 2.0 Web API 应用程序连接到 SQL Server 2008 R2 SP3(在 Windows Server Standard 2008 SP3 上运行)时遇到问题。我将应用程序托管在 azure AKS 群集上,并通过 VPN 连接回到本地数据库服务器。 Windows Server 和 SQL Server 均已完全修补。

我已经证明我可以使用相同的连接字符串和标准的SqlConnection连接到数据库。

我在尝试 EF 时看到的错误是:

  1. An error occurred using the connection to database 'PagePulse' on server 'tcp:10.X.X.X,1433'.

后跟:

  1. An exception occurred in the database while iterating the results of a query for context type 'X.Y.ServiceContext'. System.Data.SqlClient.SqlException (0x80131904): Login failed for user '<user id>'. at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource1 在 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected) at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.BufferlessMoveNext(Boolean buffer) at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementation[TState,TResult](Func3操作,Func3 verifySucceeded, TState state) at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.MoveNext() 在 System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable1 source, Boolean& found) at lambda_method(Closure , QueryContext ) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass17_11.b__0(QueryContext qc) ClientConnectionId:b716623d-30a5-4380-bdef-bee002e34b28 错误号: 18456,状态:1,类:14`

我已经运行了一个数据包嗅探器来查看这是否已经显示。我可以看到 TCP 连接成功协商 SYN、SYNACK、ACK 和一个 TDS7 数据包,然后连接被关闭。

任何帮助将不胜感激。

【问题讨论】:

  • 值得一提的是,当在我的开发机器上的 Docker Linux 容器中运行时,它可以正常工作

标签: sql-server-2008-r2 kubernetes entity-framework-core ef-core-2.0


【解决方案1】:

我想通了。我使用的密码中有一个“@”,由于某种原因,当它从 Kubernetes 中的环境变量传递到 Pod 时,以下字符被删除了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    相关资源
    最近更新 更多