知识大全 用SQL Server保持会话状态

Posted 状态

篇首语:生活的理想,就是为了理想的生活本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用SQL Server保持会话状态相关的知识,希望对你有一定的参考价值。

用SQL Server保持会话状态  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在调用服务器后要继续在服务器中保留数据通常很难 你可以用SQL Server来进行会话状态管理(用户会话数据) 以下教你怎样用它来进行管理     在页面开发中 在服务器调用里保留数据是一个常见的不好解决的难题 你也许需要为你的应用程序或特殊用户的会话保存信息 存储这样的数据被称为状态管理 ASP NET为你提供了一些方法 这些方法能让你通过各种途径完成这一任务 这包括将数据存储在一个状态服务器的内存中 或者通过Microsoft SQL服务器 本文主要讨论了用SQL服务器来进行会话状态管理(用户会话数据)      为什么需要进行状态管理?    在设置和使用SQL Server之前 你也许会想有必要这样做吗?页面开发还有更让人烦恼的一面 那就是HTTP是一项无状态协议 它的运行是断断续续的 每个页面都会按接受到的命令运行 命令执行完以后 所有用过的数据都会丢失 服务器不会存储关于那些调用的任何记忆 也就是说 它不会存储相关记忆 除非有特殊的指令让它存储      会话变量    以下是使用会话变量的格式     C#: Session[ variable_name ] = value;  VB NET: Session( variable_name ) = value    当这个值被存储了 用户就可以在整个会话中使用它了 会话结束后 变量也就丢失了 你也可以使用回归状态管理(这是我们下一次要讨论的话题)来处理这些丢失的值      ASP NET状态管理    ASP NET允许你通过一个状态服务器或SQL服务器将会话数据存储在内存中 存储的位置由应用程序的页面配置文件来决定 状态管理选项是在系统中的sessionState元素中 页面元素是在状态管理中进行设置的 以下的示例显示了怎样使用SQL Server   <sessionState  mode= SQLServer   stateConnectionString= tcpip= :   sqlConnectionString= data source= ;user id=username;password=password   cookieless= false   timeout= />    注意 这些元素的名称和属性都要区分大小写 以下是该模式属性的各种可能值     InProc 存储在内存中 它的运行速度最快 但是当ASP NET程序重复运行的时候所有的数据都会丢失     SQL Server 将数据存储在SQL Server中 由于它与页面服务器是分离的 因此它是最可信的 连接字符串会按照正常的顺序排列 以连接到SQL Server数据库中     StateServer 将数据存储在一个独立的页面服务器上(IIS) 这一选项利用了stateConnectionString这一属性     所有的选项都使用保留 cookieless属性会告知用户那些cookies是被存储在内存(虚拟的)中还是保留在Querystring/URL(真实的)中 timeout属性则会告知用户会话变量被存储的时间(没有接受任何命令)的长短      设置 SQL Server    SQL Server需要一个特殊的数据库来进行状态管理 幸好 NET Framework安装包括了必备的文件 这些文件可以让它启动并立即运行 以下的脚本都安装了     InstallPersistSqlState sql 包括建立数据库的脚本 这个数据库是持久状态管理中要用到的     UninstallPersistSqlState sql 包括卸载持久状态管理的脚本     UninstallSqlState sql 包括卸载状态管理的脚本     这些脚本可能会从Query Analyzer中或通过使用isql exe命令来运行 要进行状态管理的话 需要运行InstallSqlState sql 脚本的结果是由一个名为ASPState的数据库创建出来的 它会处理会话变量的存储和保留问题 你可以通过一个简单的例子来测试其功能性     下面的C#例子包括了将一个含有会话变量的页面格式变成另一种可以显示值的页面格式   <%@ Page language= c# %>    <!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN >    <HTML><HEAD>    <title>WebForm </title>    <meta name= GENERATOR Content= Microsoft Visual Studio NET >    <meta name= CODE_LANGUAGE Content= C# >    </HEAD>    <body MS_POSITIONING= GridLayout >    <script language= C# runat= server >    private void Page_Load(object sender System EventArgs e)     Session[ FirstName ] = Tony ;    Session[ LastName ] = Patton ;    Session[ Site ] = ;    Response Redirect( WebForm aspx true);        </script></body></HTML>    Here s the second Web form:    <%@ Page language= c# %>    <!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN >    <HTML><HEAD><title>WebForm </title></HEAD>    <body>    <script language= C# runat= server >    private readonly string newLine = <br> ;    private void Page_Load(object sender System EventArgs e)     Response Write(Session[ FirstName ] ToString() + );    Response Write(Session[ LastName ] ToString() + newLine);    Response Write(Session[ Site ] ToString() + newLine);        </script></body></HTML>    如果你是用VB NET 进行开发 页面的格式就是下面这样的   <%@ Page Language= vb %>    <!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN >    <><head>    <title>WebForm </title></head><body>    <script language= vb runat= server >    Private Sub Page_Load(sender As Object e As System EventArgs)    Session( FirstName ) = Tony     Session( LastName ) = Patton     Session( Site ) =     Response Redirect( WebForm aspx true)    End Sub    </script></body></>    Here s the Page_Load event on the second form:    <%@ Page Language= vb %>    <!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN >    <><head>    <title>WebForm </title></head><body>    <script language= vb runat= server >    Private ReadOnly newLine As String = <br>     Private Sub Page_Load(sender As Object e As System EventArgs)    Response Write(Session( FirstName ) ToString() + )    Response Write(Session( LastName ) ToString() + newLine)    Response Write(Session( Site ) ToString() + newLine)    End Sub    </script></body></>    关于卸载状态管理功能的一个注释 微软建议在执行卸载脚本以前先取消World Wide Web Publishing服务 你可以在命令行输入net stop w svc命令来完成这一步 你可以用net start w svc命令重启机器     你可以在SQL Server中检测tempdb数据库 这样你就可以毫不费力地看到会话管理属性是怎样运行的 它使用两个临时表格来进行会话管理 ASPStateTempApplications和 ASPStateTempSessions      一种可行的选择    如果你担心会由于 Web服务器停止运行而失去会话状态数据的话 SQL Server是一种很好的选择 不过由于数据库的交互作用 它的性能也许会受些影响 但是它还是最值得的信赖的而又可行的方法 cha138/Article/program/SQLServer/201311/21981

相关参考

知识大全 用SQL Storage Compress压缩SQL Server数据库文件

用SQLStorageCompress压缩SQLServer数据库文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶

知识大全 用SQL Server查询累计值

用SQLServer查询累计值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  有这样一个要求它要

知识大全 用Java连接MS SQL Server

用Java连接MSSQLServer  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用jdbc

知识大全 用SQL Server事件探查器创建跟踪

用SQLServer事件探查器创建跟踪  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQLSe

知识大全 用并行查询让SQL Server加速运行

用并行查询让SQLServer加速运行  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  并行查询其

知识大全 用MySQL实现SQL Server的Sp

用MySQL实现SQLServer的Sp  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  从MyS

知识大全 用DELPHI编程访问SQL SERVER数据库

用DELPHI编程访问SQLSERVER数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  D

知识大全 用OleDbCommand更新SQL Server的二进制文件

用OleDbCommand更新SQLServer的二进制文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 用ASP调用SQL Server的视图和存储过程

用ASP调用SQLServer的视图和存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 SQL Server中巧用另类写法代替Like语句

SQLServer中巧用另类写法代替Like语句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!