什么是SQL会话状态的生命周期?

时间:2015-05-18 06:34:03

标签: sql-server asp.net-mvc iis web-farm

我搜索了SQL会话状态生命周期以及它是如何工作的,但我没有找到任何网站解释它。 我找到的只是如何配置它。

我尝试过:我创建了两个服务器的Web场并在其上应用SQL会话,但我不知道SQL会话是如何工作的? 来自用户的每个请求都需要从db读取他的会话ID吗?
.Net事件如何处理SQL会话? SQL会话是暂时保存在内存中吗?

1 个答案:

答案 0 :(得分:1)

我搜索了SQL会话,

SQL会话是并发的,这里是关于SQL会话如何工作的说明: https://msdn.microsoft.com/en-us/library/aa478952.aspx

为了测试并发性,我使MVC应用程序使用SQL会话,该应用程序包含两个控制器:Home,Account。 我应用了两个试验来测试并发性:

试用版1:两个控制器访问SQL会话。

•Made Home控制器包含写入SQL会话的操作,然后睡眠30秒,如下所示: enter image description here

•Made Account控制器包含从SQL会话中读取的操作,如下所示: enter image description here

•启动应用程序并打开两个选项卡:主页的第一个选项卡和帐户的第二个选项卡。当我打开第二个标签时,它打开了!而不是等待第一个标签结束他的请求,并且ViewBag.Name具有空值;发生这种情况是因为直到现在还没有在DB上保存SQL会话。

•在家庭控制Web请求结束后保存在DB上的会话状态,然后我刷新tab1然后tab2并注意标签2等待标签1结束他的Web请求。

试用版2:一个控制器访问会话。

•在试用版1上使用Home Controller代码。

•修改帐户控制器并从会话中删除读取的代码,如下所示:  enter image description here

•我打开两个标签:标签1用于主页,标签2用于帐户;选项卡2等待标签1结束他的网络请求。

•要使标签2不等标签1,我将帐户控制器会话状态禁用,如下所示: enter image description here

对于读写SQL会话,ASP.NET辅助进程在每个Web请求结束时将属于客户机会话集合的对象存储在SQL Server中。

我使用SQL profiler工具跟踪SQL会话的读/写时间。