Ron*_*red 5 sql-server-2008 errors
我正在使用 SQL Server 2008 Sp3
最近我在 SQL 日志中遇到错误:
错误:18059,严重性:20,状态:1
。连接已被删除,因为打开它的主体随后假定了一个新的安全上下文,然后尝试在其模拟的安全上下文下重置连接。不支持此方案。请参阅联机丛书中的“模拟概述”。
我通过 Profiler 找到了相关的原始服务器和应用程序。
我搜索并发现有人说我需要更改应用程序连接字符串中的连接池。
以下是相关Web.Config
文件:
<?xml version="1.0"?>
<appSettings>
<add key="Main.ConnectionString" value="Data Source=db-002\db2;Initial
Catalog=APPDB;TRUSTED_CONNECTION=YES"/>
<add key="ConnectionHash" value="==QMr1meolHO3YWdTNFOzcTO"/>
<add key="Database" value="[APPDB]"/>
<add key="UseApprole" value="True"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我在我们的测试环境中将其更改为以下内容:
<?xml version="1.0"?>
<appSettings>
<add key="Main.ConnectionString" value="Data Source=db-002\db2;Initial
Catalog=APPDB;TRUSTED_CONNECTION=YES;Pooling=false"/>
<add key="ConnectionHash" value="==QMr1meolHO3YWdTNFOzcTO"/>
<add key="Database" value="[APPDB]"/>
<add key="UseApprole" value="True"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我已经重置了应用程序、服务和 IIS。检查应用程序,它的工作原理。
有一段时间我没有再收到这些错误,但 3 小时后它们又恢复了。
谁能给我一个想法我能做什么?
Roni Vered 在 2013 年提到的帖子并没有说只是简单地说:“更改应用程序连接字符串中的连接池。 ”
文本中指出,使用“应用程序角色……与连接池”存在问题。答案是:关闭连接池。
这可以通过在应用程序的连接字符串中包含“ ; Pooling=False ”来完成。
这在 2000 年代中期就发挥了作用。如果您仍在使用 SQL Server 2008,它可能仍然适合您。
原始帖子的不再正确的路径是:http://forums.microsoft.com/MSDN/ShowPost.aspx ?PostID=473777&SiteID=1
2007 年建议的解决方法:在每次调用时,如果 approle 已在使用中,则再次跳过 approle 的设置。示例代码:
IF NOT EXISTS (SELECT * FROM sysusers
WHERE name = USER_NAME()
AND isapprole = 1)
EXEC sp_setapprole ...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4722 次 |
最近记录: |