如何使用SQLServer Session

最近开发项目,由于涉及到Session保持的问题,最终查了一下网络上的相关方法,感觉用Sqlserver来保存Session好一点,经过综合测试,通过界面设置SQLSERVER SESSION会出问题,综合网上查找的资料做以下总结:


SQLServer

(1).net2.0以上,建议不要使用aspnet_regsql.exe工具,而应该使用命令行,如aspnet_regsql -C "Data Source=.;Integrated Security=True" -ssadd -sstype c -d SessionStateDB 
           原因是使用工具容易产生错误:SQL 服务器上未安装 ASP.NET 2.0 版会话状态,因此无法使用 SQL Server。请安装 ASP.NET 会话状态 SQL Server 2.0 版或更高版本。
此时的配置文件应该是如下格式:<sessionState mode="SQLServer" allowCustomSqlDatabase="true"  sqlConnectionString="data source=VM2008;initial catalog=SessionStateDB;user id=sa;password=ioffice" timeout="30" />
(2)当机器上同时存在.net1.1和.net2.0的时候,建议使用.net2.0的脚本。
(3)SQLServer模式容易带来效率上的开销,每个页面都会对数据库进行读写2次操作。解决办法在web.config文件中的system.web下的page修改属性,如<pages enableSessionState="ReadOnly"> 或者<pages enableSessionState="False">,在ioffice中一般使用readonly。同时把需要改写session的页面的EnableSessionState="True",一般是登录登出页面。

aspnet_regsql.exe 参数解析

-- 常规选项 --

-?   显示此帮助文本。

-W  向导模式。(如果未指定其他参数,则默认为此模式。)

-- SQL 连接选项 --

-S <server>    要使用的 SQL Server 实例(SQL Server 7.0 及更高版本)。

-U <login id>    用于进行身份验证的 SQL Server 用户名;需要 -P 选项。

-P <password>  进行身份验证时使用的 SQL Server 密码;需要 -U 选项。

-E                   使用当前 Windows 凭据进行身份验证。

-C <connection string>
                  连接字符串。不指定用户名、密码和服务器名称,而是指定 SQL Server
                  连接字符串。该字符串不得包含数据库名称,除非另行指定。

-sqlexportonly <filename>
                  生成用于添加或移除指定的功能、但不执行实际操作的 SQL 脚本文件。可与以下选项一起使用: -A、-R、-ssadd 和 -ssremove。

-- 应用程序服务选项 --

-A all|m|r|p|c|w  添加对某个功能的支持。可同时指定多个值。例如:

-A mp
-A m -A p

all: 所有功能
m: 成员资格
r: 角色管理器
p: 配置文件
c: 个性化设置
w: SQL Web 事件提供程序

-R all|m|r|p|c|w  移除对一个功能的支持。可同时指定多个值。例如:

-R mp
-R m -R p

all : 所有功能以及由这些功能共享的所有公共表和存储过程
m: 成员资格
r: 角色管理器
p: 配置文件
c: 个性化设置
w: SQL Web 事件提供程序

-d <database> 用于应用程序服务的数据库名称。如果未指定任何数据库名称,则使用默认数据库“aspnetdb”。

-Q   安静模式;移除功能时不显示确认对话框。

-- SQL 缓存依赖项选项(用于 SQL 7.0 和 2000) --

-d <database>     用于 SQL 7.0 和 SQL 2000 中的 SQL 缓存依赖项的数据库名称。也可以改为选择使用带有 -C
选项的连接字符串指定该数据库。(必需)

-ed  为 SQL 缓存依赖项启用数据库。

-dd  为 SQL 缓存依赖项禁用数据库。

-et  为 SQL 缓存依赖项启用表。需要 -t 选项。

-dt  为 SQL 缓存依赖项禁用表。需要 -t 选项。

-t <table>  要为 SQL 缓存依赖项启用或禁用的表的名称。需要 -et 或 -dt 选项。

-lt  列出为 SQL 缓存依赖项启用的所有表。

-- 会话状态选项 --

-ssadd   添加对 SQLServer 模式会话状态的支持。

-ssremove   移除对 SQLServer 模式会话状态的支持。

-sstype t|p|c  会话状态支持的类型:

           t: 临时。会话状态数据存储在“tempdb”数据库中。用于管理会话的存储过程安装在“ASPState”数据库中。如果重新启动
           SQL,则不保持数据。(默认)

            p: 保持。会话状态数据和存储过程都存储在“ASPState”数据库中。

            c: 自定义。会话状态数据和存储过程都存储在自定义数据库中。必须指定该数据库的名称。

-d <database>     -sstype 为“c”时使用的自定义数据库的名称。

总结:使用Sqlserver模式保存Session:即在命令行中输入C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
aspnet_regsql.exe -C "Data Source=.;Integrated Security=True" -ssadd -sstype p

即可创建ASPState数据库保存Session状态。


感谢MSDN提供的资料,感谢广大网友的辛勤探索!


转载请注明出处:http://blog.csdn.net/fwj380891124

你可能感兴趣的:(如何使用SQLServer Session)