轉載:http://jopwu.blog.163.com/blog/static/73025412011112114850183/
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狀態。
以下內容在2013年的蘭州監測項目中用到:
配置在hazelz資料庫上
工具路徑: C:\Windows\Microsoft.NET\Framework\v4.0.30319
aspnet_regsql.exe -C "Data Source=SDWM-20130311QK\SQLEXPRESS;Integrated security=true" -ssadd -sstype c -d "hazelz"