設定 SQL Server 以儲存 ASP.NET 工作階段狀態

本文示範如何設定 sql Server Microsoft ASP.NET SQL Server 模式會話狀態管理。

原始產品版本: ASP.NET
原始 KB 編號: 317604

需求

下列清單概述您需要的建議硬體、軟體、網路基礎結構和 Service Pack:

  • Windows
  • .NET Framework
  • Internet Information Services (IIS)
  • SQL Server

設定 SQL Server ASP.NET SQL Server 工作階段狀態

下列步驟說明如何執行 InstallSqlState.sql 和 UninstallSqlState.sql 腳本檔案,以設定 SQL Server 模式會話狀態管理。

  1. 在 [SQL 查詢分析器] 的 [ 檔案 ] 功能表上,選取 [ 開啟]。

  2. 在 [ 開啟查詢檔案 ] 對話框中,流覽至 InstallSqlState.sql 腳本檔案,然後選取 [ 開啟]。 根據預設, InstallSqlState.sql 位於下列其中一個資料夾中:

    • system drive\WINNT\Microsoft.NET\Framework\version\
    • system drive\Windows\Microsoft.NET\Framework\version\
  3. 在 SQL 查詢分析器中開啟InstallSqlState.sql之後,選取 [查詢] 功能表上的 [執行] 以執行腳本。

  4. 執行 UninstallSqlState.sql 腳本檔案以卸載 SQL Server 模式工作階段狀態管理組態之前,您必須停止 w3svc 程式。 若要這樣做,請遵循下列步驟:

    1. 在 [Windows 開始] 選單上,選取 [執行],輸入 cmd,然後選取 [確定] 以開啟命令提示字元。
    2. 在命令提示字元中,輸入 net stop w3svc。 您會收到確認 w3svc 進程已停止。
  5. 在 [SQL 查詢分析器] 的 [ 檔案 ] 功能表上,選取 [ 開啟]。

  6. 在 [ 開啟查詢檔案 ] 對話框中,流覽至 UninstallSqlState.sql 腳本檔案,然後選取 [ 開啟]。 根據預設, UninstallSqlState.sql 位於下列其中一個資料夾中:

    • system drive\WINNT\Microsoft.NET\Framework\version\
    • system drive\Windows\Microsoft.NET\Framework\version\
  7. 在 SQL 查詢分析器中開啟UninstallSqlState.sql之後,選取 [查詢] 功能表上的 [執行] 以執行腳本。

  8. 卸載 SQL Server 模式工作狀態管理組態之後,您必須重新啟動 w3svc 服務。 若要重新啟動 w3svc 行程,請在命令提示字元輸入 net start w3svc 。

修改應用程式的 Web.config 檔案

若要實作 ASP.NET SQL Server 模式會話狀態管理,您必須修改 <sessionState> 應用程式的 Web.config 檔案元素,如下所示:

  1. 將 專案的mode屬性 <sessionState> 設定為 SQLServer ,表示會話狀態儲存在 SQL Server 中。

  2. sqlConnectionString設定 屬性以指定 SQL Server 的 連接字串。 例如:

    sqlConnectionString="data source=MySQLServer;user id=<username>;password=<strongpassword>"
    

    注意

    使用者名稱<>必須具有許可權,才能在資料庫上執行這項作業。

修改過的 <sessionState> 項目應該如下所示:

<sessionState
    mode="SQLServer"
    sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
    cookieless="false"
    timeout="20"
/>

注意

當您指定 <sessionState> 元素和相關聯的屬性值時,請確定您使用正確的大小寫。 此程式代碼區分大小寫。

疑難排解

  • 如果您在執行 UninstallSqlState.sql 腳本檔案之前未停止 w3svc 進程,您會收到下列錯誤訊息:

    無法卸除資料庫 『ASPState』,因為它目前正在使用中

  • 如果 ASPStateTempSessions 數據表中的項目在相關工作階段到期後未移除,請確定 SQL Server 代理程式正在執行。 您可以透過透過 SQL Server 中作業排程的預存程式來實作這項功能。 SQL Server 代理程式會管理這些作業。

  • 當您使用預設 InstallSqlState.sql 和 UninstallSqlState.sql 腳本檔案來設定 SQL Server 模式會話狀態管理 ASP.NET。 這些檔案預設會將 ASPStateTempSessions 和 ASPStateTempApplications 數據表新增至 SQL Server 中的 tempdb 資料庫。 此外,如果您重新啟動 SQL Server,就會遺失儲存在 ASPStateTempSessions 和 ASPStateTempApplications 數據表中的會話狀態數據。 如需如何執行替代腳本以設定持續性 SQL Server 工作階段狀態管理的詳細資訊,以便在重新啟動伺服器時不會遺失工作階段數據。

參考資料

會話狀態