今天鼓捣了下 设置 sql server 存储session变量. 网上的资料基本都是摘录,没有步骤.记录下免得下次忘记..
今天是2011-4-18日,北京又刮沙尘暴了. 这鬼天气.
北京大学政府干部培训班: http://www.bjpku.com
闲话少说,把步骤说下:
1.前期工作,安装sql seerver 记得把服务sql server 代理开启.
2.记得用aspnet_regsql.exe清理下配置.位置在 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
3.新建一个名为ASPState的sql 数据库,在作业下面新建ASPState_Job_DeleteExpiredSessions作业.
4.在sql server 中执行InstallSqlState.sql,位置在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727下面.
5.检查ASPState_Job_DeleteExpiredSessions,ASPState数据库是否正常.
北京大学政府干部培训班: http://www.bjpku.com
将服务器Session信息存储在SQL Server中
首先,还是让我们来做一些准备工作。启动SQL Server和SQL Server代理服务。在SQL Server中执行一个叫做InstallSqlState.sql的脚本文件。这个脚本文件将在SQL Server中创建一个用来专门存储Session信息的数据库,及一个维护Session信息数据库的SQL Server代理作业。我们可以在以下路径中找到那个文件:
[system drive]\winnt\Microsoft.NET\Framework\[version]\
然后打开查询分析器,连接到SQL Server服务器,打开刚才的那个文件并且执行。稍等片刻,数据库及作业就建立好了。这时,你可以打开企业管理器,看到新增了一个叫ASPState的数据库。但是这个数据库中只是些存储过程,没有用户表。实际上Session信息是存储在了tempdb数据库的ASPStateTempSessions表中的,另外一个ASPStateTempApplications表存储了ASP中Application对象信息。这两个表也是刚才的那个脚本建立的。另外查看管理->SQL Server代理->作业,发现也多了一个叫做ASPState_Job_DeleteExpiredSessions的作业,这个作业实际上就是每分钟去ASPStateTempSessions表中删除过期的Session信息的。
接着,我们返回到Web.config文件,修改mode的值改为SQLServer。注意,还要同时修改sqlConnectionString的值,格式为:
sqlConnectionString="data source=localhost; Integrated Security=SSPI;"
其中data source是指SQL Server服务器的IP地址,如果SQL Server与IIS是一台机子,写127.0.0.1就行了。Integrated Security=SSPI的意思是使用Windows集成身份验证,这样,访问数据库将以ASP.NET的身份进行,通过如此配置,能够获得比使用userid=sa;password=口令的SQL Server验证方式更好的安全性。当然,如果SQL Server运行于另一台计算机上,你可能会需要通过Active Directory域的方式来维护两边验证的一致性。