博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2016年3月10日

摘要: This blog post is meant to help people troubleshoot page latch contention on 2:1:103. If that’s what brought you to this page, then hopefully you find 阅读全文

posted @ 2016-03-10 22:33 nzperfect 阅读(337) 评论(0) 推荐(0) 编辑

2014年5月26日

摘要: SQL Server 2012 推出的最重要的功能之一Alwayson,是一个集之前Cluster和Mirror于一体的新功能,即解决了Cluster依赖共享存储的问题,又解决了镜像不能实时读以及转移后连接串需要添加转移IP的问题,看起来的确很实用。而且Alwayson多副本的功能为实现读写分离提供... 阅读全文

posted @ 2014-05-26 11:20 nzperfect 阅读(9545) 评论(14) 推荐(4) 编辑

2014年5月23日

摘要: 本篇是上一篇SQL Server Log文件对磁盘的写操作大小是多少的续,使用XEvent收集SQL Server Data文件和Log文件的写大小,脚本如下:DECLARE @DBNAME VARCHAR(256)SET @DBNAME = 'myDB'DECLARE @sqlcmd NVARCH... 阅读全文

posted @ 2014-05-23 16:58 nzperfect 阅读(1087) 评论(1) 推荐(2) 编辑

摘要: SQL Server 数据库有三种文件类型,分别是数据文件、次要数据文件和日志文件,其中日志文件包含着用于恢复数据库的所有日志信息,SQL Server总是先写日志文件ldf,数据变化写入mdf则可以滞后,所以日志写入的速度在一定程序上决定了SQL Server所能承载的写事务量,那么ldf写入大小... 阅读全文

posted @ 2014-05-23 11:23 nzperfect 阅读(1397) 评论(3) 推荐(1) 编辑

2014年3月24日

摘要: 安装SQL后服务不能启动,报错:2014-03-24 14:33:10.06 spid13s Error: 17190, Severity: 16, State: 1.2014-03-24 14:33:10.06 spid13s Initializing the FallBack certificate failed with error code: 1, state: 20, error number: 0.2014-03-24 14:33:10.06 spid13s Unable to initialize SSL encryption because a valid certificat 阅读全文

posted @ 2014-03-24 16:02 nzperfect 阅读(1482) 评论(0) 推荐(0) 编辑

2014年1月28日

摘要: When you install SQL Server 2012 and you try to connect to SSIS services, you cannot due to that the SSIS service not running. When you manually try to start the SSIS service the service may fail due to login failure of the service account.By Default, SQL Server 2012 tries to use and create the acco 阅读全文

posted @ 2014-01-28 10:24 nzperfect 阅读(405) 评论(0) 推荐(0) 编辑

2013年1月11日

摘要: 说明:灾难恢复系列的文章是由 Robert Davis 写的,发布在SQLSoldier, 个人认为挺不错的,所以根据自己的理解,边测试边整理,并非直接翻译,如有不准确,欢迎指正。本篇进入数据库灾难恢复第五篇,上一篇演示了修复简单的非聚集索引损坏,今天,我们将看一个稍复杂点儿的,那就是管理区分配页损坏,不过分配页无法修复,只能恢复整个数据库。什么是管理区分配页?管理区分配页是数据文件中特殊的页,用来跟踪和管理区分配,本篇将关注三种:全局分配映射表 (GAM):记录已分配的区,对于一个数据文件,每4GB会有一个GAM页,它的ID总是为2,之后每511,232页出现一次。 Page ID = 2 阅读全文

posted @ 2013-01-11 14:57 nzperfect 阅读(1052) 评论(1) 推荐(0) 编辑

摘要: 说明:灾难恢复系列的文章是由 Robert Davis 写的,发布在SQLSoldier, 个人认为挺不错的,所以根据自己的理解,边测试边整理,并非直接翻译,如有不准确,欢迎指正。本篇进入数据库灾难恢复第五篇,从本篇开始,主要深入讲述一些数据page损坏的问题,先从容易修复的非聚集索引开始。通常,处理数据损坏的情况按三个步骤进行:1.确定损坏(使用DBCC CHECKDB)2.确定损坏的对象及对象类型(如索引页、分配页等)3.确定适合的修复方法确定损坏当我们在做一些例行完整性检查或者收到一些其它的错误或警告,如果有一个page损坏的信息,不要直接就去处理这个页面,应该先对数据库运行DBCC C 阅读全文

posted @ 2013-01-11 11:25 nzperfect 阅读(1938) 评论(0) 推荐(0) 编辑

2013年1月10日

摘要: 说明:灾难恢复系列的文章是由 Robert Davis 写的,发布在SQLSoldier, 个人认为挺不错的,所以根据自己的理解,边测试边整理,并非直接翻译,如有不准确,欢迎指正。本篇进入数据库灾难恢复第四篇,主要讨论备份的重要以及一些容易被忽视而没有备份。系统数据库大多数人都知道要备份用户数据库,其实系统数据也需要备份,他们是master,model,msdb,distribution,以及resource数据库,它的备份采用copy数据文件(mssqlsystemresource.mdf and mssqlsystemresource.ldf)的方式,copy到你的放备份的目录。证书和非对 阅读全文

posted @ 2013-01-10 22:19 nzperfect 阅读(873) 评论(0) 推荐(0) 编辑

摘要: 说明:灾难恢复系列的文章是由 Robert Davis 写的,发布在SQLSoldier, 个人认为挺不错的,所以根据自己的理解,边测试边整理,并非直接翻译,如有不准确,欢迎指正。本篇进入数据库灾难恢复第三篇,主要提供一个脚本,该脚本通过读取msdb库的一些备份记录信息,自动得到指定数据库最后一个全备+最后一个差异+这之后的全部Log备份。场景:假设你的数据库在某一个时间点被误删除了一个表或者多个表数据,之后发现这个问题,现在需要把数据恢复,那么你可能要先还原一个全备,再加一个差异备(如果有),然后再还原一堆Log备份,如果你5分钟一个Log备份,那么你如果快速的确定这些文件名称及所在位置,以 阅读全文

posted @ 2013-01-10 22:19 nzperfect 阅读(871) 评论(0) 推荐(0) 编辑

摘要: 说明:灾难恢复系列的文章是由 Robert Davis 写的,发布在SQLSoldier, 个人认为挺不错的,所以根据自己的理解,边测试边整理,并非直接翻译,如有不准确,欢迎指正。本篇进入数据库灾难恢复第二篇,主要讨论还原包含数据库备份的还原时的保护措施,特别是当你拿到一个包含数据库备份,但没有人告诉你他是一般数据库还是包含数据库时,它本身会是一个什么样的保护措施呢?还原包含数据库:当我了解到包含性数据库,我第一个担心的问题是,作为一个dba如何阻止那些没有专业知识的人来访问数据库呢?还好,已经有三个保护层面了。第一层保护:在还原一个包含数据库或创建一个包含数据库之前,或者之前已经存在一个包含 阅读全文

posted @ 2013-01-10 22:18 nzperfect 阅读(1227) 评论(0) 推荐(0) 编辑

摘要: 说明:灾难恢复系列的文章是由 Robert Davis 写的,发布在SQLSoldier, 个人认为挺不错的,所以根据自己的理解,边测试边整理,并非直接翻译,如有不准确,欢迎指正。作为灾难恢复这个系列的第一篇文章,我们看一下如果一个数据库存在快照数据库,那么当执行DBCC CHECK命令时,是否会自动使用已存在的快照数据库呢?我一直认为是不会的,并且也这样告诉其它人。为了证明给我自己以及其它人,本篇将尝试最终去证明DBCC CHECK命令将不会使用已存在的数据库快照。执行DBCC CHECK命令时是否会自动使用已存在的快照数据库 ?我做了大量DBCC CHECK命令的调查试图找到办法查看DBC 阅读全文

posted @ 2013-01-10 22:17 nzperfect 阅读(1500) 评论(0) 推荐(0) 编辑

2013年1月9日

摘要: 背景:最近一段时间,有一个发布订阅在晚上总是报延时,由于晚上在copy备份占用带宽,而且晚上没有人使用订阅上的数据,所以也一直没有去看,最近有时间,上去看了下,发现诸多问题,服务器是12GB内存16CPU.排查步骤及解决办法:1.查看到当前大量的PAGEIOLATCH_SH等待信息,执行的是分发的读程进命令SQL-sp_MSget_repl_commands,怀疑IO/内存有压力,理论上分发库不大,应该可以全部缓存在内存中:2.于是查看分发库大小,发现有22GB,再查看表msrepl_commands数据量,居然有4000W,16GB大小:3.需要再排查一下是发布到分发和分发到订阅是哪个出现了 阅读全文

posted @ 2013-01-09 10:16 nzperfect 阅读(1446) 评论(0) 推荐(1) 编辑

2012年12月28日

摘要: 作者:nzperfect本文地址:http://www.cnblogs.com/nzperfect/archive/2012/12/28/2837286.html本文示例使用FASH nuber_rows改变SQL执行计划准备测试数据:USE TEMPDBGO--建立基本数据:--///////////////////CREATE TABLE STUDENT(SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL, SBIRTHDAY DATETIME,CLASS VARCHAR(5))GOCREA 阅读全文

posted @ 2012-12-28 14:45 nzperfect 阅读(1252) 评论(2) 推荐(1) 编辑

2012年12月26日

摘要: 相信,很多网友都有用SQL界面生成脚本再执行的习惯,今天在CSDN看到一个案例,好大的风险-_-!!!本示例是将一个表的列由datetime变成char型:step 1 生成数据库:USE masterGO--创建测试数库CREATE DATABASE [DB_TEST] ON PRIMARY ( NAME = N'DB_TEST', FILENAME = N'D:\SQL2008\Data\DB_TEST.mdf' , SIZE = 512MB , FILEGROWTH = 1024KB, MAXSIZE = 524288KB)LOG ON ( ... 阅读全文

posted @ 2012-12-26 17:32 nzperfect 阅读(2250) 评论(6) 推荐(5) 编辑

2012年12月24日

摘要: 考虑这种情况:在大多数时间里你的存储过程运行良好,但是有时非常差,性能仿佛从天下掉到地下,有人会说肯定是统计信息更新不及时,而且当你手动运行它并查看执行计划,你会发现预估行数和实际行数有很大差距,你会因此而确定是统计信息不准确造成执行计划生成不正确。但是,可能并不是。。。存储过程、使用sp_executesql的参数化语句、预编译的SQL语句都会重用一个缓存的执行计划,它是由一个称为参数嗅探定义的,参数嗅探本身并没有问题,但是相同的存储过程或参数化语句去调用已经生成的执行计划时,就有可能引发一些问题。比如:如果一个参数化查询语句只返回一行数据,那么它可能会生成一个简单的轻量级执行计划,这个执行 阅读全文

posted @ 2012-12-24 16:42 nzperfect 阅读(1988) 评论(21) 推荐(4) 编辑

2012年12月19日

摘要: /*该脚本示例如何完整的修改一个数据库的名称.数据库为原名称为DB_BEIJING,需要修改成DB_SHANGHAInzperfect 2012.12.19*/--判断是否存在同名的数据库,以防止误删除USE masterGOIF EXISTS (SELECT name FROM sys.databases WHERE name = N'DB_BEIJING')BEGIN RAISERROR('请注意:数据库已存在!',15,1) RETURN --DROP DATABASE DB_BEIJINGENDGOUSE masterGO--创建测试数库CREATE D 阅读全文

posted @ 2012-12-19 17:42 nzperfect 阅读(5004) 评论(0) 推荐(0) 编辑

2012年12月12日

摘要: 考虑下面的情况:当update值与原值相同时,SQL Server会真的去update还是忽略?例如:update tbnameset name='abc' --name原来的值就是abcwhere id=1再如:update tbnameset name='abc' --name原来的值就是abcwhere name='abc'接下来我们将实际测试:--Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Micros 阅读全文

posted @ 2012-12-12 14:08 nzperfect 阅读(5168) 评论(8) 推荐(7) 编辑

2012年8月22日

摘要: Safety FULL with Witness :Well the answer for this ‘depends on the mode in which mirroring is configured’. If mirroring is configured in High Availability mode (Full safety) then we don’t need to worry about failover as the mirror server will form a quorum with witness and will initiate an automatic 阅读全文

posted @ 2012-08-22 17:57 nzperfect 阅读(622) 评论(0) 推荐(0) 编辑

2012年8月13日

摘要: Windows Server 2008 R2 En Enterprise 64bitSQL Server 2008 R2 En Enterprise 64bit症状:在performance monitor中看不到Sql Server相关的性能计数器解决办法:Rebuilding the counters: cd c:\windows\system32 lodctr /R cd c:\windows\sysWOW64 lodctr /RResyncing the counters with Windows Management Instrumentation (... 阅读全文

posted @ 2012-08-13 14:52 nzperfect 阅读(1229) 评论(0) 推荐(1) 编辑

2012年7月24日

摘要: 错误:对数据库的备份、文件操作(如 ALTER DATABASE ADD FILE)以及加密更改必须序列化。请在当前备份或文件操作完成后重新发出该语句。Shrink Database fails with Error “Backup, file manipulation operations”In some cases users may get below error while trying to shrink their databases manually or using SQLServer management studio.Executing the query "DB 阅读全文

posted @ 2012-07-24 17:09 nzperfect 阅读(8715) 评论(2) 推荐(0) 编辑

2012年4月24日

摘要: 记录一下之前遇到过两次服务器由于MEMORYCLERK_SQLOPTIMIZER占用内存过高带来的性能问题。症状:SQL Server突然变的特别慢,无论是读还是写。检查:如下图,可以看到当前正在进行的进程,等待类型是RESOURCE_SEMAPHORE,初步判断是内存不足造成;接下来我们查看服务器内存配置:可以看到SQL可用内存为29GB,实用29GB,没有问题,再继续,可以看到Single_page占到了27GB左右,这表明DataPage只占到了2GB,明显存在问题;再接下,我们查看SinglePage内存占用情况,发现MEMORYCLERK_SQLOPTIMIZER占用了27GB左右; 阅读全文

posted @ 2012-04-24 11:08 nzperfect 阅读(1725) 评论(1) 推荐(0) 编辑

2012年3月21日

摘要: 原文:http://blogs.msdn.com/b/grahamk/archive/2011/01/10/sql-server-blocking-caused-by-database-mirroring-wait-type-dbmirror-dbm-event.aspxI was looking at a problem this morning about long blocking chains caused by the wait type DBMIRROR_DBM_EVENT, and it makes an interesting case study about database 阅读全文

posted @ 2012-03-21 15:23 nzperfect 阅读(1099) 评论(0) 推荐(0) 编辑

2012年3月12日

摘要: Today, I uninstalled the SQL Server 2008 on Windows Server 2003 and encountered an issue with "Restart computer", But restart computer many times, it was still this error.Finally, I got it from "http://ntsblog.homedev.com.au/index.php/2010/05/05/sql-server-2008-uninstall-restart-compu 阅读全文

posted @ 2012-03-12 16:30 nzperfect 阅读(583) 评论(1) 推荐(0) 编辑

2012年3月8日

摘要: 起因:前一段时间在为一组sql server 2008 failover cluster安装sp3,之前是sq1.windows server 2003 enterprise 64bit + sql server 2008 enterprise 64bitfailover cluster 是active/acitve 双实例问题:在两个节点都install sp3后,发现有一个sql server实例在切换时(其实也就是在restart sql server service),用SSMS连接时会显示“服务器处于脚本升级模式。此时只有管理员可以进行连接”,大概几分钟,之后就正常了,当时就并未重视 阅读全文

posted @ 2012-03-08 10:15 nzperfect 阅读(1224) 评论(3) 推荐(0) 编辑

2012年3月7日

摘要: SQL Server 2012 正式发布 2012.3.7pls refer:https://www.microsoft.com/sqlserver/en/us/default.aspxhttp://blogs.technet.com/b/dataplatforminsider/archive/2012/03/06/sql-server-2012-released-to-manufacturing.aspxhttps://www.microsoft.com/sqlserver/en/us/get-sql-server/try-it.aspx下载sql server 2012 阅读全文

posted @ 2012-03-07 14:02 nzperfect 阅读(643) 评论(3) 推荐(0) 编辑

2012年2月21日

摘要: 来自:msdn论坛贴子创建一个测试表TESTTABLE,并且插入如下两行数据:insertinto TESTTABLE values (1, 'aaaa')insertinto TESTTABLE values (2, 'bbbb')然后做如下的操作。update TESTTABLEset myName = 'cccc' where myID = 2为了更加直观化,我们可以用一些日志工具如ApexSQL Log (从http://www.apexsql.com/ ) 可以下载来观察一下日志的结构。这时候,我们可以看到,update的语句包含了ol 阅读全文

posted @ 2012-02-21 10:16 nzperfect 阅读(590) 评论(1) 推荐(1) 编辑

2012年2月17日

摘要: 原文:http://blogs.msdn.com/b/sqlprogrammability/archive/2007/01/11/4-0-query-parameterization.aspxUsing parameters or parameter markers in queries increases the ability of SQL Server to reuse compiled plans. There are two places where parameterization of queries can be done: on the client side applica 阅读全文

posted @ 2012-02-17 14:11 nzperfect 阅读(540) 评论(0) 推荐(0) 编辑

2012年2月3日

摘要: 原文:http://blogs.msdn.com/b/apgcdsd/archive/2011/12/30/10251946.aspx截取一段,备查日志文件如何影响我数据库的启动?无论你的SQL Server启动,或者你将某数据库重备份中恢复,或者其他的一些情况,总之在你的数据库能够被正常使用之前,你的数据库都会进入 Recovery的状态。http://msdn.microsoft.com/en-us/library/ms190442.aspx 如果这一个步失败,那么你的数据库就会进入Suspect状态而无法正常使用。在一些特殊情况下,这个Recovery所花费的时间会很长。在数据库进入On 阅读全文

posted @ 2012-02-03 16:56 nzperfect 阅读(432) 评论(0) 推荐(0) 编辑

2012年2月1日

摘要: 原文:http://blogs.msdn.com/b/askjay/archive/2010/02/05/how-can-i-create-a-dump-of-sql-server.aspxYou can create a memory dump of the SQL Server process space in several ways. There are many external tools that can help you accomplish this such as userdump.exe, debugdiag.exe, and ADPlus.exe. In this po 阅读全文

posted @ 2012-02-01 14:58 nzperfect 阅读(580) 评论(0) 推荐(0) 编辑

2011年12月1日

摘要: 考虑这样的场景,现在每天要同步更新的数据,为了记录哪些数据发生过变更,需要对表添加一个rowversion列来标识被更新过。恰好这个表比较大,而且有发布订阅。由于该字段对于订阅表来讲,无实际意义,而且添加一个有默认值的不可为空的8字节字段,会产生数据空间分配,或许带来大量的页拆分,对IO压力会加大,所以考虑将此表的发布项暂时改为不支持架构复制,等添加完该字段后,再将其改为支持架构复制。下面来做这个测试:1.下面是一个正常的事务发布,将DB_1中的T_1发布到DB_2的T_1表中。2.修改发布项DBrepTEST关于架构复制的选项,设置为不支持DECLARE @publication AS sy 阅读全文

posted @ 2011-12-01 13:19 nzperfect 阅读(1409) 评论(2) 推荐(0) 编辑

2011年11月28日

摘要: 【介绍】SQL Server 通过WORKER, SCHEDULER, TASK等来对任务进行调度和处理。了解这些概念,对于了解SQL Server 内部是如何工作,是非常有帮助的。通常来讲,SCHEDULER个数是跟CPU个数相匹配的 。除了几个系统的SCHEDULER以外,每一个SCHEDULER都映射到一个CPU,如下面的查询结果所示,我们有四个CPU,也就有相应四个SCHEDULER。而WORKER (又称为WORKER THREAD), 则是工作线程。在一台服务器上,我们可以有多个工作线程。因为每一个工作线程要耗费资源,所以,SQL Server有一个最大工作线程数。一个TASK进来 阅读全文

posted @ 2011-11-28 11:03 nzperfect 阅读(915) 评论(4) 推荐(1) 编辑

2011年11月25日

摘要: 首先看下面这段代码,可以看出:blocked-process是被阻塞的进程,执行的sql是select * from temp1blocking-process是正在产生阻塞的进程,执行的sql是select * from temp1 with(nolock)如果你偶尔抓到了这样的report,肯定会奇怪吧,为什么呢?理论下面的sql不会对上面的sql产生阻塞。<blocked-process-report> <blocked-process> <process id="process3d92550" taskpriority="0& 阅读全文

posted @ 2011-11-25 14:55 nzperfect 阅读(2661) 评论(4) 推荐(2) 编辑

2011年11月22日

摘要: 原文:http://sqlserverpedia.com/wiki/SAN_Performance_Tuning_with_SQLIODownloading and Configuring SQLIO[Download SQLIO from Microsoft]Notice that I said SQLIO, not SQLIOSIM. Experienced database administrators will often direct you to SQLIOSIM because it's easier to use and mimics SQL Server's 阅读全文

posted @ 2011-11-22 16:45 nzperfect 阅读(534) 评论(1) 推荐(0) 编辑

2011年11月15日

摘要: Well, this is often a tricky situation, where you are running into Virtual Address Fragmentation and getting OOM (out-of-memory)errors in your SQL Server. More often than not there is confusion between physical memory pressure vs. virtual memory pressure. Adding more RAM is definitely not a solution 阅读全文

posted @ 2011-11-15 16:07 nzperfect 阅读(683) 评论(0) 推荐(0) 编辑

2011年11月3日

摘要: http://blogs.msdn.com/b/distributedservices/archive/2008/11/12/troubleshooting-msdtc-issues-with-the-dtcping-tool.aspxEvery day the Distributed Services support team in Microsoft helps customers in troubleshooting some of the most common Distributed Transaction errors which are a direct result of MS 阅读全文

posted @ 2011-11-03 15:29 nzperfect 阅读(4689) 评论(0) 推荐(0) 编辑

摘要: 订阅库中有很多的死锁现象,MSreplication_subscriptions表中有8条记录,死锁大概是1小时40个,如下所示:deadlock-listdeadlock victim=processdbf1c8 process-list process id=processdbf1c8 taskpriority=0 logused=2116 waitresource=PAGE: 6:1:3304140 waittime=577 ownerId=1250752686 transactionname=user_transaction lasttranstarted=2011-11-03T09: 阅读全文

posted @ 2011-11-03 09:22 nzperfect 阅读(707) 评论(1) 推荐(0) 编辑

2011年10月27日

摘要: 原文http://www.cnblogs.com/awpatp/archive/2010/01/26/1656651.htmlTask Manager跟Performance Monitor的区别(Working set和Private bytes)windows server 2003 :在Performance monitor中可以通过private bytes和Virtual bytes来衡量程序的内存使用. 在task manager中, 也有Memory Usage和VM Size两项. 但是仔细比较后会发现Memory Usage并不是对应private bytes, VM Siz 阅读全文

posted @ 2011-10-27 16:38 nzperfect 阅读(955) 评论(0) 推荐(0) 编辑

摘要: 最近遇到一个问题,示例表结构如下:set statistics io onuse tempdb go--drop table TBcreate table TB (id int identity primary key, parentId int,name varchar(50))goinsert into TB(parentId,name) select 0,CAST(NEWID() as varchar(50))go 499990insert into TB(parentId,name) select 499990,CAST(NEWID() as varchar(50))insert in 阅读全文

posted @ 2011-10-27 14:13 nzperfect 阅读(1566) 评论(1) 推荐(2) 编辑

2011年10月9日

摘要: SQL Server 2008 Service Pack 3http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27594Microsoft SQL Server 2008 SP3 Express Editionhttp://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27597Microsoft SQL Server 2008 Service Pack 3 Feature Packhttp://www.microso 阅读全文

posted @ 2011-10-09 15:28 nzperfect 阅读(369) 评论(0) 推荐(1) 编辑