最新IBM水货笔记本价格,详细点击进入

查看完整版本: ASP.NET WEB群集使用SQL Server保存状态

风舞残阳 2008-4-2 13:43

ASP.NET WEB群集使用SQL Server保存状态

参考以下文章


Using[wiki]SQL[/wiki]Serverforasp.netsessionstate


ASP.NETSessionStateManagementUsingSQLServer




以下是我的安装过程和简要说明:


一、MSSQLServer安装及设置


1、按照默认设置安装MSSQLServer2000简体中文企业版,注意用户验证采用混合验证方式,sa用户密码不能太简单。并将SQLServer[wiki]数据库[/wiki]文件存放目录设置为D盘,SQLServer[wiki]系统[/wiki]文件安装到默认目录中。
2、安装MSSQLServer2000SP3补丁[wiki]程序[/wiki],确保SQLServer数据库的[wiki]安全[/wiki]。

二、状态服务数据库安装及设置


创建数据库
%26#8226;启动“SQL查询分析器”,链接到状态[wiki]服务器[/wiki]上安装的SQLServer数据库。
%26#8226;打开并执行InstallSqlState.sql脚本文件。默认情况下,该文件在systemdrive\Windows\Microsoft.NET\Framework\version\目录下,在本服务器中,脚本文件位置为:C:\Windows\Microsoft.NET\Framework\v1.1.4322\InstallSqlState.sql
%26#8226;如果采用信任链接(trustedconnections)方式链接到数据库(我们不采用该方式),那么在创建状态数据库以后你必须修改数据库的拥有者(ownnership)。在“SQL查询分析器”中,运行:


useASPState
execsp_changedbowner'sa','true'

%26#8226;如果你使用SQL验证方式链接数据库并进行访问(我们采用该方式),那么需要为SessionState创建一个SQL用户,它必须拥有的最小权限为:能够执行ASPState数据库中的存储过程。
如果你不觉得危险,可以将该用户设置为ASPState数据库的dbo。
创建用户aspnetstate,将该用户设置为ASPState数据库和tempdb数据库的dbo_owner角色。

修复bug
由于InstallSqlState.sql安装在SQLServer2000SP3上存在访问权限的bug,因此需要进行一些修正,请按照下面的说明进行。
1、在“SQL查询分析器”中运行下列语句,设置cross-databaseownershipchaining


usemaster
go
EXECsp_configure'CrossDBOwnershipChaining','0';RECONFIGURE
Go

2、重新启动SQLServer,在“SQL查询分析器”中,执行下列命令


usemaster
go
EXECsp_dboption'ASPState','dbchaining','true'
Go
三、WEB服务器配置
修改WEB服务器上Web.Config中的相应配置

%26lt;sessionStatemode="SQLServer"stateCsqlC
cookieless="false"timeout="40"/%26gt;
其中,pwd用真实的密码替换。



另外的bug:
我在实际安装过程中,按照以上步骤可以成功,但是状态服务器重新启动以后,会出现用户没有权限访问tmpdb数据库的错误,错误[wiki]信息[/wiki]如下:
SELECTpermissiondeniedon[wiki]object[/wiki]'ASPStateTempApplications',database
'tempdb',owner'dbo'.
INSERTpermissiondeniedonobject'ASPStateTempApplications',database
'tempdb',owner'dbo'.
SELECTpermissiondeniedonobject'ASPStateTempApplications',database
'tempdb',owner'dbo'.


经检查,发现每次重新启动状态服务器以后,tmpdb数据库的dbo帐号丢失,经过向[wiki]微软[/wiki]咨询,得到的答复是“tmpdb数据库是会在每一次重启后清除dbo帐号”,


因此暂时的解决办法是:
将sqlserverconnnectionstring中验证的帐号,给它在sqlserver中加上systemadministrator的权限.这样无论是否重新启动,我们都由权限去访问tempdb中的那两个表。这样做存在一些安全隐患,请注意系统的安全。
页: [1]
查看完整版本: ASP.NET WEB群集使用SQL Server保存状态