[项目过程中所遇到的各种问题记录]部署篇——项目部署过程中那些纠结的问题-SQLServer
前一篇文章说了些有关IIS的,这篇则是说SQLServer的,相比IIS来说,SQLServer的配置过程中问题就少了许多,而且都比较有针对性,下面开始记录:
注:由于实际项目的开发都是基于SQL2000的,所以下面所说的问题也都是基于SQL2000的。
一、SESSION相关的数据库配置
由于客户的服务器是都是全新的,所以需要帮客户的服务器安装一系列的环境,SQL2000也是必不可少,而由于在项目中采用了将SESSION保存到SQLServer中,配置如下:
<sessionState mode="SQLServer" sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" timeout="30"/>
所以相对应的,需要在数据库中也需要进行相应的配置,步骤如下:
1、创建ASPState数据库,打开VS的命令提示工具,使用aspnet_regsql.exe –ssadd -E(有关此命令相关帮助可以使用“aspnet_regsql.exe -?”查看或者直接查阅MSDN,这边不详细介绍)
2、由于我们所开发的网站都在IIS上运行,而IIS上所运行的程序默认是没有权限访问ASPState数据库的,所以需要在ASPState数据库中添加IIS_WPG及IUser_计算机名2个用户角色,并设置其为db_owner。
至此理论上来说应该是解决了问题,实则不然,当运行网站的时候,用到session的地方还是一样会出错,其原因就是session会临时保存在tempdb数据库,所以同样需要为其加上IIS_WPG及IUser_计算机名2个用户角色。
同时附上有关session状态服务及丢失的解决方案的文章:ASP.NET状态服务及session丢失问题解决方案总结【转载】
二、数据库权限相关
在上面的问题中说到tempdb数据库,其主要作用如下(摘自MSDN):
tempdb 系统数据库是一个全局资源,可供连接到 SQL Server 实例的所有用户使用,并可用于保存下列各项:
1、显式创建的临时用户对象,例如全局或局部临时表、临时存储过程、表变量或游标。
2、SQL Server 数据库引擎创建的内部对象,例如,用于存储假脱机或排序的中间结果的工作表。
3、由使用已提交读(使用行版本控制隔离或快照隔离事务)的数据库中数据修改事务生成的行版本。
4、由数据修改事务为实现联机索引操作、多个活动的结果集 (MARS) 以及 AFTER 触发器等功能而生成的行版本。
tempdb 中的操作是最小日志记录操作。这将使事务产生回滚。每次启动 SQL Server 时都会重新创建 tempdb,从而在系统启动时总是保持一个干净的数据库副本。在断开联接时会自动删除临时表和存储过程,并且在系统关闭后没有活动连接。因此 tempdb 中不会有什么内容从一个 SQL Server 会话保存到另一个会话。不允许对 tempdb 进行备份和还原操作。
其中有句话很关键:每次启动 SQL Server 时都会重新创建 tempdb,所以这个就是引发了一个不大不小的问题,就是当服务器重启或者数据库重启后原先为tempdb添加的用户角色就会消失(由于重新创建了tempdb库),所以此时再访问网站则会发现session出现了错误,需要重新为其加上IIS_WPG及IUser_计算机名2个用户角色。
话说,各位看过的朋友如果觉得本文对您还有点用,或者觉得本文还有价值的话,麻烦将鼠标移到【推荐】上,帮我点击下,非常非常的感谢!
项目过程中所遇到的各种问题记录
编辑器篇:
图表篇:
ORM篇:
部署篇:
工具篇:
出处:http://kyo-yo.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。