自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(167)
  • 收藏
  • 关注

转载 Exec in Job and NewQuery

1、背景Job:一个步骤执行两个存储过程ProcA、ProcB。ProcA定义一个游标,从表TabA中检索数据,逐条插入到表TabB。如果某条数据不满足TabB上的约束(比如非空)导致插入失败。那么游标马上结束,出错之前的保留,出错之后的不会插入到TabB。过程ProcB不会被执行,Job报错,终止。如果将ProcA放到查询窗口执行,它会跳过出错的数据,继续执行之后的插入。例如Tab...

2016-12-01 22:55:00 109

转载 使用SSIS汇集监控数据

1、背景1、数据库的告警日志是必须进行的工作,监控并且应该根据不同的严重级别,发送不同级别的告警信息(通过邮件、短信),及时了解数据库的变化与异常,及时响应并介入处理。2、DBA应该对据库部署完善的监控系统,并对重要信息进行采样,能够实时或定期生成数据库重要指标的曲线图,展现数据库的运行趋势。3、每天至少了解或熟悉一个Top SQL,提出优化和调整建议。应当对稳定系统中的SQL非常熟...

2016-11-30 16:30:00 1827

转载 查找阻塞语句

此篇扩展随笔事务隔离级别与阻塞中的例子按照会话1->会话2的顺序执行,会话1(spid=53)开启事务更新数据尚未提交--会话1开启事务更新数据尚未提交USE AdventureWorks2008;GOBEGIN TRANSACTION; -- 修改1 -- 休假时间减8 UPDATE HumanResources.Employ...

2016-11-11 23:40:00 110

转载 Trace-语句启动Profiler中暂停的跟踪会出现什么状况

2016-09-08 22:09整理,未发布Profiler创建客户端跟踪。常规页不保存文件、不勾选服务器处理跟踪数据;事件选择RPC:Completed和SQL:BatchCompleted,列筛选器指定为某SPID。Profiler启动跟踪,sys.traces 增加一新记录(traceid=2,status=1);暂停跟踪,对应记录status=0;停止跟踪,对应记录删除。Pro...

2016-11-08 22:52:00 137

转载 模拟死锁及案例分析

草稿箱二十篇随笔没有发布,零零散散记录着曾经以为还不错的知识点。稍作整理发布,方便以后查看。2015-11-26 18:04整理,未发布1、模拟死锁首先创建测试数据,然后开启必要的跟踪,最后执行两个语句模拟死锁。1.1、创建测试数据创建测试数据表、创建索引create table testklup(clskey int not null,nlsk...

2016-11-04 09:19:00 132

转载 Trace-如何跟踪某个Job的开销

1、背景下面是从以往Profiler收集的跟踪文件中提取Job有关数据;with cte as(select b.Name EventClass,TextData,DatabaseName,Duration/1000 Duration_ms,CPU CPU_ms,Reads,Writes,StartTime,EndTime,HostName,LoginName,A...

2016-10-13 22:03:00 306

转载 cursor or set-based

标题可能和正文不太相符。我主要是记录工作中遇到使用游标的语句改成普通set-based operation,执行时间快了很多。1、游标语句declare @startDate dateTimedeclare @endDate dateTimeset @startDate = convert(varchar(10),dateAdd(day,-1,getDate())...

2016-10-10 23:37:00 215

转载 合并分区(merge range)对事务日志的影响

分区维护作业执行失败,错误信息如下:数据库 'XXX' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。 [SQLSTATE 42000] (错误 9002) 语句已终止。 [SQLSTATE 01000] (错误 3621). 该步骤失败。查看 sys.databases 数据库恢复模式为SI...

2016-09-13 13:38:00 418

转载 博客样式编辑

博客园的文章越写越多,最初只关注数量,逐渐关注排版,现在关注阅读体验。以下内容大部分来自博客园,自己做了部分修改,文章末尾有原文链接,感谢园子里的朋友!我的博客皮肤是SimpleBlue,添加元素的色调主要是博客蓝(#399ab2)、草绿(#9cba39)。1、推荐悬浮【页面定制CSS代码】添加以下代码#div_digg {position: fixed;bo...

2016-09-12 08:47:00 133

转载 insert into linksvr or insert into from linksvr

通过链接服务器将实例A上的数据写入实例B,通常有以下两种方式--方案1:在实例A上执行insert into LinkForB.B..TableB select * from TableA--方案2:在实例B上执行insert into TableB select * from LinkForA.A..TableA目前接手的数据库,大量使用链接服务器来搬迁数据,并且使用者随心所欲。本地写...

2016-09-08 23:54:00 142

转载 文件收缩和移除

收缩数据文件(要腾空间,没办法只能收缩文件)的过程中,遇到日志备份,报错USE [DBA_Monitor]GODBCC SHRINKFILE (N'DBA_Monitor' , 276000)GOView Code等待日志备份结束,再次收缩数据文件,报错查询得知可通过修改文件初始大小--修改文件初始大小,当前大小的基础上加1MUSE [...

2016-09-07 08:44:00 71

转载 日志传送是否可以与普通事务日志备份并存

2016-03-18 15:18 整理,未发布日志传送实际是备份日志、拷贝日志、还原日志。我们可以将备份好的日志文件拷贝一份到其他存储,再结合必要的完整备份,就可以用来还原数据。如果做了日志传送,还需对其做普通的日志备份。那就要考虑清楚,普通的日志备份不能截断事务日志,不然日志传送中的日志链就会中断。如果普通的事务日志带上with copy_only选项,它不会截断日志BACKUP LO...

2016-08-26 10:15:00 116

转载 分发清除作业阻塞日志读取器代理

开发反馈做复制的表每隔一段时间会延迟,最大延迟时间超过15分钟。打开复制监视器,找到发布所对应的订阅,查看是否有错误。在"发布服务器到分发服务器的历史记录"栏发现下图所示信息:图中我们可以看出上下两条间隔大约15分钟,每条"正在传递复制的事务..."到下一条"复制代理在10分钟内没有记录任何进度消息..."之间,肯定没有命令传递到分发服务器。至于"错误"消息出现多久后又开始正常传递复制的...

2016-08-19 23:14:00 694

转载 Resolving SQL Server Disk IO bottlenecks

网上看到这篇文章挺不错的,直接翻译过来。在尝试诊断SQL Server性能时,不要仅仅依赖某个单一的诊断数据,比如CPU的使用率、SQL Server磁盘性能,就得出结论却忽略的问题的根源。实际上,使用单一的度量经常会得出一个错误的诊断。在SQL Server中CPU、IO和内存的使用是相互依赖。在我们采取"knee-jerk"修正行动(添加内存、提升磁盘吞吐量或者更改配置设置)之前,我...

2016-08-14 10:53:00 106

转载 隐式转换

发现某一条语句消耗较高,执行比较频繁数据库版本如下将TextData语句拷贝到查询窗口执行将sp_executesql中的主体语句拷贝到查询窗口执行执行计划的总体流向是一致的,根据token得到LKLoginTokenRecord,然后嵌套循环AccountsInfoSimple。但是sp_executesql语句的执行计划有常量扫描和计算标量的操作,并且在索引查找中有谓词CONVERT...

2016-08-09 21:30:00 135

转载 创建跟踪和查看执行计划需要的权限

多看书,多积累,温故知新。只有要用的时候,才会发现知识欠缺。不要说知道有这么回事,要很有底气的回答应该怎么做。查看跟踪和查看执行计划需要怎样的权限?sysadmin/db_owner肯定可以,但不应该给这么大的权限。创建登录名--create loginuse mastergocreate login TracePlan with password='123qwe'...

2016-07-31 21:29:00 300

转载 添加到SQLAgentReaderRole角色后报拒绝SELECT权限

最近有点大意,同事需要查看作业的权限,"理所当然"就将对应登录名添加到SQLAgentReaderRole角色。msdb的SQLAgentReaderRole数据库角色的成员继承SQLAgentUserRole的权限,同时还有使用多服务器作业的能力。你还可以查看服务器上所有的作业,而不只是你自己的作业。对于那些不是你创建的作业,你只能查看(你可以控制你创建的作业)。既然SQLAg...

2016-06-28 17:48:00 293

转载 RML-怎样的语句会被归纳为同一类型(Unique Batches)

我们知道使用RML工具分析跟踪数据(.TRC),其中的"Unique Batches",就是一个关于Batch级别的报表,Batch级别的报表针对的是存储过程或是一个TSQL Batch,存储过程或Batch内部的TSQL语句不会单独列在该报表上。很多存储过程调用或TSQL Batch语句总体是一样的,只是带的参数会有不同,ReadTrace会把这些仅是参数不同的存储过程或语句归为一类。...

2016-06-25 20:12:00 150

转载 SQL Server代理警报

使用SQL Server代理警报的前提条件1、创建操作员,接收消息的用户2、创建警报,满足某种条件触发警报,并作出响应(执行作业或/和通知操作员)3、配置数据库邮件,用于发送消息通知4、SQL Server代理->属性->警报系统->启用邮件配置文件,选择对应的邮件系统及配置文件详细配置步骤请参考SQL Server代理警报和操作员和SQL Server代理配置数据库邮...

2016-05-24 22:48:00 223

转载 存储过程的执行信息

近来遇到一个比较困扰的优化问题,存储过程的主体逻辑如下:ALTER PROC [dbo].[DBA_TroubleShooting]ASBEGIN DECLARE @StartTime DATETIME DECLARE @EndTime DATETIME SELECT @StartTime=CONVERT(VARCHAR,GETDATE(...

2016-05-16 22:58:00 129

转载 按作业执行时长优化

新到一家公司,需要折腾点认可出来。然后开始苦逼的优化工作~优化效果优化前,作业历史记录(前20)优化前,CPU使用情况有几个作业平均时长2.5~3.5小时,还有很多时长在半小时以上的作业,基本要到11-12点才能完成作业统计。CPU每天7:00-11:00一直维持在比较高的数值。优化后,作业历史记录(前20)最近三天的CPU情况最近一天的CPU情况优化后,作业执行时长明显降低,从最近3天...

2016-04-29 21:01:00 266

转载 主键、约束和索引

1、主键约束不允许出现 NULL 值。任何索引条目的索引键都不允许包含NULL。唯一约束允许包含 NULL 值,但唯一约束把两个 NULL 值当作重复值,所以施加了唯一约束的每一列只允许包含一个 NULL 值。 2、创建主键时会自动创建聚集索引,除非当前表中已经含有了聚集索引或是创建主键时指定了 NONCLUSTERED 关键字。 3、创建唯一约束时会自动创建非聚集索引,除非你指定了 C...

2016-04-05 21:36:00 702

转载 数据库权限检查

本篇文章仅用于检查主体所拥有的权限。我们可以按照 实例->数据库->数据库对象 逐一检查。--实例级别select * from sys.server_principals --服务器主体select * from sys.server_role_members --服务器角色成员select * from sys.server_permissions -...

2016-03-23 08:23:00 352

转载 排序规则不一致引起代理错误

是否还记得在部署DBA常规作业文章中,第4步所报的错误:无法解决 equal to 运算中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。当时针对那个作业对涉及的存储过程进行相应的修改是没有问题的,并且解决了那个错误。今天将SQLServer代理服务启动,发现代理日志中很多类似上次的错误,把所有作业禁用后,错...

2016-03-17 18:05:00 183

转载 事务隔离级别与阻塞

本篇文章参考《Microsoft SQL Server企业级平台管理实践》中第9章和第10章 阻塞与死锁1、事务隔离级别SQL Server数据库引擎支持下列隔离级别1.1、未提交读指定语句可以读取已由其他事务修改但尚未提交的行。也就是说,允许脏读。未提交读的意思也就是,读的时候不申请共享锁。所以它不会被其他人的排他锁阻塞,它也不会阻塞别人申请排他锁。SELECT * F...

2016-03-10 21:44:00 203

转载 日常监控部署

日常监控涉及的数据表、存储过程抽离到单独用户数据库,新环境中可以通过还原此库及相关作业即可快速完成部署~1、获取原备份文件从已部署的实例上备份数据库--备份数据库BACKUP DATABASE [DBA_Monitor] TO DISK = N'D:\Perfmon\DBA_Monitor_F_20160308.bak' WITH NOFORMAT, NOINIT,...

2016-03-08 21:02:00 164

转载 ANSI_NULLS、QUOTED_IDENTIFIER

数据库服务器重启后,游戏登录提示“您输入的用户名不存在,请重新注册!”重启前特意登录过平台,基本操作都正常。这之间并没对数据库做任何修改,怀疑是应用程序服务端的问题。开启跟踪监控登录过程,只跟踪到一个过程,手动执行过程也没有报错。将问题反馈给技术:【2014/02/18 10:17:32】[proc_VerifyUserPWEx] ADO 错误:0x80040e14,INSERT 失败,...

2016-02-24 21:45:00 181

转载 ROW_NUMBER

16:23 2015/4/16 删除重复数据,连续被两位同事问到完全相同的重复记录如何删除只保留一条create table del_samerecords(id int,remark varchar(10))goinsert into del_samerecordsselect 1,'a'go 2goinsert into del_samerec...

2016-02-24 09:03:00 56

转载 拆分跨天的时间数据

数据表记录了用户每次离开房间时的离开时间、游戏时长、在线时长,现在需统计用户每天的在线时长数据。现实中存在用户前一天进入了房间玩游戏,然后在次日离开房间,对于这类数据在数据库中依然只会记录一条记录,对应其离开房间时间、游戏时长、在线时长。如果我们直接用此记录查询,会出现用户当天在线时长>24小时的现象,业务上我们可以解释为跨天在线(游戏),但在逻辑上当天在线时长>24小时,显...

2016-02-22 21:31:00 508

转载 更换数据库服务器迁移步骤

背景:数据库服务器更换,1、用户数据库迁移(BACKUP/RESTORE);2、数据库登录名/用户迁移(注意孤立用户);3、作业迁移1、数据库迁移,备份数据库、拷贝备份文件到新服务器,还原数据库--还原示例USE [master]RESTORE DATABASE [DBA_Monitor] FROM DISK = N'D:\rsyncroot\PLAY_DBA_Mo...

2016-02-15 20:51:00 689

转载 缺失索引

系统最初运行时,我们不可能一次将所需的索引全部创建。往往需要让系统运行一段时间,再从相应的系统视图(sys.dm_db_missing_index_group_stats)去判断是否缺失索引。具有最高用户查询预期提高的缺失索引-- 缺失索引语句USE YourDBGOSELECT sys.objects.name table_name ,mi...

2016-02-15 15:15:00 158

转载 Windows平台配置免安装的MySQL

1、下载官网下载免安装文件(本文使用的是mysql-5.6.33-win32.zip)解压到E:\MySQL\mysql-5.6.33打开E:\MySQL\mysql-5.6.33\my-default.ini,在最后加上如下几行,然后另存为E:\MySQL\mysql-5.6.33\my.ini#-------------------------------------...

2016-02-12 20:13:00 66

转载 链接服务器对查询的影响

收集12小时的Profiler跟踪文件,用RML分析查看消耗前N的语句:上图是某生产环境特定LoginName,消耗前N的情况(按总CPU降序)。蓝色底纹的是几个调用频繁的过程,可以看到过程平均CPU在1000毫秒以上,平均执行时间在1.5秒左右,注意它们的平均逻辑读很低!查看存储过程代码,发现有一个共同点,与 链接服务器.数据库.架构.表名 LEFT JOIN关联查询。查看当前服务器使...

2016-02-07 09:24:00 106

转载 事务复制-大批量DEL操作

同事讨论删除发布表历史记录,导致订阅端数据滞后N小时。后来询问得知,发布表T只保留最近31天的数据,每天由Job删除31天前的数据,每天的删除量约400-500万条。默认情况下,在发布端删除400万条记录,这样的DEL将被作为一个大型的、多步骤事务发送到订阅服务器(有400万个命令写入到分发,并发送到订阅服务器)。如果将删除命令封装成存储过程,并且复制存储过程的执行,则复制将仅发送在订阅...

2016-02-02 22:33:00 164

转载 Performance Analyzer Tool

PAL工具的使用大同小异,网上看到这篇文章挺不错的,直接翻译过来。如果你在过去有Exchange性能问题,你肯定知道有很多可变因素会影响Exchange整体性能,有时需要很长的时间才能找到问题的根源,因为它们可以变得相当复杂。如果你正在寻找一些带有图表功能的详细报表,那就是Performance Analyzer Tool(PAL)。PAL是一个非常有用且强大的工具,它从性能监视器计数器...

2016-01-31 21:20:00 149

转载 Top (参数)

最近在优化数据库服务器上高消耗语句/过程,发现一个存储过程优化后依旧出现在Profiler跟踪里。将Profiler跟踪文件中过程执行语句取出,打开一个查询窗口(SPID=144),set statisticsio on,同时开启Profiler跟踪SPID=144中的语句执行情况。下面是在查询窗口的执行结果,逻辑读只有17:我们再看Profiler跟踪窗口的结果:此处的CPU(121...

2016-01-26 21:23:00 111

转载 SQL Nexus

在前面的SQLdiag系列中有提到SQLNexus,当时我们用SQLNexus查看了Perfmon Summary(性能计数器)、ReadTrace Reports(跟踪文件)两项报表。SQLNexus将SQL跟踪数据、性能监视器日志以及各种T-SQL脚本的输出聚合到单个SQL Server数据库中。这一篇将以生产环境中收集的数据来分析SQLNexus的各个报表。SQLdiag收集数据导...

2016-01-15 20:53:00 142

转载 SQLdiag-配置文件-扩展

CustomDiagnostics在我们第一次双击D:\Program Files\Microsoft SQL Server\100\Tools\Binn目录下的SQLdiag.exe应用程序所收集的SQL Server默认跟踪、SQLDUMPER_ERRORLOG、MSINFO32输出,实际就是使用了自定义诊断收集器:上一篇我们提到将过滤器添加到自定义收集器,由于添加过滤器需Stop再...

2016-01-13 22:05:00 133

转载 SQLdiag-配置文件-ProfilerCollector

上一篇,我们讲述了配置文件中与性能计数器相关的PerfmonCollector元素;这一篇我们将讲述与跟踪数据相关的ProfilerCollector元素。在上一篇中使用SD_Detailed.XML配置文件在我本地收集5分钟跟踪数据文件为7Mb,当时没有做任何其他操作,试想如果在一个繁忙的生产环境,生成的跟踪文件大小将会更大。跟踪数据,与添加的跟踪事件,系统繁忙程度有关。SQLdiag...

2016-01-09 15:26:00 81

转载 SQLdiag-配置文件-PerfmonCollector

前一篇我们已经使用默认配置文件收集了部分诊断数据,并且知道配置文件会影响收集数据的内容。这一篇我们重点讲述配置文件中与性能计数器相关的操作。可使用XML模板控制SQLdiag使用的收集器。每个收集器可以使用配置文件的<enabled="true">或<enabled="false">来启用或禁用。使用自己最喜欢的文件编辑器,甚至在支持XML文档编辑的Managem...

2015-12-31 20:58:00 97

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除