网亚机房管理软件博客

新实用主义典范

连接机房管理系统属性

大多数用户都不会用到“连接”选项页面。SQL Serverdialing在默认情况下使用机房管理系统服务器名称默认端口、SQL Server代理的服务账户以及客户端配置和SQL Server支持协议之间的最高匹配协议,连接SQL Server。你可能希望在下列几种情况下修改这些默认配置。

机房管理系统服务器有多块网卡,并且要指定特定IP地址或端口。

要使用特定协议(如IP协议)连接。

要使用与服务账户登录名不同的登录名将SQL Server代理连接到服务器。

系统动态机房管理视图

在调优过程中的一项工作就是调查由查询重编译导致的CPU过高和查询变慢。很多因素都会到最后重编译,包括参数化、过期的统计信息以及大量机房数据变更。

可以使用一些系统DMV调查查询计划重编译问题。其中最重要的一个是sys.dm exec cached plans。该视图中一行对应一个缓存的计划,可以和sys.dm exec sql text视图连接,从而获取计划缓存中包含的SQL文本。

上述查询手机的信息主要包含在下述列中:

Text——生成查询计划的SQL文本。

机房事件转发

对于事件和警报而言,可以在单个机房系统上创建操作员和警报,然后让其他系统将事件转发给集中处理警报的SQL Server,后者将在必要时响应这些警报。

指定要把事件转发到哪些服务器的工作是在“SQL Server代理属性”对话框的“高级”选项中完成的。选中“将事件转发给其他服务器”复选框,然后就可以指定把事件转发到哪些服务器。

通过选择“事件”下的选项,可以配置转发哪些事件。在这里可以选择“未处理的事件”和“所有事件”。如果选择“所有事件”,就可以根据“如果事件的严重性不低于”严重性级别来添加筛选器。可以在主事件机房管理系统上设置操作员。创建将响应警报的作业。然后在单个主事件管理系统上创建警报来处理这些事件。创建的作业可利用SQL Server代理标记,并知道原事件在哪台服务器和哪个数据库发生。

复制和重新抛出异常

整个异常机制在C++中工作得很好,当然这仅限于单线程的情况。每个线程都可以抛出自己的异常,但它们必须在自己的线程内捕捉异常。一个线程中抛出的异常不能在另一个线程中捕获。当希望将异常处理机制和多线程编程结合在一起时,这会引入一些问题。

不使用标准线程库,就很难在线程间正常地处理异常,甚至根本办不到。标准线程库通过以下和异常相关的函数解决了这个问题。这些函数不仅可用于std:exception,还可以用于所有类型的异常:int、string、自定义异常等。

此删除在catch块中调用,返回一个exception ptr对象,这个对象引用目前正在处理的异常或其副本,如果没有处理异常,则返回空的exception ptr对象。只要存在引用它的exception ptr类型的对象,那么引用的异常对象还是可用的。Exception ptr的类型是NullablePointer,这意味着这个变量很容易通过简单的if语句来检查。

CLR集成的设计目标

在架构中集成SQL CLR时,应该牢记它的设计目标:

性能:最佳实践指出,不应将CLR程序集用于查询数据。这应该是T-SQL的工作。CLR程序集不应把事件花到访问数据上。将想要处理的数据发送到程序集,而不是让程序集从SQL Server中取出数据。

可扩展性:SQL Server和SQLCLR在处理内存管理的方式上有区别。SQL Server更合作,并且支持一种非抢占式的线程模型。CLR支持抢占式线程模型,并且不区分物理内存和虚拟内存。当构建需要扩展的系统时,这些区别提出了有意思的挑战。因此,在设计数据库架构时,要保证系统的可扩展性和完整性不会因为用户代码不必要地直接调用线程和内存管理API而受到损害。

硬件管理

在大多数中小型数据库服务器中,一种常见配置是对BIOS进行修改以启用超线程。详细信息请参考服务器的文档。可以确定超线程是否可以改进某个场景的性能。在启用超线程选项之后,其他大多数任务都与物理安装RAM、I/O适配器、磁盘适配器SCSI或SATA相关。并且,查看供应商的文档可以了解他们推荐的其他配置选项。

在几乎所有系统上,都有许多管理软件可以帮助配置、运行和维护硬件。大多数硬件供应商都有自己的管理软件,它们能够提供各种性能和选项。例如,Hewlett Packard的iLO、IBM的RSA或Dell的DRAC。

配置机房软件已经存在的可用性组

现在你已经拥有部署好的可用性组,并且你所需要的机房软件高可用性、灾难恢复、报表服务等功能也有赖与此、此时,如果存在下述情况之一,或许会引发新的需求:

应用程序升级并且依赖于可用性组内其他数据库的新数据库被创建。

公司的报表需求升级并且需要部署新的只读数据库来将主副本的负载进行转移。

确定需要灾难恢复站点并且要求在该站点上部署副本。

备份操作是在主副本上进行并影响到了性能,你被需求部署副本来进行备份任务。

已经从可用性组中合并多个数据库,现在需要移除其中一个。

分配不足的字符串

与C风格字符串相关的最常见的问题是分配不足。大多数情况下,都是因为程序员没有分配尾部的哨兵字符。当程序员假设某个固定最大大小时,也会发生字符串分配不足的情况。基本的内置字符串函数不会针对固定的大小操作——而是由多少写多少,如果常规了字符串结尾,就写入未分配的内存。

下面的代码演示了字符号攒分配不足的情况。它从网络连接读取数据,然后写入一个C风格的字符串。这个过程返回一个循环中完成,因为网络连接一次只接受少量的数据。在每个循环中调用getMoreDataO函数,这个函数返回一个指向动态内存的指针。当getMoreDataOfanhui nullptr时,表示已收到所有数据。strcatO是一个C函数,它把第二个参数的C风格字符串连接到第一个参数的C风格字符串尾部。它要求目标缓存足够大。

分配机房管理软件访问权限

接下来的机房管理过程是为新创建的用户账户分配访问权限。为了使账户AzureTest对选定的用户数据库有不受权限的访问权限,你需要将该账户加入db owner组。

此时,AzureTest用户就可以创建表、视图、存储过程等。正如在SQL Server中那样,你可以获得更小的权限分配粒度。你可以和在SQL Server环境中那样授权和撤销权限,授予insert、update、create和delete权限。在SQL Server中,public角色会自动分配给用户账户。但这一点在SQL数据库中行不通,因为更高的安全性要求不允许将public角色分配给用户账户。因此,必须将特定的机房管理软件访问权限授予用户账户。

机房软件调试退化

如果一个特性包含退化bug,就表示所使用的特性工作正确,但因为引入了bug而停止工作。

检测退化的一个有用的调试技术是查看相关文件的改变日志。如果知道特性仍能工作的时间,就查看该事件以后的所有改变日志。在这些日志中可能会注意到某些值的怀疑的地方,跟踪它们可能找到错误的根源。

另一个方法可以节省大量调试退化的时间,即对软件的旧版本使用二叉树搜索方法,尝试确定软件何时开始出错。如果保留了旧版本的二进制文件,就可以使用它们,或者通过源代码服务器使用旧版本的源代码。一旦知道软件何时开始出错,就查看自那时以后的改变机房软件日志。这个机制只能在可以重现bug的情况使用。

«789101112131415161718192021»

Powered By Z-Blog 2.0 Doomsday Build 121221

版权所有©2007-2013 南京网亚计算机有限公司
QQ:502800066(购买咨询) 1074187861(技术支持) 邮件: sales@ji-fang.cn
电话:( 025)84533318 (025)84533319 (025)66671103 13913982176 传真: (025)84533320
地址: 江苏省南京市中山东路198号龙台国际大厦1205室