ASP.NET WEB群集使用SQL Server儲存狀態

來源:互聯網
上載者:User

參考以下文章

Using SQL Server for asp.net session state

ASP.NET Session State Management Using SQL Server

 

以下是我的安裝過程和簡要說明:

一、 MS SQL Server安裝及設定

1、 按照預設設定安裝MS SQL Server 2000簡體中文企業版,注意使用者驗證採用混合驗證方式,sa使用者密碼不能太簡單。並將SQL Server資料庫檔案存放目錄設定為D盤,SQL Server系統檔案安裝到預設目錄中。
2、 安裝MS SQL Server 2000 SP3補丁程式,確保SQL Server資料庫的安全。

二、 狀態服務資料庫安裝及設定

建立資料庫
• 啟動“SQL查詢分析器”,連結到狀態伺服器上安裝的SQL Server資料庫。
• 開啟並執行InstallSqlState.sql指令檔。預設情況下,該檔案在system drive\Windows\Microsoft.NET\Framework\version\ 目錄下,在本伺服器中,指令檔位置為:C:\Windows\Microsoft.NET\Framework\v1.1.4322\InstallSqlState.sql
• 如果採用信任鏈結接(trusted connections)方式連結到資料庫(我們不採用該方式),那麼在建立狀態資料庫以後你必須修改資料庫的擁有者(ownnership)。在“SQL查詢分析器”中,運行:

use ASPState
exec sp_changedbowner 'sa','true'

• 如果你使用SQL驗證方式連結資料庫並進行訪問(我們採用該方式),那麼需要為Session State建立一個SQL使用者,它必須擁有的最小許可權為:能夠執行ASPState資料庫中的預存程序。
如果你不覺得危險,可以將該使用者佈建為ASPState資料庫的dbo。
建立使用者 aspnetstate ,將該使用者佈建為ASPState資料庫和tempdb 資料庫的dbo_owner角色。

修複bug
由於InstallSqlState.sql安裝在SQL Server 2000 SP3上存在存取權限的bug,因此需要進行一些修正,請按照下面的說明進行。
1、在“SQL查詢分析器”中運行下列語句,設定cross-database ownership chaining

use master
go
EXEC sp_configure 'Cross DB Ownership Chaining', '0'; RECONFIGURE
Go

2、重新啟動SQL Server,在“SQL查詢分析器”中,執行下列命令

use master
go
EXEC sp_dboption 'ASPState' , 'db chaining', 'true'
Go

三、 WEB伺服器配置
 修改WEB伺服器上Web.Config中的相應配置

<sessionState  mode="SQLServer" stateConnectionString="tcpip=192.168.1.238:42424"  sqlConnectionString="data source=192.168.1.238;user id=aspnetstate;password=pwd"
cookieless="false" timeout="40" />

其中,pwd用真實的密碼替換。

另外的bug:
我在實際安裝過程中,按照以上步驟可以成功,但是狀態伺服器重新啟動以後,會出現使用者沒有許可權訪問tmpdb資料庫的錯誤,錯誤資訊如下:
SELECT permission denied on object 'ASPStateTempApplications', database
'tempdb', owner 'dbo'.
INSERT permission denied on object 'ASPStateTempApplications', database
'tempdb', owner 'dbo'.
SELECT permission denied on object 'ASPStateTempApplications', database
'tempdb', owner 'dbo'.

經檢查,發現每次重新啟動狀態伺服器以後,tmpdb資料庫的dbo帳號丟失,經過向微軟諮詢,得到的回覆是“tmpdb資料庫是會在每一次重啟後清除dbo帳號”,

因此暫時的解決辦法是:
將sqlserver connnectionstring 中驗證的帳號,給它在sqlserver中加上system administrator的許可權. 這樣無論是否重新啟動,我們都由許可權去訪問tempdb中的那兩個表。這樣做存在一些安全隱患,請注意系統的安全。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.