摘要: 工作中经常需要用SQLServer发送报警或者业务报表邮件,每次现拼串也不是办法,故写了一个TableResult to HTML的存储过程 使用方法: 效果图: 阅读全文
posted @ 2018-06-11 17:07 czperfectaction 阅读(298) 评论(0) 推荐(1) 编辑
摘要: mysql> create table zc_test2(id int); Query OK, 0 rows affected (1.37 sec) mysql> insert into zc_test2 values (10),(9),(8),(7),(6); Query OK, 5 rows affected (0.04 sec) Records: 5 Duplicates: 0 Wa... 阅读全文
posted @ 2018-06-08 14:49 czperfectaction 阅读(23892) 评论(0) 推荐(0) 编辑
摘要: 最近有一张表(内含varchar(max)字段),占用空间达到240G,删除历史数据后几十万条后,空间并未得到释放。 然后用DBCC CLEANTABLE(0,tb_name,100)来释放删除记录后变长字段留下的空间,注意第三个参数为每个事务处理的行数, 强烈建议使用,默认是0,将整个操作作为一个事务处理!全程锁表!! 执行完DBCC CLEANTABLE后,发现表空间已经释放,占用空间几百兆,... 阅读全文
posted @ 2014-09-18 18:10 czperfectaction 阅读(744) 评论(0) 推荐(0) 编辑
摘要: 在生产环境中,会有很多使用ReadPast查询提示的场合,来避免正在被其它事务锁定的行对当前查询造成阻塞,而又不会获取到“脏数据”。可是很多人都疑惑,为什么我使用了ReadPast仍然有时会被阻塞?首先我们找到联机帮助:READPAST指定数据库引擎不读取由其他事务锁定的行。 如果指定了 READP... 阅读全文
posted @ 2014-08-20 16:44 czperfectaction 阅读(8193) 评论(4) 推荐(3) 编辑
摘要: 报错: 分发数据库中可能存在不一致的状态: dist_backup_lsn {00000030:000001ba:0004},dist_last_lsn {00000030:000001cd:0004}。请执行 "sp_repldone NULL, NULL, 0, 0, 1",然后执行 sp_replflush。请重新初始化对发布的所有订阅。 (源: MSSQLServer,错误号: 1884... 阅读全文
posted @ 2014-08-08 12:05 czperfectaction 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 软件环境:Windows Server 2008 R2 sp1 SQL Server 2008 R2 sp2架构:ServerA(主体)+ServerB(镜像)+ServerSub(订阅)+ServerDist(分发)特别注意:ServerDist分发服务器为单机,故开启了Sync_With_Bac... 阅读全文
posted @ 2014-08-04 12:00 czperfectaction 阅读(1639) 评论(1) 推荐(1) 编辑
摘要: 将业务语句翻译成SQL语句不仅是一门技术,还是一门艺术。下面拿我们程序开发工程师最常用的ROW_NUMBER()分页作为一个典型案例来说明。先来看看我们最常见的分页的样子:WITH CTE AS( SELECT ROW_NUMBER() OVER ( ORDER BY (A.Create... 阅读全文
posted @ 2014-07-14 18:44 czperfectaction 阅读(3824) 评论(1) 推荐(1) 编辑
摘要: 上次放出了一篇文章,针对磁盘卷簇大小默认4KB和自定义64KB进行了测试,测试内容为随机和顺序读写,大小为8KB和64KB,有人觉得这并没有照顾到SQL Server所有的IO使用情景。这篇测试文章,我们就来尽可能模拟一下SQL Server IO的行为,全方位对簇大小4KB、8KB和64K... 阅读全文
posted @ 2014-04-29 12:54 czperfectaction 阅读(2946) 评论(0) 推荐(2) 编辑
摘要: 数据库调优工作中,有一部分是需要排查IO问题的,例如IO的速度或者RAID级别无法响应高并发下的快速请求。最常见的就是查看磁盘每次读写的响应速度,通过性能计数器Avg.Disk sec/Read(Write)我们可以很直观的看到他们。不同的业务,繁忙程度也不同,需要什么样的IO做支撑?难道都用... 阅读全文
posted @ 2014-04-15 15:06 czperfectaction 阅读(5359) 评论(20) 推荐(16) 编辑
摘要: 场景: 最近一台DB服务器偶尔出现CPU报警,我的邮件报警阈(请读yù)值设置的是15%,开始时没当回事,以为是有什么统计类的查询,后来越来越频繁。探索: 我决定来查一下,究竟是什么在作怪,我排查的顺序如下: 1、首先打开Cacti监控,发现最近CPU均值在某天之后骤然上升,并且可以看到System\Processor Queue Length和sqlservr\%ProcessorTime 也在显著的变化。 2、从最容易入手的低效SQL开始,考虑是不是最近业务做了什么修改?连接到该SQL实例,打开活动监视器,展开“最近耗费大量资源的查询”,并CPU时间倒序,在这里并未发现有即时的. 阅读全文
posted @ 2014-03-10 17:35 czperfectaction 阅读(8858) 评论(38) 推荐(90) 编辑