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

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

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

需求

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

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

設定 ASP.NET SQL Server會話狀態的 SQL Server

下列步驟說明如何執行InstallSqlState.sqlUninstallSqlState.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.sqlUninstallSqlState.sql腳本檔案來設定 ASP.NET SQL Server模式會話狀態管理時。 這些檔案預設會將 ASPStateTempSessionsASPStateTempApplications 數據表新增至 SQL Server 中的 tempdb 資料庫。 此外,如果您重新啟動 SQL Server,則會遺失儲存在 ASPStateTempSessionsASPStateTempApplications 數據表中的會話狀態數據。 如需如何執行替代腳本以設定持續性 SQL Server 工作階段狀態管理的詳細資訊,讓會話資料不會在您重新啟動伺服器時遺失。

參考資料

會話狀態