【问题标题】:System.InvalidOperationException: Internal connection fatal error. Error state: 15, Token : 143System.InvalidOperationException:内部连接致命错误。错误状态:15,令牌:143
【发布时间】:2021-05-21 00:27:09
【问题描述】:

当应用程序服务器和数据库服务器之间发生 API 调用以获取数据时,我们经常在应用程序中收到此错误。

在解决问题时,重新启动了应用程序和数据库服务器(使用我的帐户登录服务器)并且没有运气。后来我们发现,当使用用作站点应用程序池标识的服务帐户登录服务器时,解决了该问题。

注意:并非所有 API 调用都会出现此问题。仅适用于涉及使用 SQL Server Always Encrypted 方法获取加密数据的调用。

因此,在其他日子或每当我们注意到问题时,我们都会使用服务帐户登录应用程序服务器来解决此问题。

我们使用的是 windows server 2016,IIS10。

谁能帮助我们为什么会发生这种奇怪的行为?

提前谢谢你

System.InvalidOperationException:内部连接致命错误。错误状态:15,令牌:143

在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean & dataReady)
在 System.Data.SqlClient.SqlDataReader.TryCloseInternal(Boolean closeReader)
在 System.Data.SqlClient.SqlDataReader.Close()
在 System.Data.Common.DbDataReader.Dispose(布尔处理)
在 System.Data.Entity.Core.Common.Internal.Materialization.Shaper1.Finally() at System.Data.Entity.Internal.LazyEnumerator1.Dispose()
在 System.Collections.Generic.List1..ctor(IEnumerable1 集合)
在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 源)

【问题讨论】:

    标签: api sql-server-2016 windows-server-2016 iis-10 always-encrypted


    【解决方案1】:

    您是否将应用程序池添加到可以登录 SQL Server 的用户中。当应用程序池本身添加为登录用户时,无论其身份是什么,都可以连接数据库。

    打开您希望应用程序池可以登录的数据库。选择安全->登录,右键单击并新登录...

    登录名是 IIS APPPOOL\app 池名。

    检查服务器角色中的公共和系统管理员。

    以同样的方式创建一个新的登录名 NT AUTHORITY\SYSTEM。

    【讨论】:

    • 我们使用服务帐户作为应用程序池身份,而不是默认身份。我们对所有方法都使用了类似的查询...但是仅当从使用带有 Windows 证书存储的 SQL Server Always Encrypted 方法加密的表中获取数据时才会出现此错误 - 发生此问题时的当前用户我们尝试关闭所有SQL 服务器中的活动连接,甚至重新启动了服务器。仅当服务器使用服务帐户登录时才修复问题
    猜你喜欢
    • 2013-04-19
    • 2018-09-14
    • 1970-01-01
    • 2010-11-12
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多