文章编号: 836680 - 最后修改: 2006年4月7日 - 修订: 2.2

FIX: 使用一个 SQL 数据库为 SQL Server 会话状态的所有应用程序可能会导致瓶颈

系统提示此文章适用于与您所使用的操作系统不同的操作系统。文章内容可能与您无关,并且已被禁用。
为这篇文章的一个 Microsoft.net Framework 1.0 版本,请参阅 820782? (http://support.microsoft.com/kb/820782/ )

本页

展开全部 | 关闭全部

症状

Microsoft SQL Server 会话状态提供了更长的时间和可缩放使用的 Microsoft ASP.NET 中的会话状态。但是,SQL Server 会话状态使用同一 SQL Server 数据库是在同一 ASPNET 进程中的所有应用程序。此行为可能会产生单点故障,或者可能会创建一个瓶颈。

原因

通过设计,所有 ASP.NET 应用程序都使用同一个数据库时他们都使用 SQL Server 会话状态存储数据。您不能指定每个应用程序的数据库名称。但是,您应用此软件更新后,可以在 SQL 连接字符串的 sessionstate 部分中的配置文件中包含数据库名称。

解决方案

若要解决这一问题,如果当前配置 SQL Server 会话状态,请在安装此软件更新之前,通过原始 UninstallSqlState.sql 脚本删除它。有关详细的信息,请参阅"参考"部分。

此软件更新将安装新的 InstallSqlStateTemplate.sql 和 UninstallSqlStateTemplate.sql 文件。请为您要创建的每个会话数据库这些文件的副本。按"更多信息"部分中显示的说明来修改每个文件。

注意这些说明还包括 InstallSqlStateTemplate.sql 文件的注释部分中。

完成所做的修改后,运行 InstallSqlStateTemplate.sql 文件安装为指定数据库的 SQL Server 会话状态。配置会话数据库后,修改 sessionstate 部分中的 Web.config 文件以引用特定的数据库的会话状态,如下例所示:

注意在下面的示例代码中,您必须更改 用户 id = UserName密码 = StrongPassword 到正确的值。请确保该用户 ID 具有适当的权限在数据库上执行此操作
<sessionState 
     mode="SQLServer"
          allowCustomSqlDatabase = "true"
     <!-- This line is a new attribute to sessionState -->
     sqlConnectionString="data source=127.0.0.1;database=mydatabase;user 
              id=UserName;password=StrongPassword"
     cookieless="false" 
     timeout="20" 
/>
注意 的 sqlConnectionString 现在包含数据库的参数。在此的示例 mydatabase 是您指定的会话状态的数据库。

重要此软件更新包含以下两种类型的程序包:
  • Microsoft Windows 安装程序程序包 (.msi 文件)
  • 一个可选组件管理器包 (OCM)
如果您使用 Microsoft Windows Server 2003,则必须使用 Windows Server 2003 (OCM) 更新,因为 Windows Server 2003 文件保护监视.net Framework 1.1 文件。如果您使用不同的 Windows Server 2003 操作系统,您必须继续使用 Windows 安装程序包。

修补程序信息

现在提供 Microsoft,受支持的修复程序,但它只用于解决本文所述的问题。仅将它应用于出现这一特定问题的系统。此修补程序可能还会接受进一步的测试。因此,如果此问题没有对您造成严重的影响,我们建议您等待下, 一个.net Framework 1.1 Service Pack 1 包含此修补程序。

要立即解决此问题,请与 Microsoft 产品支持服务以获取此修复程序。有关 Microsoft 产品支持服务电话号码和关于支持费用的信息的完整列表,请访问下面的 Microsoft 网站:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
注意 在特殊的情况中如果 Microsoft 支持专业人员确定某个特定更新才能解决您的问题,可能会被取消通常会导致支持电话的费用。将正常收取支持费用将应用于其他支持问题和不需要进行专门更新的问题。

文件信息

此修补程序的英文版具有文件属性 (或更高版本) 下表中列出。其格式为协调通用时间 (UTC) 列出日期和时间对这些文件。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的日期和时间工具中的 时区 选项卡。
   Date         Time   Version        Size       File name
   ---------------------------------------------------------------------------------------------
   20-Mar-2004  04:35  1.1.4322.1014    258,048  Aspnet_isapi.dll
   20-Mar-2004  04:35  1.1.4322.1014     20,480  Aspnet_regiis.exe
   20-Mar-2004  04:35  1.1.4322.1014     32,768  Aspnet_state.exe
   20-Mar-2004  04:35  1.1.4322.1014     32,768  Aspnet_wp.exe
   16-May-2003  00:49                    33,522  Installpersistsqlstate.sql
   16-May-2003  00:49                    34,150  Installsqlstate.sql
   03-Oct-2003  19:20                    35,017  Installsqlstatetemplate.sql
   20-Mar-2004  04:24  1.1.4322.1014     94,208  Perfcounter.dll
   20-Mar-2004  04:30                     8,571  Smartnav.js
   22-Mar-2004  04:43  1.1.4322.1014  1,220,608  System.dll
   22-Mar-2004  04:43  1.1.4322.1014    241,664  System.messaging.dll  
   22-Mar-2004  04:43  1.1.4322.1014    323,584  System.runtime.remoting.dll
   22-Mar-2004  04:43  1.1.4322.1014    131,072  System.runtime.serialization.formatters.soap.dll
   22-Mar-2004  04:43  1.1.4322.1014  1,257,472  System.web.dll
   22-Mar-2004  04:43  1.1.4322.1014    819,200  System.web.mobile.dll
   22-Mar-2004  04:43  1.1.4322.1014    569,344  System.web.services.dll
   22-Mar-2004  04:43  1.1.4322.1014  1,339,392  System.xml.dll
   03-Oct-2003  19:20                     2,119  Uninstallsqlstatetemplate.sql
   20-Mar-2004  04:30                    14,482  Webuivalidation.js

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

更多信息

使用模板文件来安装 ASP.NET 会话状态 SQL 对象

使用不同于默认 ASPState 数据库的数据库上安装 ASP.NET 会话状态 SQL 对象 Installsqlstatetemplate.sql 模板文件。若要这样做,请按照下列步骤操作:
  1. 通过复制两个模板文件 Installsqlstatetemplate.sql 和 Uninstallsqlstatetemplate.sql 创建您自己的脚本文件。
  2. 创建您的数据库 (例如对于 MyASPStateDB) 的名称。
  3. 在您自己的脚本文件中 DatabaseNamePlaceHolder 的所有匹配项替换为您的数据库的名称。
  4. 安装并使用您自己的脚本文件,然后删除 ASP.NET 会话状态 SQL 对象。

参考

有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684? (http://support.microsoft.com/kb/824684/ ) 用于描述 Microsoft 软件更新的标准术语的说明
有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
317604? (http://support.microsoft.com/kb/317604/ ) 如何配置 ASP.NET 会话状态存储 SQL Server

这篇文章中的信息适用于:
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft ASP.NET 1.1
关键字:?
kbmt kbqfe kbhotfixserver kbsqlserv700sp2fix kbstate kbconfig kbappsetup kbbug kbnetframe110presp1fix KB836680 KbMtzh
机器翻译机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 836680? (http://support.microsoft.com/kb/836680/en-us/ )
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。