行至水穷处,坐看云起时

  • rss
  • 博客首页
  • 音乐故事
  • 摄影相册
  • 站点导航
  • 与我联络

SQL的性能监控优化参考

2009-06-07 | 16:28
最近需要查两台业务应用完全相同的数据库服务器,但执行性能却相差甚远的原因。突然想起来从前在SNDA的时候PT也发生过的性能问题。现在回头再想想,当时的分析还很不足。
数据库优化的目标无非是避免磁盘I/O瓶颈、减少CPU利用率和减少资源竞争。当一台服务器的执行性能出现问题,准确的找到问题来源就非常关键。合理利用操作系统自带的性能计数器可以帮助你定位故障的原因。
可惜我没有Patton的开发能力,所以只能定时取数据做日后分析,否则用他开发的monitor监控,还可以实现即时报警,那就更好了。
服务器上新建性能监控的日志,取所需计数器,设定计划任务定时启动或建立SQL JOB定时执行命令:logman start 计数器名

添加计数器

计数器 描述
Memory: Available Bytes 内存可用字节数
Memory: Page Faults / sec 处理器硬/软页错误处理速率
Process: Working Set 进程占用内存量
Memory Pages/sec 每秒磁盘读写页数
Physical Disk: Avg.Disk Queue Length 读取和写入请求(磁盘在实例间隔中列队的)平均数。
Physical Disk: Reads/sec 每秒磁盘读取操作速率
Physical Disk: Writes/sec 每秒磁盘写入操作速率
Processor: % Privileged Time 处理器执行内核命令所用时间百分比
Process: % Processor Time 处理器时间百分比(活跃程度)
Processor: %User Time 处理器执行用户进程百分比
SQL Server: Access Methods: Full Scans/sec 每秒完全扫描次数
SQL Server: Access Methods: Page splits/sec 每秒页分割数量
SQL Server: Buffer Manager: Buffer Cache Hit Ratio 缓冲区缓存命中率
SQL Server: Buffer Manager: Lazy Writes/sec 惰性写进程每秒写缓冲区数量
SQLServer: Cache Manager: Cache Hit Ratio SQL快取中找到请求资料分页的时间比率
SQL Server: Latches: Latch Waits/sec 每秒闩锁等待数量
SQL Server: Locks: Average Wait Time 每个导致等待的锁请求的平均等待时间(毫秒)
SQLServer: Locks: Lock Requests/sec 每秒请求的锁个数
SQLServer: Locks: Lock Wait Time (ms) SQL每秒锁等待
SQL Server: Memory Manager: Total Server Memory 服务器分配SQL可用内存总量
SQLServer: General StatisticsUser Connections SQL Server用户连接数
SQLServer: SQL StatisticsSQL Re-Compilations 每秒SQL重编译数

阅读全文 »

Comments
没有留言 »
分类
艺海无涯
Tags
2005, microsoft, server, SQL
订阅RSS留言 订阅RSS留言
Trackback Trackback

SQL Server 2005 配置中可能遇到的一些问题

2009-03-19 | 14:21

一."SQL Server 不存在或访问被拒绝"

这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多.

一般说来,有以下几种可能性:

1,SQL Server名称或IP地址拼写有误
2,服务器端网络配置有误
3,客户端网络配置有误

要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因.

============= 首先,检查网络物理连接 =============

ping <服务器IP地址/服务器名称>

如果 ping <服务器IP地址> 不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,HUB,路由器等.
还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server.防火墙软件可能会屏蔽对 ping,telnet 等的响应。因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口.

如果ping <服务器IP地址> 成功而,ping <服务器名称> 失败,则说明名字解析有问题,这时候要检查 DNS 服务是否正常.(这时如果其它地方(服务器配置,连接字符串……等)没问题,则用<服务器IP地址>可以连接成功)
如果希望直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,具体的方法是:

1.使用记事本打开HOSTS文件(一般情况下位于C:WINNTsystem32driversetc).
添加一条IP地址与服务器名称的对应记录,如:
172.168.10.24 myserver

2.或在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明.

============= 其次,使用 telnet 命令检查SQL Server服务器工作状态 =============
telnet <服务器IP地址> 1433

如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接
如果命令返回"无法打开连接"的错误信息,则说明服务器端没有启动 SQL Server 服务,
也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端口1433上监听.

=============接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道.是否启用了 TCP/IP 协议等等 =============
可以利用 SQL Server 自带的服务器网络使用工具来进行检查.

点击:程序 -- Microsoft SQL Server -- 服务器网络使用工具

打开该工具后,在"常规"中可以看到服务器启用了哪些协议.
一般而言,我们启用命名管道以及 TCP/IP 协议.
点中 TCP/IP 协议,选择"属性",我们可以来检查 SQK Server 服务默认端口的设置
一般而言,我们使用 SQL Server 默认的1433端口.如果选中"隐藏服务器",则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接.

============= 接下来我们要到客户端检查客户端的网络配置 =============
我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查,
所不同的是这次是在客户端来运行这个工具.

点击:程序 -- Microsoft SQL Server -- 客户端网络使用工具

打开该工具后,在"常规"项中,可以看到客户端启用了哪些协议.
一般而言,我们同样需要启用命名管道以及 TCP/IP 协议.
点击 TCP/IP 协议,选择"属性",可以检查客户端默认连接端口的设置,该端口必须与服务器一致.

单击"别名"选项卡,还可以为服务器配置别名.服务器的别名是用来连接的名称,
连接参数中的服务器是真正的服务器名称,两者可以相同或不同.别名的设置与使用HOSTS文件有相似之处.

通过以上几个方面的检查,基本上可以排除第一种错误.

二."无法连接到服务器,用户xxx登陆失败"

原因1、该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式,
因此用户无法使用SQL Server的登录帐户(如 sa )进行连接.解决方法如下所示:

1.在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server
2.展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡
3.在"身份验证"下,选择"SQL Server和 Windows ".
4.重新启动SQL Server服务.

在以上解决方法中,如果在第 1 步中使用"使用 Windows 身份验证"连接 SQL Server 失败,
那就通过修改注册表来解决此问题:

1.点击"开始"-"运行",输入regedit,回车进入注册表编辑器
2.依次展开注册表项,浏览到以下注册表键:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServer]
3.在屏幕右方找到名称"LoginMode",双击编辑双字节值
4.将原值从1改为2,点击"确定"
5.关闭注册表编辑器
6.重新启动SQL Server服务.

此时,用户可以成功地使用sa在企业管理器中新建SQL Server注册,
但是仍然无法使用Windows身份验证模式来连接SQL Server.
这是因为在 SQL Server 中有两个缺省的登录帐户:
BUILTINAdministrators
<机器名>Administrator 被删除.
要恢复这两个帐户,可以使用以下的方法:

1.打开企业管理器,展开服务器组,然后展开服务器
2.展开"安全性",右击"登录",然后单击"新建登录"
3.在"名称"框中,输入 BUILTINAdministrators
4.在"服务器角色"选项卡中,选择"System Administrators"
5.点击"确定"退出
6.使用同样方法添加 <机器名>Administrator 登录.

说明:

以下注册表键:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServerLoginMode
的值决定了SQL Server将采取何种身份验证模式.
1.表示使用"Windows 身份验证"模式
2.表示使用混合模式(Windows 身份验证和 SQL Server 身份验证).

原因2、密码不对。这种情况很特殊,就是你的系统里安装了几种软件(当然它们不都是你做的),都要用到SQL数据库,你发现当它们之中的一个好用时,你的程序就出现"无法连接到服务器,用户xxx登陆失败"(这里的XXX通常会是sa--因为它是SQL的内置帐号),于是你开始检查服务器的各项配置,直到更改了sa帐号的密码,你发现你的程序可以连接成功了,但你同时发现那个软件却连接数据库失败了。这时你也就发现了原因:有些商业软件安装后会修改SQL的内置帐号sa的密码来增加安全性,但这样一来你的程序就不能利用sa帐号进入来连接服务器了。

解决方法:新建一个“标准”类型的帐号,你的程序用这个帐号来连接服务器就可以了。
新建帐号方法:
1.打开企业管理器,展开服务器组,然后展开服务器
2.展开"安全性","登录",然后右击,选择"新建登录"……

三.提示连接超时

如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接,
不过是由于连接的时间大于允许的时间而导致出错.
这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器,
并且是慢速连接时,有可能会导致以上的超时错误.有些情况下,由于局域网的网络问题,也会导致这样的错误.

要解决这样的错误,可以修改客户端的连接超时设置.
默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,
而查询分析器是 15 秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因).

具体步骤为:
企业管理器中的设置:
1.在企业管理器中,选择菜单上的"工具",再选择"选项"
2.在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡
3.在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字,如 20.

查询分析器中的设置:
工具 -- 选项 -- 连接 -- 将登录超时设置为一个较大的数字

四.大部分机都用Tcp/ip才能成功,有次我发现用Named Pipes才可以?

这是因为在WINDOWS 2000以后的操作系统中,MS为解决SQL SERVER的安全问题将TCP/IP配置
为SQLSERVER的默认连接协议,你可以在CLIENT NETWORK UTILITY中看到TCP/IP和NAME PIPE
的顺序。

你也可以在:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClientSuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
看到默认的协议。

2.怎么在程序中更改Named Pipes , Tcp/ip ,其sql语句怎么写?
你可以在上面提到的注册表的位置修改:
CLIENT端:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClientSuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00

SERVER端:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServerSuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00

我的问题应该属于第一类,遗憾的是我按照上面说的方法都不能解决这个问题。我使用:telnet <服务器IP地址> 1433 显示不能正确连接。按照说的方法也不能解决这个问题。有网友说出现1433端口不能连接的因为是Sql Server 2000没有打补丁的缘故,但我打过sp4后仍然不能正确连接1433端口。(在打SP4之前要先打SP3)
我在web.config里的设置为:
<configuration>
<appSettings>
<!--"data source=SASANK;initial catalog=CODER;persist security info=False;user id=sa;workstation id=SASANK;packet size=4096"-->
<add key="ConnectionString" value="server=localhost;Trusted_Connection=false;user id=sa;password=sa;database=sichuan"/>

</appSettings>
<system.web>
找了好久原因,都不行。
后来试着将数据库连接项改为:
<add key="ConnectionString" value="server=192.168.254.60;Trusted_Connection=false;user id=sa;password=sa;database=sichuan"/>也就是把其中的Server改为我的机器在局域网中的IP地址(注意我是本机调试,我把server改为机器名也不行),连接运行,竟然成功了!

五、错误:在连接到SQL Server 2005时,在默认的设置下SQL不允许进行远程连接可能会导致此失败,(provider:TCP提供程序,erroe:0-由于目标机器积极拒绝,无法连接.)

解决方法:在服务器端,控制面板->管理工具->服务->MSSQLSERVER(开启此服务,并设为自动)

六、在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: TCP 提供程序, error: 0 - 套接字操作遇到了一个已死的网络。)

解决方法:开始-程序-Sql Server 2005-配置工具-SQL Sevrer外围应用配置器-服务和连接的外围应用配置器-选择数据库-远程连接-选择TCP/UPD

Comments
没有留言 »
分类
艺海无涯
Tags
2005, SQL, windows
订阅RSS留言 订阅RSS留言
Trackback Trackback

ABOUT ME


网 名: 天缘(skylove)












RSS邮天下订阅  文章 留言

最新日志

  • 为CU论坛做的广告
  • Packet tracer5.0/5.2视频教程集锦
  • cisco路由器的寄存器值(忘记密码时要进机器时候用的)
  • 【分享】BIOS完全优化
  • Google的新礼物——推出免费公共DNS服务器
  • 搜索引擎关注度、关键字搜索量查询
  • DropBox这个网络硬盘蛮不错的
  • 关于ESX的几则文章
  • Windows 7下使用VMware vSphere Client
  • 关于Chrome的两个不错的插件站

分类

  • 休闲娱乐 (22)
  • 妙文转载 (9)
  • 学习摄影 (10)
  • 心得分享 (79)
  • 心情随笔 (67)
  • 流水杂记 (42)
  • 艺海无涯 (55)
  • 过失教训 (5)

过去的日记

最新评论

  • james: I visited this sight for the first time and I fou...
  • Yorick: ……很不错 唉…...
  • Arnold91: These professional develop- ment experiences shou...
  • skylove: 不好意思,这文章是我转载的,我没...
  • 小 宇: 死人,找你不容易啊...
  • 匿名: 朋友,我也刚开始用siege做压力测试...
  • 天缘(skylove): 感谢...我去看下,目前是用的zeld.cn的...
  • shaojung: 你可以參考我的網誌, 直接用 ActiveSync...
  • skylove: google一下吧。。。很容易找到的,或...
  • 陈明: 这两个工具在哪能够下载到呢,能发...

标签云

乐山 书 分手 升级 图片 安全 感情 手机 摄影 数据库 朋友 桌面 歌曲 照片 爱情 相册 硬盘 网站 网络 软件 2008 apache asp blog blogger cisco CU dns flash google linux mp3 MSN nat photo php QQ script shell tor unix vb web windows xml

我的相册

武隆的图片

技术站点

  • Google站点统计
  • 网站检测
  • 高亮代码(.Net)
  • 高亮代码生成(PHP)

朋友们的站

  • GNAH‘s Not Another Programmer!
  • kiki on the way
  • 哇靠~又写起了博客
  • 远方的远方

功能

  • 注册
  • 登录
  • 日志 RSS
  • 评论 RSS
  • WordPress.org
rss 订阅RSS留言 valid xhtml 1.1 design by jide powered by Wordpress get firefox