SQLServer
(1).net2.0以上,建議不要使用aspnet_regsql.exe工具,而應(yīng)該使用命令行,如aspnet_regsql -C"Data Source=.;Integrated Security=True" -ssadd -sstype c -dSessionStateDB
原因是使用工具容易產(chǎn)生錯誤:SQL 服務(wù)器上未安裝 ASP.NET 2.0 版會話狀態(tài),因此無法使用 SQL Server。請安裝 ASP.NET 會話狀態(tài) SQL Server 2.0 版或更高版本。
此時的配置文件應(yīng)該是如下格式:<sessionState mode="SQLServer"allowCustomSqlDatabase="true" sqlConnectionString="datasource=VM2008;initial catalog=SessionStateDB;userid=sa;password=ioffice" timeout="30" />
(2)當(dāng)機(jī)器上同時存在.net1.1和.net2.0的時候,建議使用.net2.0的腳本。
(3)SQLServer模式容易帶來效率上的開銷,每個頁面都會對數(shù)據(jù)庫進(jìn)行讀寫2次操作。解決辦法在web.config文件中的system.web下的page修改屬性,如<pages enableSessionState="ReadOnly"> 或者<pagesenableSessionState="False">,在ioffice中一般使用readonly。同時把需要改寫session的頁面的EnableSessionState="True",一般是登錄登出頁面。
aspnet_regsql.exe 參數(shù)解析
-- 常規(guī)選項(xiàng) --
-? 顯示此幫助文本。
-W 向?qū)J健?如果未指定其他參數(shù),則默認(rèn)為此模式。)
-- SQL 連接選項(xiàng) --
-S <server> 要使用的 SQL Server 實(shí)例(SQL Server 7.0 及更高版本)。
-U <login id> 用于進(jìn)行身份驗(yàn)證的 SQL Server 用戶名;需要 -P 選項(xiàng)。
-P <password> 進(jìn)行身份驗(yàn)證時使用的 SQL Server 密碼;需要 -U 選項(xiàng)。
-E 使用當(dāng)前 Windows 憑據(jù)進(jìn)行身份驗(yàn)證。
-C <connection string>
連接字符串。不指定用戶名、密碼和服務(wù)器名稱,而是指定 SQL Server
連接字符串。該字符串不得包含數(shù)據(jù)庫名稱,除非另行指定。
-sqlexportonly <filename>
生成用于添加或移除指定的功能、但不執(zhí)行實(shí)際操作的 SQL 腳本文件??膳c以下選項(xiàng)一起使用: -A、-R、-ssadd 和 -ssremove。
-- 應(yīng)用程序服務(wù)選項(xiàng) --
-A all|m|r|p|c|w 添加對某個功能的支持??赏瑫r指定多個值。例如:
-A mp
-A m -A p
all: 所有功能
m: 成員資格
r: 角色管理器
p: 配置文件
c: 個性化設(shè)置
w: SQL Web 事件提供程序
-R all|m|r|p|c|w 移除對一個功能的支持??赏瑫r指定多個值。例如:
-R mp
-R m -R p
all : 所有功能以及由這些功能共享的所有公共表和存儲過程
m: 成員資格
r: 角色管理器
p: 配置文件
c: 個性化設(shè)置
w: SQL Web 事件提供程序
-d <database> 用于應(yīng)用程序服務(wù)的數(shù)據(jù)庫名稱。如果未指定任何數(shù)據(jù)庫名稱,則使用默認(rèn)數(shù)據(jù)庫“aspnetdb”。
-Q 安靜模式;移除功能時不顯示確認(rèn)對話框。
-- SQL 緩存依賴項(xiàng)選項(xiàng)(用于 SQL 7.0 和 2000) --
-d <database> 用于 SQL 7.0 和 SQL 2000 中的 SQL 緩存依賴項(xiàng)的數(shù)據(jù)庫名稱。也可以改為選擇使用帶有 -C
選項(xiàng)的連接字符串指定該數(shù)據(jù)庫。(必需)
-ed 為 SQL 緩存依賴項(xiàng)啟用數(shù)據(jù)庫。
-dd 為 SQL 緩存依賴項(xiàng)禁用數(shù)據(jù)庫。
-et 為 SQL 緩存依賴項(xiàng)啟用表。需要 -t 選項(xiàng)。
-dt 為 SQL 緩存依賴項(xiàng)禁用表。需要 -t 選項(xiàng)。
-t <table> 要為 SQL 緩存依賴項(xiàng)啟用或禁用的表的名稱。需要 -et 或 -dt 選項(xiàng)。
-lt 列出為 SQL 緩存依賴項(xiàng)啟用的所有表。
-- 會話狀態(tài)選項(xiàng) --
-ssadd 添加對 SQLServer 模式會話狀態(tài)的支持。
-ssremove 移除對 SQLServer 模式會話狀態(tài)的支持。
-sstype t|p|c 會話狀態(tài)支持的類型:
t: 臨時。會話狀態(tài)數(shù)據(jù)存儲在“tempdb”數(shù)據(jù)庫中。用于管理會話的存儲過程安裝在“ASPState”數(shù)據(jù)庫中。如果重新啟動
SQL,則不保持?jǐn)?shù)據(jù)。(默認(rèn))
p: 保持。會話狀態(tài)數(shù)據(jù)和存儲過程都存儲在“ASPState”數(shù)據(jù)庫中。
c: 自定義。會話狀態(tài)數(shù)據(jù)和存儲過程都存儲在自定義數(shù)據(jù)庫中。必須指定該數(shù)據(jù)庫的名稱。
-d <database> -sstype 為“c”時使用的自定義數(shù)據(jù)庫的名稱。
總結(jié):使用Sqlserver模式保存Session:即在命令行中輸入C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
aspnet_regsql.exe -C "Data Source=.;Integrated Security=True" -ssadd -sstype p
即可創(chuàng)建ASPState數(shù)據(jù)庫保存Session狀態(tài)。