如何切换到会话的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系统使用。。。但我可以在本地主机上测试。。。
那么我错过了什么?
听起来生产环境可能只有您需要的1.1版本的DB结构。您可以使用-ssadd标志和适当的参数运行2.0 aspnet_regsql.exe来创建新版本。
http://msdn.microsoft.com/en-us/library/ms229862(v=vs.80(.aspx
几个要点:
-
SQL会话表的名称以
ASPState
开头,而不是以aspnet
开头——这些名称用于各种提供程序存储(成员资格、角色、配置文件等( - 如果使用-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凭据