如何切换到会话的SQL server状态..我犯了一个错误

本文关键字:错误 一个 会话 何切换 SQL 状态 server | 更新日期: 2023-09-27 18:03:30

由于一些In-Proc问题,我尝试切换到SQL状态会话。

我检查了我的CMS数据库,发现类似aspnet_XXX的表已经存在。为了确保安全,我还创建了DEFAULT数据库"aspnetdb",并比较了表aspnet_xxx,并检查了它们是否已经存在于我的CMS_DB_DEV中。。。并且所有这些都已经存在。

然后我转到web.config,通过IIS配置了会话状态连接字符串,如下所示:

  <system.web>
      <sessionState allowCustomSqlDatabase="true" 
                    cookieless="UseCookies" mode="SQLServer"   
                    sqlConnectionString="Server=localhost;Database=cms_db_dev;User ID=sa;Password=xxxx" 
                    timeout="20" />

现在,当我运行我的应用程序时,我得到了错误:

无法使用SQL Server,因为ASP.NET 2.0版会话状态为SQL服务器上未安装。请安装ASP.NET会话状态SQL Server 2.0或更高版本。

我使用W7 pro,IIS 7.5已安装

我检查了这2个链接,其中提到了问题,但没有希望:

http://support.microsoft.com/kb/317604

http://www.brianstevenson.com/blog/aspstate-concurrently-running-for-net-1011-and-net-20#comment-984

A当我在本地主机上完成这项工作后,我将在生产机器中执行同样的操作。表似乎已经存在了,所以我只需要配置web.config…

我可能不会删除现有的表(如aspnet_xxx(,因为它被Dotnetnuke CMS系统使用。。。但我可以在本地主机上测试。。。

那么我错过了什么?

如何切换到会话的SQL server状态..我犯了一个错误

听起来生产环境可能只有您需要的1.1版本的DB结构。您可以使用-ssadd标志和适当的参数运行2.0 aspnet_regsql.exe来创建新版本。

http://msdn.microsoft.com/en-us/library/ms229862(v=vs.80(.aspx

几个要点:

  1. SQL会话表的名称以ASPState开头,而不是以aspnet开头——这些名称用于各种提供程序存储(成员资格、角色、配置文件等(
  2. 如果使用-ssadd命令运行aspnet_regsql,默认情况下,它将创建一个名为"ASPState"的数据库,其中包含一些存储过程,并使用TempDB进行实际持久化

要使用现有的数据库,您需要运行:

aspnet_regsql -ssadd -sstype c -s LocalHost -d cms_db_dev -u sa -P XXXXX

这将:

  • -ssadd向使用-s选项指定的Sql Server添加对SQLServer模式会话状态的支持
  • -sstype c创建一个自定义的持久化会话状态数据库,其中数据和存储的进程都存储在同一个数据库中(而p将所有内容存储在名为ASPState的数据库中,t将在ASPState数据库中创建存储的进程,但将数据存储在TempDB中(
  • -s Localhost(或-s .'(使用本地数据库实例,根据需要进行更新
  • d cms_db_dev要向其中添加表和存储过程的自定义数据库的名称
  • -u sa -P XXXXX创建数据库的有效凭据,如果在LocalHost上,则可能使用-E使用windows凭据
相关文章: