[项目过程中所遇到的各种问题记录]部署篇——项目部署过程中那些纠结的问题-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个用户角色。

 

话说,各位看过的朋友如果觉得本文对您还有点用,或者觉得本文还有价值的话,麻烦将鼠标移到【推荐】上,帮我点击下,非常非常的感谢!

 

项目过程中所遇到的各种问题记录

编辑器篇:

        FCKeditor相关知识及各种常见使用问题

        FCKeditor自定义上传路径配置

        使用FCKeditor生成静态分页HTML

图表篇:

        有关MSChart的一些小技巧

        asp.net上不错的图表选择—FunsionCharts

ORM篇:

        使用NHibernate配置对象实体的一些小问题

        有关NHibernate查询封装

部署篇:

        项目部署过程中那些纠结的问题-IIS

        项目部署过程中那些纠结的问题-SQLServer

工具篇:

        .NET开发时常用的工具类库

posted @ 2010-12-24 09:25  kyo-yo  阅读(1157)  评论(2编辑  收藏  举报