• SQLServerDBA十大必备工具让生活轻松点


    曾经和一些DBA和数据库开发人员交流时,问他们都用过一些什么样的DB方面的工具,大部分人除了SSMS和Profile之外,基本就没有使用过其他工具了;

    诚然,SSMS和Profile足够强大,工作的大部分内容都能通过它们搞定,但是MS、第三方公司甚至是个人开发者为SQLServer提供了很多其他的工具,如果你

    能充分的掌握这些工具,无疑会给我们数据库的管理、优化、测试和排错节省大量的时间和精力,下面就来介绍除SSMS和Profile之外的其他有用的工具。

    NO1: PD(PowerDesigner)

    功能:SysBase公司提供的数据库设计工具,功能很强大,是做数据库设计时必备的工具;

    下载:http://www.3ddown.com/soft/14524.htm

    NO2: Log Explorer

    功能:数据库日志读取工具,主要用来恢复误操作的数据(目前只支持到2005版本),详见:

    http://blog.csdn.net/jinjazz/archive/2008/05/19/2459692.aspx ;

    下载地址:http://www.pc6.com/softview/SoftView_57657.html

    NO3Tuning Advisor

    功能:优化顾问,会根据数据库的运行情况,提示您做相关的优化(可靠性不是太高,需要自行判断);

    下载:SQLServer自带

    NO4:SSMSTools

    功能:SSMS工具的一个插件,能提供格式化代码、追溯历史等功能(通过它,也许你可以开发自己的插件);

    下载: http://www.ssmstoolspack.com/

    NO5: DBDiff

    功能:比较两个数据库的差异;

    下载:http://opendbiff.codeplex.com/

    NO6PAL Tool

    功能:Performance Analysis of Logs,Perfmon日志分析工具;

    下载:http://pal.codeplex.com/

    NO7RML

    功能:这个工具非常强大,下图展示了完成安装后它的四个主要功能组件;ReadTrace工具能读取数据库的Profile跟踪文件,并生成报告;Ostress能将ReadTrace

    生成的文件重播,而且还可以对数据库做压力测试;ORCA能保证重报时,按照事件发生的顺序播放;Reporter能将ReadTrace后的内容通过报表的形式展现,相当

    的有用。

    下载:http://support.microsoft.com/kb/944837

    NO8:SqlNexus

    功能:先通过SQLServer自带的SQLdiag.exe工具收集信息,然后再用SqlNexus分析这些信息,它是前面一些工具的整合,为数据库管理人员寻找SQLServer服务器

    的性能瓶颈和排查故障提供了相当强大的支持(MS工程师很多都用这个哦,买技术支持的朋友们有木有经历过MS要求你开启SQLDiag,然后将收集的数据回传给他们

    的;现场支持时,是不是也开启SQLDiag收集数据,然后就出来了服务器性能报告,有木有;所以掌握它,1k/时的定期服务器检查技术支持费用可以省了);

    下载:http://sqlnexus.codeplex.com/

    NO9:SQLIO和SQLIOSim

    功能:磁盘IO压力测试工具,SQLIO主要是模拟随机或者顺序的方式来测试磁盘IO的性能;SQLIOSim是模拟SQLServer的行为来测试IO性能;

    下载:http://support.microsoft.com/kb/231619

    NO10:SqlMonitor & SSBDiagnose

    功能:SqlMonitor是监控Replication和Mirror的必会工具,SSBDiagnose是测试SSB配置的工具;

    下载:SQLServer自带

    分类: SQLServer

    SQLServer

     
    摘要: 曾经和一些DBA和数据库开发人员交流时,问他们都用过一些什么样的DB方面的工具,大部分人除了SSMS和Profile之外,基本就没有使用过其他工具了;诚然,SSMS和Profile足够强大,工作的大部分内容都能通过它们搞定,但是MS、第三方公司甚至是个人开发者为SQLServer提供了很多其他的工具,如果你能充分的掌握这些工具,无疑会给我们数据库的管理、优化、测试和排错节省大量的时间和精力,下面就来介绍除SSMS和Profile之外的其他有用的工具。NO1: PD(PowerDesigner)功能:SysBase公司提供的数据库设计工具,功能很强大,是做数据库设计时必备的工具;下载:http.阅读全文
    posted @ 2012-04-25 12:14 飞洋过海 阅读(1367) | 评论 (11) 编辑
     
    摘要: 数据库系统异常是DBA经常要面临的情景,一名有一定从业经验的DBA,都会有自己一套故障排查的方法和步骤,此文为为大家介绍一下通过系统性能视图(SQLServer05以上版本)来排查系统异常的基本方法,希望能对大家有所帮助。这里分两部分来介绍:一. 从数据库连接情况来判断异常:1. 首先我们来看一下目前数据库系统所有请求情况:--request infoselect s.session_id, s.status,db_name(r.database_id) as database_name,s.login_name,s.login_time, s.host_name,c.client_net_.阅读全文
    posted @ 2012-03-12 14:36 飞洋过海 阅读(888) | 评论 (5) 编辑
     
    摘要: 列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量,一个字段的数据聚集存储,那就 更容易为这种聚集存储设计更好的压缩/解压算法。这张图讲述了传统的行存储和列存储的区别:(转至:http://blog.csdn.net/franklysun/article/details/6417483)阅读全文
    posted @ 2012-02-20 10:15 飞洋过海 阅读(55) | 评论 (0) 编辑
     
    摘要: 业务需求描述: 有一个用户登录表,用户每次登陆时,就会向这个表中插入一条数据,这个表记录了用户的用户ID和登录时间,表的数据量有几千万, 现在需要求出从今天开始算,用户持续登录的时间(也就是用户今天登陆了,昨天也登陆了,但是前天没有登录,那用户的持续登录时间就 是一天)。 分析: 看似蛮简单的一需求,在数据库里面实际操作起来不是那么简单的,并非一个简单的Select能够搞定的,从业务的描述我们起码可以得到如下 的分析结论: 1. 业务需要统计这样的数据,应该并不需要实时的数据,所以我们可以获取某个时间的快照数据来做计算;2. 表数据量比较大,如果直接在这个表上操作,势必会对产品的使用造成...阅读全文
    posted @ 2012-02-17 10:40 飞洋过海 阅读(3037) | 评论 (41) 编辑
     
    摘要: 众所周知,SQLServer增删改数据最先都是在内存中进行的,这可以大大加快数据操作的速度;当内存中的数据被修改了,而磁盘中的数据还没有被修改时,就产生了所谓的”脏页“,SQLServer是如何同步内存和磁盘的数据的呢?以下三种方法就是为同步内存和磁盘数据而产生的。LazyWrite(惰性写入器): 作用: 1.管理SQLServer空闲内存: a. 定期检查空闲缓冲列表的大小,当这个值过低的时候,它会扫描整个数据缓存,将一段时间没有使用的页面老化(通过LRU算法),释放内存空间; b. 如果找到一段时间没有被使用的脏页,它会将其写入磁盘,然后将这个页面的内存空间标记为空闲空间; 2.协调..阅读全文
    posted @ 2012-02-14 14:57 飞洋过海 阅读(1546) | 评论 (12) 编辑
     
    摘要: 一台服务器上所有数据库(也可能是部分数据库)的大小是我们经常需要了解的,它不仅能让我们知道目前数据库使用磁盘的比例,而且定期搜集这些信息,还能了解数据库一段时间的数据增量,更为常用的是在做数据迁移和升级时,方便规划新服务器磁盘容量。这里介绍三种统计数据库大小的方法:方法一:使用 sp_spaceuseddeclare @dbname varchar(100) declare db_cur cursor forselect name from sys.sysdatabases where dbid>4 and name<>'distribution'open d阅读全文
    posted @ 2012-02-13 10:18 飞洋过海 阅读(1293) | 评论 (1) 编辑
     
    摘要: 经常有开发同事反映如下情况:我有一条语句或者一个JOB昨天跑半个小时就完成了,今天怎么跑了两个小时还没有完成?是不是数据库出现问题了? 数据库语句运行时间异常,其实是一个比较复杂的情况,因为数据是不断变动的,今天好好的一条语句,有可能明天运行就不在预计的时间内了,这个场景是没办法完全重溯的,即便有当时的备份数据,但是当时的服务器压力是没有办法知道和营造的;但是好在现在不是要调查昨天语句跑时间异常的原因,而是要找到现在语句运行异常的原因,现在的情况还正在进行着呢,所以我们可以根据语句目前的情况,初步来排查一下; 其实要考虑的问题比较多: 1. 索引是否正常(索引是否损坏、有没有人删除索引等);.阅读全文
    posted @ 2012-01-17 17:53 飞洋过海 阅读(1328) | 评论 (3) 编辑
     
    摘要: 关于历史数据迁移这事,相信很多数据库管理员都经常要面对,因为应对的场景和数据量的不同,数据迁移方法和技术也五花八门;在一个数据量不大的表上迁移数据一般都不会有什么问题,一旦表的数据量增大,而且应用对这个表访问非常频繁时,那如何有效的迁移数据就会是一件很有讲究的事。迁移时先考虑以下几点要求:如何设计历史数据保存方法;如何将数据搬移到历史表中,如何将原表的数据删除;在线系统要求在数据搬移时,对系统影响很小;Job什么时间运行合适;数据量变大时,搬移时间是否足够;数据搬移,采用with(nolock)可能造成重复数据,使得搬移过程出错,如何处理比较好;第一:设计历史数据保持方法: 这个是个比较泛的.阅读全文
    posted @ 2011-12-07 10:31 飞洋过海 阅读(1440) | 评论 (13) 编辑
     
    摘要: SQLServer 自带的TableDiff是用来比较表数据差异,并生产相应的脚本的工具,使用简单,还能生产差异脚本,是非常有用的东东,尤其是在做同步链数据修复时,是很理想的工具;但是,很多使用的过朋友都抱怨,TableDiff效率太差,上百万级别的数据表使用起来慢如蜗牛,有没有方法能加快TableDiff的效率呢? 其实TableDiff在很多时候效率还是不错的,和很多其他工具一样,要使它有好的效率,必须要懂得善用它,以下就来说明TableDiff效率差的原因,以及如何巧用TableDiff来提交效率; 1. 两个比较的表数据差异非常大: 这种情况效率差是肯定的,两个几百万的表,差异非常大.阅读全文
    posted @ 2011-11-23 14:20 飞洋过海 阅读(776) | 评论 (0) 编辑
     
    摘要: 很少谈架构方面的事情,主要是因为这确实是个对知识面和知识深度要求很高的领域,无论是开发语言的选择、代码的架构,服务器的搭配、网络的架构、数据库的架构还是第三方软件的选用等,每一方面都是个很大的方向,每个方向都值得一个人去研究一辈子;每每看到某某网站的首席架构师之类的人(不过很多是海绵派),总觉得那就是乐于做技术的人的终极目标,总是有种崇拜感。 限于工作和知识的局限性,以及抱着对各位朋友负责的态度,本文谈论的架构仅限于数据库方面,而且是基于SQLserver数据库来谈的,以免误导各位。 SQLServer经过这些年的发展,其实已经有很多很好的技术可以使用,如Replication、SSB、Cl.阅读全文
    posted @ 2011-10-26 16:29 飞洋过海 阅读(4113) | 评论 (30) 编辑
     
    摘要: 很多开发人员都想成为一名DBA,也有很多人一开始就把自己定位成为一名DBA,DBA究竟需要掌握些什么知识和技能呢?以下是我做DBA工作和面试DBA时,整理的一些DBA方面的三十个问题,三十个大问题中还有许多小的问题,涵括了SQLServer DBA比较多的技术知识点,与大家分享下,希望给有志做DBA的朋友们一些帮助:1. char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;2. 系统DB有哪些,都有什么作用,需不需要做备份,为什么;损坏了如何做还原(主要是master.阅读全文
    posted @ 2011-10-18 10:32 飞洋过海 阅读(2693) | 评论 (18) 编辑
     
    摘要: 一. 背景:我们管理和维护的数据库系统基本都是7*24小时运转的,运转时会出现什么情况谁都无法估计,往往一个平时运行很正常的系统,某天晚上突然就抽风了,而此刻并没有系统负责人在旁边,当值班同事的电话打到正在酣睡的DBA手机上时,DBA不得不朦朦胧胧的,条件反射要上数据库看看;要在家里连到公司的内外一般都需要DBA通知运维人员(也可能是个在做梦的哥们)先给自己开个VPN(某些管控严格的公司还需要DBA打车去公司才能处理),然后通过一大堆的验证才通过慢如蜗牛(往往也和此刻的心态有关)的网络,远程连接到了公司内网出问题的数据库上,此刻DBA才开始真正开始排查起问题来;如果说等待DBA登录到问题数据库阅读全文
    posted @ 2011-09-20 15:12 飞洋过海 阅读(906) | 评论 (2) 编辑
     
    摘要: 备份与还原是数据库避不开的主题,而作为DBA,经常会面临将一台机器上的所有数据库重新构建到一台新机器上的要求;在现在都讲究自动化管理的时代,传统的界面操作备份还原的做法不仅浪费时间和精力,而且还很容易出错,并且这次完成后,下次再有这样的要求,必须又重头开始(估计做5次就能做得人狂吐);于是,我们需要一套应对这种频繁操作、耗时、耗精力的通用处理方法,所以以下批处理脚本就诞生了。脚本主要的功能: 1. 备份一个服务器上的所有数据库(当然你也可以选择),备份文件按数据库名+日期生成,以.bak 结尾; 2. 将所有的备份文件还原到一台新机器上; 3. 验证磁盘和路径的正确性; 说明: 脚本合适 SQ阅读全文
    posted @ 2011-09-09 15:01 飞洋过海 阅读(974) | 评论 (11) 编辑
     
    摘要: 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。 特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可。如果WITH AS短语所定义的表名被调用两次以上,则优化器会自动将WITH AS短语所获取的数据放入一个TEMP表里,如果只是被调用一阅读全文
    posted @ 2011-08-31 08:34 飞洋过海 阅读(356) | 评论 (8) 编辑
     
    摘要: 前言: 在SQLServer数据库中,当我们对一个位于同步链上的表进行更新时,如果更新的记录数也非常多,几百或是几千万,那么批量更新该表会造成同步链的大量延时(甚至有可能崩溃掉,即使同步链不崩溃,等的人也要崩溃了)。原因: 一般情况下,Replication是根据我们更改的数据一条条更改记录的,也就是说我们在发布端下达如下的语句:update TestTb set TT='xxxx' where ustate=0如果这条更新语句,修改的数据量是一千万条的话,那Replication同步链需要传递一千万条如下的语句到订阅端去执行:exec [dbo].[sp_MSupd_dboT阅读全文
    posted @ 2011-08-25 18:06 飞洋过海 阅读(1442) | 评论 (8) 编辑
     
    摘要: SQL Server 2008新特性——更改跟踪 在大型的数据库应用中,经常会遇到部分数据的脱机和多个数据库的合并问题。比如现在有一个全省范围使用的应用程序,每个市都部署了单独的相同的应用程序服务器和数据库服务器,每个月需要将全省所有市的数据全部汇总起来用于出全省的报表,这是一种很常见的数据库合并问题。再比如我们做了一个SmartClient的应用程序,每个客户端都有应用程序和数据库,另外还有一个中心数据库用于汇总所有客户端的数据。每个智能客户端上都可以对自己的数据库进行增删改查,一旦智能客户端连接到网络上时,系统就将客户端数据库中的数据更改全部应用到中心数据库中,这种偶尔连接的应用程序也是需阅读全文
    posted @ 2011-07-11 11:35 飞洋过海 阅读(252) | 评论 (0) 编辑
     
    摘要: 我们经常在迁移数据库时,需要将登录账号,用户和用户对应的角色也迁移过去,以下脚本就是迁移SQLServer数据库用户以及用户对应的角色的脚本;将在Message里面生成对应的脚本。SET NOCOUNT ONGOif exists( SELECT * FROM tempdb.dbo.sysobjects WHERE xtype='U' and name='userrole' ) begindrop table tempdb.dbo.userrole CREATE TABLE tempdb.dbo.userrole ( servername varchar(50)阅读全文
    posted @ 2011-07-08 17:17 飞洋过海 阅读(634) | 评论 (0) 编辑
     
    摘要: 1. 错误:已将此(这些)订阅标记为不活动,必须将其重新初始化。需要删除NoSync 订阅,然后重新创建它们use distributiongo--查找状态不正常的发布select status,* from dbo.MSsubscriptions where status<>2--修改状态update dbo.MSsubscriptions set status=2 where status<>2 观察复制链是否能正常运行,正常后用tablediff比较发布链中的表数据是否一致 还可以重新初始化快照,但是数据量大就是个悲剧。2. 错误:表、存储过程不存在以及表结构不一阅读全文
    posted @ 2011-07-04 14:44 飞洋过海 阅读(1144) | 评论 (1) 编辑
     
    摘要: SQLServer的Replication技术从2005开始,已经变得非常成熟了,而且效果也很好,很多的公司在做读写分离时,都选择了这项技术;Replication现在包括事务、合并和快照三种,每项都有各自的应用优势,大家用得最多的无疑是事物复制了,这种技术能保证我们发布端的数据的变更能及时传输到订阅端,网络带宽和服务器配置如果不差的话,两台机器之间的数据延时是非常小的,这为我们的读写分离技术提供了有力的保障(很少出现用户刚刚新加的数据查不到的现象),不仅分散了读写的压力,而且在做机器维护时也游刃有余,并且用户体验也得到了比较好的提升,下面我们以事务复制为例,来介绍下创建复制链的技巧。创建R.阅读全文
    posted @ 2011-07-02 17:57 飞洋过海 阅读(1083) | 评论 (1) 编辑
     
    摘要: 1. 查找表包含的页信息: 查找表包含的页信息可以使用 dbcc ind 语法: DBCC IND ( ['database name'|database id], -- the database to use table name, -- the table name to list results index id, -- an index_id from sys.indexes; -1 shows all indexes and IAMs, -2 just show IAMs ) 例如:dbcc ind(9,tablename,-1) 2. 查找页所在的表(一个页只能属于阅读全文
    posted @ 2011-04-20 15:02 飞洋过海 阅读(733) | 评论 (2) 编辑
     
    摘要: 最近,和一个朋友谈论各自公司对如何提高SQLServer数据库的保护和数据库可用性以及提高性能方面所采用的技术时,发现SQLServer有不少技术可用,而且有很多可以互补的地方,SQLServer 虽没有Oracle的RAC,但如果把它现有的技术充分发挥下,还是足以应付绝大部分的情况的(遗憾的是有些技术在性能和可靠性方面还是有些不成熟,出现问题很难搞定)。 很多公司保护数据,最先用到的基本都是备份(这个是必不可少,也是最节约成本的方法了),基本的备份有三种,全备、差异和日志(当然还有基于文件、文件组、Page等的备份方案,不做讨论),如何合理的安排这些备份计划,需要根据应用系统的业务要求和特.阅读全文
    posted @ 2011-04-15 14:24 飞洋过海 阅读(2221) | 评论 (8) 编辑
     
    摘要: sql server 2000 用以下方法:1.将帐号chrwebsite\dbstartsqlserve加入到本地管理员组,两个节点均需要.2. 使用sql server2000企业管理器添加一个帐号chrwebsite\dbstartsqlserve,sa权限, Security access 选择Grant access.3. 使用sql server2000企业管理器, Security...阅读全文
    posted @ 2011-04-13 22:00 飞洋过海 阅读(122) | 评论 (0) 编辑
     
    摘要: 最近,刚跳槽到一新公司,就遇到生产数据库晚上突然出现大面积中断,并持续近一小时,而发生事故时,我没有在现场,错过了直接获取信息的机会;过后boss要求追查原因,于是艰难的排查过程开始了。 开始以为是数据库某个JOB运行出现异常引起或者是因为程序里面哪个鸟人写了垃圾语句造成了大面积的死锁,于是将收集的trace信息拿到本地分析,从收集到的trace信息看,数据库在19:49:28时出现了锁,系统cancel了它,而且是连续三个,之后数据库大部分连接都是Abort了。 初步估计应该是死锁了,首先想到的就是因为数据库更新语句造成,于是查找Agent里面是否有对应时间的JOB运行,结果没有匹配的,然.阅读全文
    posted @ 2011-04-12 16:18 飞洋过海 阅读(3219) | 评论 (37) 编辑
     
    摘要: 由于在SQL-SERVER中,自增列属性不能直接修改,但可以通过以下方式变向实现1、如果仅仅是指定值插入,可用以下语句,临时取消SET IDENTITY_INSERT TableName ONINSERT INTO tableName(xx,xx) values(xx,xx)SET IDENTITY_INSERT TableName OFF2、新增一列,删除自增列,修改改列名alter table a add xxx intupdate a set xxx=idalter table a drop column idexec sp_rename 'xxx', 'id&#阅读全文
    posted @ 2011-03-14 18:00 飞洋过海 阅读(577) | 评论 (1) 编辑
     
    摘要: 1、使用SELECT @@ServerName可以看到当前数据库的服务器名2、SELECT * FROM Sys.SysServers表中可以看到当前的所有服务器名3、使用sp_dropserver '原实例名' 将这个实例名删除4、使用sp_addserver '新实例名','LOCAL' 将本地服务器重新添加到服务器列表中5、查询SysServers表,可以看到已经修改6、重启数据库服务,修改完成,可以正常使用复制功能了阅读全文
    posted @ 2011-03-14 17:59 飞洋过海 阅读(311) | 评论 (1) 编辑
     
    摘要: --压缩日志及数据库文件大小 1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志: BACKUP LOG 数据库名 WITH NO_LOG 3.收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件 --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小...阅读全文
    posted @ 2010-07-04 13:00 飞洋过海 阅读(172) | 评论 (0) 编辑
     
    摘要: view sourceprint?01 -- 查看当前SQL版本. 02 EXEC master..sp_MSgetversion 03 EXEC master..xp_msver 04 05 -- 列出C:\盘下所有文件夹,包括二级目录,省略第二个参数时,默认为(显示根目录下文件夹) 06 EXEC master..xp_dirtree 'c:\',2 07 08 -- 显示所有可用的OLE D...阅读全文
    posted @ 2010-07-04 12:46 飞洋过海 阅读(202) | 评论 (1) 编辑
  • 相关阅读:
    腾讯推出微信企业服务平台风铃
    WAP网页输入框的默认键盘类型控制
    asp.net+扫描仪+图片上传
    Web截屏插件
    java扫描仪上传文件
    web高拍仪图片上传
    网页中怎么实现客户端通过扫描仪把图像传到服务器上
    如何在Web页面里面使用高拍仪扫描上传图像
    B/S选择文件夹上传
    用java实现文件的断点续传并发下载
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2470513.html
Copyright © 2020-2023  润新知