Rootop 服务器运维与web架构

2012-01-09
发表者 Venus
暂无评论

SQL Server 2008R2 数据库降级为 SQL Server2005 (sql2005还原sql2008数据库备份)

       把数据库版本为sql2008以上的数据库备份文件在sql2005中还原的时候会遇到报错:
设备’E:\2008\DB\NQ.bak’ 上的媒体簇的结构不正确。SQL Server无法处理此媒体簇。 错误3241。

其实这就是老版本的数据库不兼容新版本数据库,可以笼统的理解为各版本的数据结构不一样,导致无法还原。
想了好多办法都没好方法,之前是通过导出为SQL脚本(SQL2008 ,R2版中没找到这个功能),但是数据没导出来只导出表结构。
最后解决方法是:
       安装了一台64位Windows Server 2008 R2 ,然后安装SQL 2005 再安装SQL 2008 R2,最后通过sql08R2 任务-导出数据导到sql2005中的同名数据库,这才解决。

SQL2005中还原报错信息:

以下在SQL2008R2数据库引擎中操作:

(先在SQL2005中新建个同名数据库,就可以选择导入到哪个数据库中)

然后根据提示,完成。

2012-01-06
发表者 Venus
暂无评论

SQL2005 用户 ‘NQ’ 登录失败。该用户与可信 SQL Server 连接无关联。

Server Error in ‘/’ Application.

________________________________________

用户 ‘NQ’ 登录失败。该用户与可信 SQL Server 连接无关联。

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: 用户 ‘NQ’ 登录失败。该用户与可信 SQL Server 连接无关联。

登陆SQL引擎,采用windows身份验证登陆后修改 服务器身份验证 为: SQL Server和windows身份验证模式

切忌重启MSSQLSERVER服务生效

2012-01-05
发表者 Venus
暂无评论

深信服AD-M5500中代理上网、web服务器中请求源IP问题。

        环境为:AD-M5500 系统版本为3.0,负载均衡器中配置了代理上网,服务器、AD的网关都为网络出口设备内网IP,比如192.168.10.1.

在客户端web请求后,服务器中的日志请求源IP都是AD负载器的IP地址,比如192.168.10.20.不能显示真实的客户端IP。为了解决这个问题,修改第二台服务器的网关为AD的WAN口IP,即192.168.10.20。会话数据发生错误,此时远程登陆失去连接。通过第一台服务器登陆到第二台服务器后继续操作。然后修改AD,禁用 代理上网 ,发现第二台服务器的请求来源变成了客户端的真实IP,但是第二台服务器自己访问自己访问不了(通过域名,如:curl -I www.rootop.org),没找到原因。如果会话分发到第一台服务器,第一台服务器的网关还是以前的出口设备IP,192.168.10.1,但是这个请求就得不到响应,还是因为会话发生错误。

图解:

pc:客户端  fw:防火墙 ad:负载器  sw:二层交换机

pc -> fw ->ad ->s2   s2网关为192.168.10.20

客户端发起目端口为80的会话到防火墙映射到ad中,然后分配到s2服务器(192.168.10.11)。http请求没问题,但是ssh远程登陆失去连接:客户端发起目的端口为22的会话到防火墙映射到s2中,s2通过网关ad再发送到防火墙,源IP发生改变,导致会话数据发生错误。

同理s1的http应用实际上是运行的,但是当请求发送到s1时,s1的数据无法返回到客户端。

最终的解决办法就是:升级ad系统版本到3.6版本以上,有一个功能叫做“传递客户端IP到服务器”。就可以解决。

2012-01-05
发表者 Venus
暂无评论

产生阻滞的问题: 运行此安装程序之前,必须安装 32 位 Windows 映像处理组件(WIC)。

在Server2003 SP2 R2企业版中安装DotNet4.0时候遇到个问题,问题如下:

提示:

产生阻滞的问题:

运行此安装程序之前,必须安装 32 位 Windows 映像处理组件(WIC)。请访问 <A HREF=”http://go.microsoft.com/fwlink/?

LinkId=162643&clcid=0x409″>Microsoft 下载中心</A>,安装 WIC,然后重新运行此安装程序。

解决方法: 安装wic

32位wic下载地址:
http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=8e011506-6307-445b-b950-215def45ddd8&displaylang=zh-cn

支持的操作系统:Windows Server 2003;Windows Server 2003 R2 Datacenter Edition (32-Bit x86);Windows Server 2003 R2

Enterprise Edition (32-Bit x86);Windows Server 2003 R2 Standard Edition (32-bit x86);Windows XP Service Pack 2

64位wic下载地址:
http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=F64654AC-6E26-41D9-A90A-0E7783B864EE

        安装完成后再装dotnet4.0没问题了。

        Windows 图像组件 (WIC) 提供启用 WIC 功能的应用程序,可显示并编辑安装有兼容 WIC 编解码器的任何一种图像格式,还能读写图像文件中的元数据。

2012-01-04
发表者 Venus
暂无评论

AcceptPathInfo

参考apache手册:

https://www.rootop.org/ApacheManual/Apache2.2_zh_CN/mod/core.html#acceptpathinfo

       如何设置apache在url中能让一个以文件名为目录及跟随多余路径信息请求的地址正常访问?比如/pp.php/,某些情况下apache会认为/pp.php/是一个目录,从而出现404错误。

       开始以为是伪静态的问题,后来确定是 AcceptPathInfo 这个指令的作用。

此指令决定是否接受在实际文件名(或实际目录中一个不存在的文件)后跟随多余路径名信息的请求。这个多余的路径名信息可以当作PATH_INFO环境变量传递给脚本。

可能不太好理解,举例来说:

比如我做了一个php测试页,显示php信息,url为:https://www.rootop.org/pp.php

当我在php.php后面输入/a/b后都能访问到pp.php页面。

即:https://www.rootop.org/pp.php/a/b

这就需要AcceptPathInfo 来实现了。再去理解红色部分的解释,就明白了。