关闭

[置顶] 管理SQL Server AlwaysOn(5)——常规监控(1)——常规监控

本文属于管理SQL Server AlwaysOn 系列文章 前言: 前面几节提到了如何对AlwaysOn做常规管理,这一节和接下来的一节专门对“监控”进行解释和演示。管理和监控这两个词在很多时候是混淆的,但是我们大概也可以区分出来,比如我做备份...
阅读(3271) 评论(10)

[置顶] 管理SQL Server AlwaysOn(1)——基础维护

本文属于管理SQL Server AlwaysOn 系列文章 前言: 前面系列已经介绍了SQL Server AlwaysOn的知识点、安装演示及注意事项等。但是这并不是终点,更多的反而是起点。就像不能生了孩子就不管,你还得养(管理)。作为DBA,更...
阅读(3831) 评论(2)

[置顶] 从0开始部署基础的AlwaysOn

在这个快餐文化盛行的时代,应该没多少人真的会沉下心来看理论和具体步骤,加上我自己也需要一篇可以扩展的快速搭建环境的指引,所以特别写了这篇文章。 我们在这里要做的事情有以下几个:安装环境。包括虚拟机和网络配置等。安装Windows域、配置必要的账号密码及功能。搭建域环境并进行配置。安装配置Windows Server Failover Cluster(WSFC)。安装SQL Server。配置Alw...
阅读(2234) 评论(2)

[置顶] SQL Server AlwaysON从入门到进阶(6)——分析和部署AlwaysOn Availability Group

本文属于SQL Server AlwaysON从入门到进阶系列文章前言: 本节是整个系列的重点文章,到现在,读者应该已经对整个高可用架构有一定的了解,知道独立的SQL Server实例和基于群集的SQL Server FCI的区别。上一节已经介绍了如何安装SQL Server Failover Cluster Instance(FCI)及其要求。 本节会深入AlwaysOn 可用组的内容,以演示...
阅读(1859) 评论(1)

[置顶] 基于SQL Alwayson的Windows Server 2012 WSFC搭建指南(2)——Windows 2012 Cluster搭建

本文属于 基于SQL Alwayson的Windows Server 2012 WSFC搭建指南 系列文章前言: 上一节介绍了AD的配置,对于SQL Server AlwaysOn而言,首先我们要有一个WSFC(Windows Server Failover Cluster),而WSFC首先又需要有一个Windows 域,所以AD的配置是前提条件。在配置完AD之后,我们就可以搭建WSFC。 但是搭...
阅读(1307) 评论(0)

[置顶] 基于SQL Alwayson的Windows Server 2012 WSFC搭建指南(1)——简介及AD搭建和配置

本文属于 基于SQL Alwayson的Windows Server 2012 WSFC搭建指南 系列文章前言: 作为SQL Server DBA,在搭建SQL Server AlwaysOn(从SQL 2012引入)时,需要涉及Windows Server Failover Cluster的知识。在过去,本人任职的公司有专门的系统管理员负责提供基础环境,但是到了今时今日,即使有这样的环境,为了提...
阅读(1513) 评论(0)

[置顶] SQL Server AlwaysON从入门到进阶(4)——分析和部署Windows Server Failover Cluster

本文属于SQL Server AlwaysON从入门到进阶系列文章...
阅读(1784) 评论(0)

[置顶] SQL Server AlwaysON从入门到进阶(3)——基础架构

本文属于SQL Server AlwaysON从入门到进阶系列文章...
阅读(1970) 评论(1)

[置顶] SQL Server AlwaysON从入门到进阶(2)——存储

本文属于SQL Server AlwaysON从入门到进阶系列文章http://www.sqlservercentral.com/articles/always+on/107537/...
阅读(3023) 评论(2)

[置顶] SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?

本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章。根据工作需要在学习过程中顺带翻译以供参考。系列文章包含:SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?SQL Server AlwaysON从入门到进阶(2)——存储SQL Server AlwaysON从入门到进阶(3)——基础架构...
阅读(5792) 评论(1)

[置顶] SQL Server 虚拟化(2)——理想的SQL Server虚拟机架构

搭建SQL Server虚拟机,在各个组织之间都有自己的标准和最佳实践。从第一眼看去,光物理配置就有过百种,所有的这些细微差别都有可能为后续日常管理过程中故障侦测带来麻烦。如果创建一个合适的虚拟机模版,并用于后续新虚拟机的创建和部署,那么可以把很多部署问题最小化。 在本文中,会讨论“为什么”要针对当前SQL Server负载创建理想化的SQL Server虚拟机。下一章会演示对于目前主流的VMWa...
阅读(3546) 评论(3)

[置顶] SQL Server 虚拟化(1)——虚拟化简介

本文属于SQL Server虚拟化系列前言: 现代系统中,虚拟化越来越普遍,如果缺乏对虚拟化工作原理的理解,那么DBA在解决性能问题比如降低资源争用、提高备份还原速度等操作时就会出现盲点。所以基于本人工作环境的情况和大时代的趋势,同时根据个人经验,绝大部分的IT人员都对虚拟化持有怀疑或者保留意见的态度。所以这里开始一个系列文章,介绍SQL Server虚拟化的内容,内容来自 Stairway to...
阅读(3670) 评论(2)

[置顶] SQL Server 扩展事件(Extented Events)从入门到进阶(4)——扩展事件引擎——基本概念

本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列http://www.sqlservercentral.com/articles/Stairway+Series/145063/...
阅读(3718) 评论(1)

[置顶] SQL Server 扩展事件(Extented Events)从入门到进阶(3)——通过界面操作Extented Event

本文属于 SQL Server扩展事件(Extended Events)从入门到进阶 系列 对于接纳扩展事件,其中一个最大的障碍就是要对XML和XQuery有一定的了解以便分析数据。我们可以使用T-SQL来完成创建和运行会话,但是不管会话的存在目的是什么,数据都被编译成XML。但是从SQL 2012开始就去除了这种限制。我们通过上一文中介绍的,可以用GUI对扩展事件进行创建和管理,同样,在本文中,...
阅读(5826) 评论(1)

[置顶] SQL Server 扩展事件(Extented Events)从入门到进阶(1)——从SQL Trace到Extented Events

本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 由于工作需要,决定深入研究SQL Server的扩展事件(Extended Events/xEvents),经过资料搜索,发现国外大牛的系列文章,作为“学习”阶段,我决定先翻译这系列文章,后续在工作中的心得作为原创添加。原文地址:Stairway to SQL Server Extended Events...
阅读(5338) 评论(1)

[置顶] SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件

本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟踪方式运行以便在服务器上创建实际跟踪文件。接着把跟踪定义转换到扩展事件的CREATE EVENT SESSION脚本中。 上一篇文章可以成为你从SQL Trace通往扩展事件(Extented Eve...
阅读(7927) 评论(0)

[置顶] 理解性能的奥秘——应用程序中慢,SSMS中快(6)——SQL Server如何编译动态SQL

本文属于《理解性能的奥秘——应用程序中慢,SSMS中快》系列接上文:理解性能的奥秘——应用程序中慢,SSMS中快(5)——案例:如何应对参数嗅探...
阅读(5228) 评论(1)

[置顶] 理解性能的奥秘——应用程序中慢,SSMS中快(5)——案例:如何应对参数嗅探

本文属于《理解性能的奥秘——应用程序中慢,SSMS中快》系列 接上文:理解性能的奥秘——应用程序中慢,SSMS中快(4)——收集解决参数嗅探问题的信息...
阅读(5336) 评论(0)

[置顶] 理解性能的奥秘——应用程序中慢,SSMS中快(4)——收集解决参数嗅探问题的信息

本文属于《理解性能的奥秘——应用程序中慢,SSMS中快》系列 接上文:理解性能的奥秘——应用程序中慢,SSMS中快(3)——不总是参数嗅探的错...
阅读(4363) 评论(1)

[置顶] 理解性能的奥秘——应用程序中慢,SSMS中快(3)——不总是参数嗅探的错

本文接上文:[理解性能的奥秘——应用程序中慢,SSMS中快(2)——SQL Server如何编译存储过程](http://blog.csdn.net/dba_huangzj/article/details/53067436) 在我们开始深入研究如何处理参数嗅探相关的性能问题之前,由于这个课题过于广泛,所以首先先介绍一些跟参数嗅探没有直接关系的内容,但是又会导致语句在SSMS和应用程序中存在性能差...
阅读(3483) 评论(0)

[置顶] 理解性能的奥秘——应用程序中慢,SSMS中快(2)——SQL Server如何编译存储过程

接上文: 本文介绍SQL Server如何编译存储过程并使用计划缓存。如果你的应用程序完全没有用到存储过程,而直接使用SQL语句提交,本文大部分内容也是有效的。但是关于动态SQL的编译会在后面章节介绍,而这里重点关注让人头痛的存储过程问题。什么是存储过程? 虽然这个问题有点愚蠢,但是实际的问题是:什么对象有自己的查询计划?SQL Server为下面四类对象创建查询计划:存储过程。标量用户自定义函数...
阅读(4471) 评论(0)

[置顶] 理解性能的奥秘——应用程序中慢,SSMS中快(1)——简介

在工作中发现有不少类似的现象,有幸看到国外大牛写的一篇文章,由于已经完善得不能再添油加醋,所以决定直接翻译,原文出处:http://www.sommarskog.se/query-plan-mysteries.html#defaultsettings  本人水平有限,如果读者觉得自己英语过得去,建议阅读原文。在翻译过程中,不排除会对某些部分进行修改,但不会影响最终效果。 由于内容较多,所以把文章拆...
阅读(3006) 评论(0)

[置顶] 全废话SQL Server统计信息(2)——统计信息基础

我想在大地上画满窗子,让所有习惯黑暗的眼睛习惯光明——顾城《我是一个任性的孩子》 这一节主要介绍一些理论层面的东西,主要针对SQL Server,为后面的做铺垫,如果从实操层面考虑可以跳过,但是我强烈建议还是要找时间看一下这节。本节的内容如下:SQL Server统计信息列级统计信息统计信息与执行计划统计信息与内存分配开销预估模型SQL Server统计信息 说到统计信息,就一定要提到查询优化器,...
阅读(6332) 评论(4)

[置顶] 全废话SQL Server统计信息(1)——统计信息简介

为什么要写这个内容? 随着工作经历的积累,越来越感觉到,大量的关系型数据库的性能问题,其根源在于统计信息。这里说的是根源,其实很多时候大家觉得的那些什么索引失效等都只是表象。当然,不能一概而论,还有很多问题如配置问题、设计问题等等,甚至电源也会影响性能。 之所以得出这个结论,因为在常规的开发和部署过程中,一般企业级系统已经大量使用较为高级的磁盘阵列甚至企业级SSD,IO方面的问题已经很少,而且关系...
阅读(4447) 评论(0)

[置顶] T-SQL注意事项(1)——SET NOCOUNT ON的去与留

前言 用了一段时间T-SQL之后,哪怕自己没用过,也多多少少看过SSMS中的SET NOCOUNT ON命令,很多性能优化文章中都有提到这个东西,它们建议尽可能使用这个命令减少网络传输的压力,那么今天来看看它是否是个鸡肋。...
阅读(4912) 评论(4)

[置顶] SQL Server专家的10个秘诀(翻译加注解)

当你点开这篇文章的时候,如果觉得没有读下去的必要,也希望你能拉到最后看看那几行字!原文出处:https://technet.microsoft.com/en-us/magazine/gg299551.aspx译者注: 本文主要以翻译为主,但由于工作经历,译者也有一些自己的看法和心得,并且不打算完全照搬直译,期间过滤了一些本人觉得无关紧要的信息,如果读者觉得看的别扭,可以看原文。 这篇文章可能已被广...
阅读(9640) 评论(15)

[置顶] SQL Server性能优化——等待——SLEEP_BPROOL_FLUSH

前言: 有一个用于历史归档的数据库(简称历史库),经过一定时间的积累,数据文件已经达到700多GB,后来决定某些数据可以不需要保留,就把这部分数据truncate了,空余出600多GB的空间,也就是说,经过收缩后,理论上数据库只有100多G。为此,我经过重建各个表(表数量不多,但单表数量还是有几千万)的聚集索引后,准备进行收缩。 但是当收缩开始时,即使把每次收缩的范围缩小到500MB,速度也极其慢...
阅读(4672) 评论(3)

[置顶] SQL Server 执行计划操作符详解(3)——计算标量(Compute Scalar)

接上文:SQL Server 执行计划操作符详解(2)——串联(Concatenation )...
阅读(5220) 评论(2)

[置顶] SQL Server 执行计划操作符详解(2)——串联(Concatenation )

本文接上文:SQL Server 执行计划操作符详解(1)——断言(Assert)前言: 根据计划,本文开始讲述另外一个操作符串联(Concatenation),读者可以根据这个词(中英文均可)先幻想一下是干嘛的。其实还是挺直观,就是把东西连起来,那么下面我们来看看到底连什么?怎么连?什么时候连?...
阅读(3932) 评论(1)

[置顶] SQL Server 执行计划操作符详解(1)——断言(Assert)

前言: 很多很多地方对于语句的优化,一般比较靠谱的回复即使——把执行计划发出来看看。当然那些只看语句就说如何如何改代码,我一直都是拒绝的,因为这种算是纯蒙。根据本人经验,大量的性能问题单纯从语句来看很难发现瓶颈,同一个语句,由于环境的不同,差距非常大,所以比较合适的还是分析执行计划。 那么对于执行计划,一般使用图形化执行计划就差不多了,但是用过的人也有一些疑惑,里面的图标(称为操作符)并不非常...
阅读(6023) 评论(2)

[置顶] T-SQL动态查询(4)——动态SQL

接上文:T-SQL动态查询(3)——静态SQL 前言: 前面说了很多关于动态查询的内容,本文将介绍使用动态SQL解决动态查询的一些方法。 为什么使用动态SQL: 在很多项目中,动态SQL被广泛使用甚至滥用,很多时候,动态SQL又确实是解决很多需求的首选方法。但是如果不合理地使用,会导致性能问题及无法维护。动态SQL尤其自己的优缺点,是否使用需要进行评估分析:动态SQL优点:动态SQL提供了强大的扩...
阅读(8866) 评论(2)

[置顶] T-SQL动态查询(3)——静态SQL

接上文:T-SQL动态查询(2)——关键字查询   本文讲述关于静态SQL的一些知识和基础技巧。简介: 什么是静态SQL?静态SQL是和动态SQL相对而言的,其实我们没必要过于纠结精确定义,只要大概知道什么算静态SQL即可。当一个语句特别是存储过程,语句不需要动态生成或拼接,除了参数之外我们都知道语句的最终形态时,就可以认为这是静态SQL,简单来说,我们大部分的处理动态查询条件的语句都属于静态SQ...
阅读(4903) 评论(0)

[置顶] T-SQL动态查询(2)——关键字查询

接上文:T-SQL动态查询(1)——简介 前言: 在开发功能的过程中,我们常常会遇到类似以下情景:应用程序有一个查询功能,允许用户在很多查询条件中选择所需条件。这个也是本系列的关注点。 但是有时候你也许会发现,有些条件或多或少是互相排斥的。比如用户通过下面其中一个条件查找信息:1.  客户名2.  客户ID3.  客户身份标识号(如国内身份证、美国社保号等)。 并且这三列上都有适当的索引。本系列主...
阅读(4445) 评论(1)

[置顶] T-SQL动态查询(1)——简介

起因: 由于最近工作需要及过去一直的疑问,所以决定着手研究一下动态SQL。由于离开一线开发有点年头了,很多技巧性的东西没有过多研究,作为DBA和《SQL Server性能优化与管理的艺术》一书的独立作者,更多的是关注在满足功能要求前提下的性能问题。但是我认为本文不仅对DBA有用,对数据库开发人员甚至设计师、架构师等都有一定的参考价值。 前言: 读者是否遇到过类似功能:一个应用程序(不管是B/S还是...
阅读(7948) 评论(2)

[置顶] SQL Server 索引维护(1)——如何获取索引使用情况

前言: 在前面一文中,已经提到了三类常见的索引问题,那么问题来了,当系统出现这些问题时,该如何应对? 简单而言,需要分析现有系统的行为,然后针对性地对索引进行处理:对于索引不足的情况:检查缺少索引的情况,也需要检查现有索引定义是否有问题。对于索引过多的情况:分析每一个索引的使用情况,判断是否有存在的必要或者可合并、可修改的可能。对于索引不合理的情况:也要分析每个索引的定义,及其使用情况,确定索引是...
阅读(7175) 评论(5)

[置顶] SQL Server 索引维护(1)——系统常见的索引问题

前言: 在很多系统中,比如本人目前管理的数据库,索引经常被滥用,甚至使用DTA(数据库引擎优化顾问)来成批创建索引(DTA目前个人认为它的真正用处应该是在发现缺失的统计信息,在以前的项目中,用过一次DTA,里面提示了很多列缺少统计信息,后来在不改动其他操作的前提下,把这些统计信息手动建上去,性能提升非常明显。关于统计信息将另开文章介绍)。一个表甚至有20多个索引(索引的数量并没有标准,但是要尽量...
阅读(6080) 评论(1)

[置顶] T-SQL中的APPLY用法(半翻译)

本文接上文:T-SQL 中的CROSS JOIN用法(半翻译) 同样可用于微软认证70-461: Querying Microsoft SQL Server 2012考试的学习中。 ---------------------------------------------------------------------以下为译文-----------------------------------...
阅读(4964) 评论(0)

[置顶] T-SQL 中的CROSS JOIN用法(半翻译)

今天来翻译一篇关于T-SQL的文章,本文可供微软认证70-461:QueryingMicrosoft SQL Server 2012的学习和练习之用。本文以翻译为主,引出个人工作中的一些思考,详见最后部分。 我会尽可能抽时间翻译本系列(见原文出处的相关链接,这是一系列的文章)的其他文章,除了回顾一些知识之外,重点是总结一下自己的所得。 -------------------------------...
阅读(4287) 评论(0)

[置顶] SQL Server SA 最佳实践(也许不仅仅是翻译)

老实说,本文主要部分是翻译的,并且由于英语水平的问题,我没有完全翻译,有些我觉得不重要的就跳过了,目前看来应该八九不离十,或者说不会影响最终效果,对于英语水平好的读者,可以自行查看原文。但这一年里面我遇到了很多事情,也想了很多,我看的资料不少,但是记得的却少得可怜,要用的时候更加难以回忆。能知道从哪里找到就已经很幸运了。...
阅读(3808) 评论(5)

[置顶] Chapter 3 Protecting the Data(4):创建和使用应用程序角色

数据库角色用于管理数据库内部的访问和权限。数据库角色成员是能通过客户端软件如SSMS连接SQL Server的数据库用户,但是你可能希望授予某个特殊用户一些特权,但是仅限制于某个应用程序而不是SSMS时,第一个解决方案是使用专用SQL 帐号作为应用程序的登录。但是这个方案的缺点是需要使用SQL Server身份验证,并且不能标识出哪个用户正在连接SQL Server。但是可以使用同一个应用程序登录名,并且使用Windows身份验证,因此能更好地标识应用程序的用户,从而在必要的时候提升权限。...
阅读(4602) 评论(0)

[置顶] Chapter 3 Protecting the Data(3):创建和使用数据库角色

数据库层级的角色允许把数据库权限像服务器级别角色一样组合管理。你可以配置固定服务器角色,创建用户自定义角色等。...
阅读(4440) 评论(0)

[置顶] Chapter 3 Protecting the Data(2):分配列级权限

SQL Server的权限是有层次的,一个用户有架构级别的权限,就有了架构内部所有对象的权限,除非使用了DENY权限单独移除。但是对象并不是层次中的最低级,可以把权限设置到列级别。但是列级权限会覆盖掉表上被GRANT的权限。...
阅读(4316) 评论(0)

[置顶] Chapter 3 Protecting the Data(1):理解权限

关系型数据库管理系统(RDBMS),如SQL Server、Oracle、Mysql等,不仅仅需要负责存取数据,也要负责确保数据的一致性和安全性。类似于其他服务器系统,通过授权给一个用户并维护这个用户的会话来控制数据的访问行为。每当尝试读写数据时,SQL Server都会检查这些权限。...
阅读(4401) 评论(0)

[置顶] Chapter 2 User Authentication, Authorization, and Security(11):在已还原的数据库中修正登录映射错误

如果你把非包含数据库从一个服务器移到另外一个服务器,不管是备份还原还是分离附加,都有可能导致SQL用户变成孤立用户,意味着他们没有对应的登录关联。因为登录名和用户之间的映射是基于SID的,即使新服务器上有相同的登录名,但是由于SID不同,也会使得用户无法被识别,从而形成孤立用户。 如果在同一个域中迁移,那么映射问题仅会影响SQL登录,因为域账号(Windows身份验证)的SID在活动目录中是相同的。...
阅读(4044) 评论(0)

[置顶] Chapter 2 User Authentication, Authorization, and Security(10):创建包含数据库

在SQL Server中,安全性分为两级:服务器级别和数据库级别。服务器的登录名被映射到数据库中的一个用户。身份验证在登录名连接到服务器时发生。如果数据库中有这个登录名所对应的用户,那么这个登录名就能访问数据库。登录名和用户之间的映射是基于一个内部SID,当从一个服务器复制数据库到另外一个服务器,即使用户名相同,如果SID不同,也会打算这个连接关系。从2012开始引入了包含数据库(Contained database)概念,用于解决这种问题。...
阅读(3952) 评论(0)

[置顶] Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据

在SQL Server 2005之前,所有服务器和数据库元数据都是所有人可见的。当基于网银的系统把SQL Server实例共享给客户时,有可能可以看到其他用户的信息。从2005开始,可以通过控制权限来限制登录名或用户查看不必要的元数据。...
阅读(4183) 评论(0)

[置顶] Chapter 2 User Authentication, Authorization, and Security(8):创建映射到登录名的数据库用户

登录名用于授权并访问服务器资源,如果需要访问数据库,需要对数据库内部的用户进行映射。用户是数据库级别的安全主体,访问数据库资源是授予给用户,而不是登录名。...
阅读(6223) 评论(0)

[置顶] Chapter 2 User Authentication, Authorization, and Security(7):创建和使用用户自定义服务器角色

从SQL Server 2012开始,不再限制于使用固定服务器角色,可以创建自定义的角色,允许你预设特殊权限。...
阅读(3789) 评论(0)

[置顶] Chapter 2 User Authentication, Authorization, and Security(6):服务器权限授予粒度

在SQL Server 2005之前,只有通过添加登录到固定服务器角色,才能获取管理权限。SQL Server 2005引入了一套服务器粒度权限,允许你定义一套严密的权限给服务器级别的登录。...
阅读(3770) 评论(0)

[置顶] Chapter 2 User Authentication, Authorization, and Security(5):使用固定服务器角色

登录帐号允许你连到SQL Server,并且如果有数据库用户映射到这个帐号,那么这个帐号也可以访问对应的数据库。默认情况下,他们没有服务器层面的管理操作权。固定服务器角色允许你简化授权和回收权限的操作。...
阅读(4013) 评论(0)

[置顶] Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐号的管理权限

SA帐号是SQL Server的系统管理员,在安装过程中就可以启用,在SQL Server 2005之前,这个帐号不能修改,但是从2005开始,可以重命名或者禁用sa来减少被攻击的风险。在后续版本中,Sa仅作为向后兼容。由于SA是众人皆知的帐号,不建议使用。...
阅读(4490) 评论(1)

[置顶] Chapter 2 User Authentication, Authorization, and Security(3):保护服务器避免暴力攻击

暴力攻击(Brute-force attack)是通过几乎所有可能的字符组合尝试破解密码,或者使用一个字典表,包含几乎所有可能的密码来实现密码破解的方法。如果你的密码很简单,那么很快就会被破解。所以,测试密码是非常重要的。...
阅读(4295) 评论(0)

[置顶] Chapter 2 User Authentication, Authorization, and Security(2):创建登录帐号

登录帐号是定义在服务器(实例)级别,并能被授予进行管理任务、连接、访问数据库等权限的帐号。SQL Server安全模型有两个级别:服务器级别和数据库级别。登录帐号必须先创建在服务器级别。如果需要访问数据库,还需要在数据库级别创建一个用户映射到已有的登录名中。...
阅读(5515) 评论(0)

[置顶] Chapter 2 User Authentication, Authorization, and Security(1):选择Windows和SQL 身份验证

SQL Server 有两种身份验证:一种是WIndows身份验证,Windows身份验证使用Windows上的帐号,并利用其安全令牌进行验证。一种是SQL Server验证,使用SQL Server里面定义的帐号进行身份验证。...
阅读(5122) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(14):限制功能——xp_cmdshell 和OPENROWSET

基于安全性原因,某些功能在安装SQL Server时就被禁用,从2008开始,所有敏感选项可以通过一个叫【外围应用配置器】的【方面】进行管理,这个功能在2005的时候以独立工具的形式出现过,在2008又取消了。...
阅读(4356) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(13):配置端点安全性

SQL Server端点(Endpoint)是出入SQL Server的门户,通过端点,任何东西可以在网络和SQL Server之间传输。端点可以是系统或者用户自定义的,其中系统端点允许使用T-SQL连接SQL Server并发送查询。...
阅读(4000) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(12):保护链接服务器

链接服务器(Linked Server)可以使两个不同的SQL Server实例甚至和其他类型的RDBMS进行互访。通过链接服务器,可以实现分布式查询,类似于一个应用程序,把连接目标服务器的连接字符串预存起来。...
阅读(3819) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(11):使用透明数据库加密

如果没有对数据库文件(MDF/LDF等)做权限控制,攻击者可以把这些文件复制走,然后附加到自己机器上进行分析。第一层保护就是对SQL Server文件所在的NTFS文件系统进行权限管控。如果希望进一步保护数据库,可以使用透明数据库加密(Transparent Database Encryption,TDE),这个功能可以保护对应数据库的所有文件,不管有多少个文件。因为文件已经加密,即使这些文件被复制走,如果没有数据库主密钥,也一样不能使用。同时,这种加密不影响用户对数据库的使用,开发人员不需要对此做额外的工...
阅读(3980) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(10):使用扩展保护避免授权中继攻击

在客户端和服务器互访过程中,授权是会一直保持,通过验证,可以接受或拒绝连接。...
阅读(3730) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证

在活动目录(Active Directory)中,有两种身份验证机制:NTLM和Kerberos。其中NTLM(NT LAN Manager)是基于旧版加密方式的授权协议,微软不建议再使用。...
阅读(3786) 评论(0)

[置顶] Microsoft SQL Server Version List(SQL Server 版本号)

What version of SQL Server do I have?This unofficial build chart lists all of the known Service Packs (SP), Cumulative Updates (CU), patches, hotfixes and other builds of MS SQL Server 2014, 2012, 200...
阅读(19804) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(8):停止未使用的服务

如果完全安装SQL Server,会有一些非必要的组件也会被安装上去,这些组件会影响性能,也会带来更大的安全隐患。...
阅读(3560) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(7):禁用SQL Server Browse

SQL Server Browser 服务在安装SQL Server 群集或者命名实例时自动启动,它用于与机器上的SQL Server实例进行交互,并让客户端通过命名实例正在侦听的端口进行信息发送。...
阅读(3722) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙

SQL Server 的通信基于TCP和UDP端口,如果你需要从非本机的机器上访问SQL Server,需要打开防火墙的端口。...
阅读(4673) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(5):使用SSL加密会话

如果想保护这些数据不被嗅探器侦测,需要使用SSL加密客户端和服务器之间的交互。...
阅读(3640) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号

虚拟服务帐号(Virtual service account)和托管帐号一样,都是Windows Server 2008 R2引入的新特性,它是一个不需要密码管理的本地帐号,并且可以和NetworkService帐号一样通过计算机标识访问网络。...
阅读(3701) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(3):使用托管服务帐号

托管服务帐号(Managed Servcie Account)从Windows Server 2008 R2出现, 它的目的是使用于运行服务的活动目录帐号更加容易管理。...
阅读(4700) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(2):管理服务的SIDs

像SQL Server这种运行在一个Windows 帐号的安全上下文下的服务,如果还有其他服务使用相同的Windows帐号运行,那么这些服务(非SQL Server)将可能访问一些非预期资源...
阅读(3596) 评论(0)

[置顶] Chapter 1 Securing Your Server and Network(1):选择SQL Server运行账号

SQL Server是一个Windows 服务,以某个Windows用户或系统用户权限运行在Windows操作系统上。选择合适的帐号运行SQL Server是非常重要的,本系列文章只关注安全性方面。...
阅读(4402) 评论(1)

[置顶] SQL Server扫盲系列——安全性专题——SQL Server 2012 Security Cookbook

SQL Server扫盲系列——安全性专题...
阅读(6547) 评论(1)

[置顶] SQL Server扫盲系列——镜像篇

为方便查看,并以专题形式展示,所以我会把一些文章...
阅读(12527) 评论(0)

[置顶] 开发随笔——NOT IN vs NOT EXISTS

NOT IN和NOT EIXTS在对允许为null的列查询时会有一定的风险。特别是NOT IN,如果子查询包含了最少一个NULL,会出现非预期的结果。下面做一个演示。   IF OBJECT_ID('ShipmentItems', 'U') IS NOT NULL     DROP TABLE dbo.ShipmentItems; GO CREATE TABLE dbo.Sh...
阅读(5286) 评论(4)

[置顶] 第三篇——第二部分——第五文 配置SQL Server镜像——域环境SQL Server镜像日常维护

搭建镜像不维护将比不搭建还要危险,本文介绍关于这方面的一些基础知识,以起到抛砖引玉的作用。...
阅读(7026) 评论(0)

[置顶] 第三篇——第二部分——第三文 配置SQL Server镜像——域环境

原文出处: 本文将演示如何在域环境下部署镜像,在域中部署相对来说简单很多,但是很多企业并不真正使用域来管理服务器(本人所在的公司就是其一),所以有必要演示非域环境,并且重点放在非域环境下。但是作为实践经验和最佳建议,强烈使用域环境管理。非域环境将在第四文中演示:http://blog.csdn.net/dba_huangzj/article/details/27652857 。本文只关注域环境...
阅读(7759) 评论(1)

[置顶] 第三篇——第二部分——第四文 配置SQL Server镜像——非域环境

前面已经演示了域环境下的镜像搭建,本文将使用非域环境来搭建镜像,同样,先按照不带见证服务器的高安全模式(同步)的方式搭建,然后 演示异步模式,最后会演示带有见证服务器的高安全模式。...
阅读(12828) 评论(10)

[置顶] 第三篇——第二部分——第二文 计划搭建SQL Server镜像

本文紧跟上一章:SQL Server镜像简介  本文出处: 俗话说:工欲善其事必先利其器。计划好如何部署和使用镜像,可以减少很多不必要的风险。本文将按照三步骤的形式展示,但是要注意这不是唯一的标准,具体情况具体分析。第一步:了解环境  在搭建SQL Server镜像时,必须先了解你所要部署的环境,才能决定镜像的配置项。这不仅是镜像配置的前提,也是部署SQL Server甚至搭建数据平台和其他高可用...
阅读(6882) 评论(0)

[置顶] 第三篇——第二部分——第一文 SQL Server镜像简介

原文出处: 镜像是什么?说白了就是个镜子(没用过镜子?没镜子你总要小便吧?开个玩笑),这里镜子的含义主要有两个:1、一模一样,下面会详细介绍,包括库名、数据文件和日志文件的存放路径都要一样。2、看得到,却“用不了”,镜像库在没有做任何处理时是不可访问的。...
阅读(13600) 评论(1)

[置顶] 第三篇——第二部分——第六文 监控SQL Server镜像

要优化,首先要监控,看看是否有性能问题,如果有,在哪里。才能开始真正的优化...
阅读(6612) 评论(3)

[置顶] 为什么说数据库版本控制是必须的

前言 开发过程中的版本控制非常常见,但在数据库的世界来说,版本控制就是二等甚至三等公民了。当多人同时开发一个数据库管理和应用系统时,采用合理的方法监控数据库中表、存储过程和视图等对象的变动是非常重要的,每次更改数据库,都需要做详细的记录,稍不留神就出问题。我任职过的几家公司在开发流程中的版本控制做的非常到位,但数据库方面却是一片空白,在开发过程中,经常会涉及到表上增加列、修改列、修改存储过程和视图...
阅读(8902) 评论(3)

[置顶] 第一篇——第一文 SQL Server 备份基础

当看这篇文章之前,请先给你的所有重要的库做一次完整数据库备份。下面正式开始备份还原的旅程。原文出处: http://blog.csdn.net/dba_huangzj/article/details/22683687前言为什么要备份?理由很简单——为了还原/恢复。当然,如果不备份,还可以通过磁盘恢复来找回丢失的文件,不过SQL Server很生气,后果很严重。到时候你就知道为什么先叫你备份一次再开...
阅读(9254) 评论(2)

[置顶] SQL Server AlwaysOn中的几个误区

AlwaysOn自SQL Server2012之后已经发布很久了,最近我在给一些客户做咨询的时候经常被问起是不是应该使用AlwaysOn,从客户的视角来看仿佛AlwaysOn是一个包治百病的良药,但实际上没有包治百病的良药。因此在此我谈一谈AlwaysOn中的常见误区。 1.AlwaysOn可以实现负载均衡。 答案是否定的,AlwaysOn在特定条件下(需要修改前端应用程序)可以负担只读负载,但负...
阅读(23892) 评论(12)

[置顶] (初稿)SQL Server 复制(Replication)系列(2)——事务复制搭建

本文演示如何搭建最基本的事务复制。环境准备:虚拟机2台:服务器名分别为RepA和RepB,RepA为发布服务器,RepB为订阅服务器。均安装WindowsServer 2008R2英文版(在外企工作的原因)。并确保两台服务器能互访。SQL Server:在上面的虚拟机中分别安装SQLServer 2008 R2 x64 英文企业版。演示数据库:微软示例数据库AdventureWorks2008 R...
阅读(14361) 评论(3)

[置顶] SQLServer 扫盲

谨以本文记录本人成长历程,并分享给各位SQL Server数据库管理系统使用者。本系列包含个人认为一个DBA应该具有的各项素质,系列文章将以下面列表展示,将持续更新,敬请留意及指导,谢谢。下列文章具有一定的优先级,但是并不代表完全不可逆,根据工作需要,可能不会按照顺序来写,已写部分可以通过下面超链接点击:第一篇:DBA第一要务——备份还原本篇包含下面主题:SQL Server备份基础完整备份差异备...
阅读(5846) 评论(11)

[置顶] DBA日常管理——数据归档(Archiving-Data)

原文出处:http://www.sqlnotes.cn/post/2013/09/05/DBA-Daily-Jobs-One%E2%80%94%E2%80%94-Archiving-Data均为本人博客问题:      随着数据库越来越大,对性能及管理方面的挑战也会越来越大。每次查询可能需要查找更多的数据页,特别是当查询存在扫描操作时,会导致查询越来越慢。同时,需要备份的数据也会越来越多,备份操作...
阅读(8803) 评论(0)

[置顶] 第十章——维护索引(9)——监控索引消耗的空间

前言:性能优化是DBA的工作之一,但是同时,DBA还需要关心SQLServer实例、数据库消耗的空间、提供数据库用户高可用性、管理数据库备份策略等等。磁盘空间的管理是一件非常重要的事情,DBA需要关注磁盘空间和未使用索引的空间消耗情况,管理数据文件和日志文件的大小等等。在其他章节和本章都有提到,索引会消耗磁盘空间。所以,是时候去管理这部分的内容。 准备工作:在开始之前,先要确保:1、 用户具有VI...
阅读(4765) 评论(0)

[置顶] 第十章——维护索引(8)——在计算列中创建索引提高性能

前言:在理解计算列上的索引之前,先了解计算列的基本知识。计算列由可以使用同一表中的其他列的表达式计算得来。表达式可以是非计算列的列名、常量、函数,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。默认情况下,计算列是一个虚拟的列,并且可以在调用时重新计算,直到在CREATE TABLE或者ALTER TABLE 命令中使用PERSISTED。如果列定义成PERSISTED,会...
阅读(5712) 评论(3)

[置顶] 第十章——维护索引(7)——使用索引视图提高性能

前言:视图是一个包含了一个或多个表的数据列的虚拟表。通常情况下,它仅仅是存储了查询的对象,一个视图可以当作一个表,可以用于存储过程、JOIN、用户自定义函数等等。视图包含了下面两个主要特性:1、 提供了一个安全机制,用于限制用户只能访问特定的数据。2、 使得开发人员能定制用户的逻辑视图。 当你查询一个视图时,优化器会产生一个单一的执行计划给这个查询。在索引视图未出现之前,视图必须解决查询在执行期间...
阅读(6066) 评论(0)

[置顶] 第十章——维护索引(6)——查找无用索引

前言:众所周知,索引对性能的提升有巨大作用。但是这是有代价的,索引需要磁盘空间来存放它的B-Tree,并且用于在每次DML执行后更新信息,所以应该在一定时期内检查有无无用索引。  准备工作:记住别在重启服务器之后进行信息收集,因为DMO将会清空,而数据会非常不准确甚至是错误的。所以应该在运行了一段时间后(业务周期)再做收集。业务周期根据实际情况而定。一些表和查询会每天频繁使用,但是一些类似报表功能...
阅读(5601) 评论(1)

[置顶] 第十章——维护索引(5)——查找丢失索引

前言:在开发阶段,很难总是可以在合适的列上创建合适的索引。所以一开始创建的索引可能会无效,此时,需要找出这些无效的索引。一般来说,当一个查询执行的时候,SQLServer优化器会选择最适合的索引进行执行,当没有找到合适的索引话,优化器会产生一个次优执行计划,并且把丢失索引的信息存放到DMVs上。当SQLServer服务重启后,所以存储在DMVs上的信息都会丢失,所以最好在正常使用大概1周后收集这些...
阅读(6104) 评论(0)

[置顶] 第十章——维护索引(4)——通过重组索引提高性能

前言:如果碎片程度小于30%,建议使用重组而不是重建。因为重组不会锁住数据页或者数据表,并且降低CPU的资源。总得来说,重组会清空当前的B-TREE,特别是索引的叶子节点,重组数据页和消除碎片。和重建不同,重组不会添加任何新数据页。 准备工作:为了了解是否有必要重组索引,需要首先查看碎片程度,如果在10%以下,那一般没必要做什么维护,如果在10%~30%,就建议进行重组。  步骤:1、 以下各种重...
阅读(5325) 评论(0)

[置顶] 第十章——维护索引(3)——通过重建索引提高性能

前言:重建一个索引只是在内部删除并重建索引,使得碎片消失、统计信息更新、物理顺序重新排列组织。它会压缩数据页,按照填充因子填充适当的数据。如果有需要,也会添加新的数据页。这些操作有利于提高数据查找的速度,但是这个工作如果发生在大表上面,将是非常耗时耗资源的。 准备工作:首先先要决定是否达到了重建索引的临界值。否则,重组索引会更好。当碎片超过30%,那么重建索引会比较好。重建索引有两种方式,在重建之...
阅读(5603) 评论(0)

[置顶] 第十章——维护索引(2)——填充因子

前言:       在第九章中,已经介绍了如何使用索引,当一个索引创建时,以B-Tree格式存放数据,拥有根节点、中间节点、叶子节点。叶子节点是最底层的节点,在聚集索引中,包含了实际数据,而每个数据页有8KB。      当表中的数据的增删改发生时,会尝试把数据插入到合适的数据页中。比如有一个聚集索引在SSN上,当插入一个新的SSN数时。SQLServer会尝试把数据插入到合适的数据页,假设SSN...
阅读(5640) 评论(0)

[置顶] 第十章——维护索引(1)——索引碎片

本系列包含:1、  查找碎片。2、  使用填充因子。3、  使用REBUILD来加索引性能。4、 使用REORGANIZE来加索引性能。5、  如何查找丢失索引。6、  如果查找无用索引。7、  通过创建索引视图提高性能。8、  通过创建索引在计算列增加性能。9、  计算索引消耗的磁盘空间。 前言:DBA的日常任务并不仅仅是创建需要的索引在对应的列上,实际上,DBA还要保持索引创建的高标准。周而复...
阅读(5145) 评论(0)

[置顶] 第十九章——使用资源调控器管理资源(3)——监控资源调控器

前言:      在对每个应用程序配置了资源调控器之后,需要监控资源调控器。可能需要监控资源池的使用和多少个请求被分配到特定的资源池。也可能希望监控internal和default池的活动情况。       本文中,演示使用不同登录账号(AW_WebAppUser和AW_ReportAppUser),并监控CPU和内存资源的使用情况。 准备工作:本文使用的部分脚本在本系列的第一篇中已经写出。这里不...
阅读(3855) 评论(0)

[置顶] 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器

前言:在前一章已经演示了如何使用SSMS来配置资源调控器。但是作为DBA,总有需要写脚本的时候,因为它可以重用及扩展。并且可以在不同服务器快速部署。下面来演示如何实现:步骤:1、  打开ssms,连到SQLServer。确保登录账号有CONTROLSERVER的权限。2、  运行下面脚本,删除前面创建过的资源调控器对象:USE master GO DROP WORKLOAD GROUP rg_We...
阅读(4032) 评论(0)

[置顶] 第十九章——使用资源调控器管理资源(1)——使用SQLServer Management Studio 配置资源调控器

本系列包含:1、 使用SQLServer Management Studio 配置资源调控器2、 使用T-SQL配置资源调控器3、 监控资源调控器 前言:      在前面的章节,提到过可以通过多种配置数据库服务器的方式来提高性能。如索引、统计信息、hints、物理设计和服务器配置等。      当你完成上面那些配置后,还依旧有少量存储过程、查询运行得很慢时,由于硬件资源限制,可能已经没什么好调整...
阅读(6003) 评论(1)

[置顶] 第十八章——基于策略的管理(2)——限制数据库对象

前言:在实际环境中,会有很多开发人员正在对一个项目编写SQL脚本,此时需要对对象的命名经行强制限定。完成这个任务可以使用强制的一些策略来实现。合理的命名对象并不仅仅是处于维护需要,有时候也能影响性能,限定数据库的命名对象将能避免一些性能问题。通常SP_是用于SQLServer系统存储过程,但是一些程序员会尝试将其作为自定义存储过程的命名。下面我们将演示如何使用策略,来限定SP_前缀,让其只属于SQ...
阅读(5038) 评论(4)

[置顶] 第十八章——基于策略的管理(1)——评估数据库属性

前言:本章包含:1、评估数据库属性2、限制数据库对象 介绍:        基于策略的管理(PBM)能帮助DBA管理一个或多个实例,并通过PBM管理数据库实体或其他SQLServer对象。PBM协助DBA应用或强制服务器对象和数据库按照策略来运作。下面的概念是需要牢记的:1、 策略:定义在PBM下的数据库或服务器对象的规则。2、 条件:条件是方面状态的布尔值。3、 方面:在PBM中,目标的行为模式...
阅读(4090) 评论(0)

[置顶] 第十七章——配置SQLServer(4)——优化SQLServer实例的配置

前言:Sp_configure 可以用于管理和优化SQLServer资源,而且绝大部分配置都可以使用SQLServer ManagementStudio的图形化界面实现。 准备工作:为了查看SQLServer当前实例的配置,也可以使用下列查询来实现:SELECT * FROM sys.configurations ORDER BY name 下面是本机的结果: 步骤:1、 执行下面语句,以...
阅读(5775) 评论(0)

[置顶] 第十七章——配置SQLServer(3)——配置“对即时负载的优化”

前言:        在第一次执行查询或者存储过程时,会创建执行计划并存储在SQLServer的过程缓存内存中。在很多时候,我们会执行一些简单的程序,仅仅执行一次,而为这些查询创建存储过程是非常浪费内存资源的。由于内存不足,可能会导致你的缓存溢出,从而影响性能。在2005之前,这是一个大问题,为了纠正这个问题。微软在SQLServer 2008中引入了对即时查询负载的优化功能。这个功能在2012也...
阅读(5767) 评论(1)

[置顶] 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置

前言:        本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE来限制内存。但是,在SQLServer2012以后,这个选项将被弃用,所以不能使用这种方式来控制32位实例的虚拟地址空间。如果你服务器上有很多内存,就只能升级到64位系统。下面是微软给出的内存限制:        虽然2012以后已经弃用AWE,但是了解一下32位系统...
阅读(11309) 评论(0)

[置顶] 第十七章——配置SQLServer(1)——为SQLServer配置更多的处理器

前言:        SQLServer提供了一个系统存储过程,SP_Configure,可以帮助你管理实例级别的配置。微软建议使用默认配置,但是基于不同的服务器、不同负载的系统和你的用法,更改配置可能会给你的性能带来好处。在32位和64位系统中,sp_configure会有一些差异。        我们经常见到SQLServer所在的服务器上还包含了如IIS、文件服务器或者域控制器这些服务或者功...
阅读(8115) 评论(0)

[置顶] 第十三章——表和索引分区(2)——使用拆分删除和加载大数据

前言:        很多时候需要对大数据量进行归档或者删除,并周期性加载大数据量到一个大表中,现在来做个简单的例子,你经常需要删除大数据量表中的大量数据。同时,你想加载大量数据到这个表中,当表中数据有数十亿时,这个操作可能消耗几个小时,但是如果你的表有分区,那么执行起来会很有效。本文将模拟删除一个季度的数据,并加载整个季度到现有表,其中使用了拆分(splitting)、合并(merging)和切...
阅读(4780) 评论(0)

[置顶] 第十三章——表和索引分区(1)——使用Range Left进行表分区

前言:如果数据表的数据持续增长,并且表中的数据量已经达到数十亿甚至更多,数据的查询和操作将非常困难,面对非常庞大的表,几时简单的增删改操作都会花费非常多的时间,如删除某个数据然后重建索引这些操作,会很难实现。在这种情况下,管理和维护查询性能就成为了一种挑战。在过去的日子,也就是2005之前,你可能需要使用分区视图来处理大数据量的数据,从2005开始,微软引入了叫做表分区的新特性。允许水平分割数据成...
阅读(5548) 评论(0)

[置顶] 第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息

前言:        从2008开始,引入了一个增强非聚集索引的新功能——过滤索引(filter index),可以使用带有where条件的语句来创建非聚集索引,过滤掉不需要的数据,降低索引的维护开销和存储空间,提高查询性能。 准备工作:在AdventureWorks2012上,有一个Production.WorkOrder表,将使用这个表来做演示。 步骤:1、  创建一个非聚集索引在Produc...
阅读(4486) 评论(0)

[置顶] 第十二章——SQLServer统计信息(3)——发现过期统计信息并处理

前言:        统计信息是关于谓词中的数据分布的主要信息源,如果不知道具体的数据分布,优化器不能获得预估的数据集,从而不能统计需要返回的数据。        在创建列的统计信息后,在DML操作如insert、update、delete后,统计信息就会过时。因为这些操作更改了数据,影响了数据分布。此时需要更新统计信息。        在高活动的表中,统计信息可能几个小时就会过时。对于静态表,可...
阅读(4963) 评论(0)

[置顶] 第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响

前言:        索引对性能方面总是扮演着一个重要的角色,实际上,查询优化器首先检查谓词上的统计信息,然后才决定用什么索引。一般情况下,默认会在创建索引时,索引列上均创建统计信息。但是不代表在非索引键上的统计信息对性能没有用。        如果表上的所有列都有索引,那么将会是数据库负担不起,同时也不是一个好想法,包括谓词中用到的所有列加索引同样也不是好方法。因为索引会带来负载。因为需要空间存...
阅读(4598) 评论(0)

[置顶] 第十二章——SQLServer统计信息(1)——创建和更新统计信息

简介:查询的统计信息:目前为止,已经介绍了选择索引、维护索引。如果有合适的索引并实时更新统计信息,那么优化器会选择有用的索引供查询之用,因为SQLServer优化器是基于开销的优化。当在where和on上的列上的数据需要显示在结果集的时候,如果有实时的统计信息,优化器会选择最好的执行方式,因为优化器会从统计信息中获得这些数据的明细情况。在创建索引的时候,SQLServer就会在索引列上创建统计信息...
阅读(11536) 评论(0)

[置顶] 第十六章——处理锁、阻塞和死锁(3)——使用SQLServer Profiler侦测死锁

前言: 作为DBA,可能经常会遇到有同事或者客户反映经常发生死锁,影响了系统的使用。此时,你需要尽快侦测和处理这类问题。 死锁是当两个或者以上的事务互相阻塞引起的。在这种情况下两个事务会无限期地等待对方释放资源以便操作。下面是死锁的示意图: 本文将使用SQLServer Profiler来跟踪死锁。   准备工作: 为了侦测死锁,我们需要先模拟死锁。本例将使用两个不...
阅读(12975) 评论(12)

[置顶] 第十六章——处理锁、阻塞和死锁(2)——侦测阻塞和阻塞查询

前言: 如果一个事务正在等待一些给其他事务锁定的资源。这个事务就被成为“被阻塞的事务”。反过来,引起阻塞的事务,也就是锁定资源并造成其他事务等待的事务叫做“正在阻塞的事务”。 长时间运行事务会阻塞其他事务和查询,使他们等待长时间。在繁重的系统中,很多时候我们会遇到阻塞问题,如果一个事务因为阻塞未完成。会造成一些列的等待链。 本文将介绍如何发现并马上解决这方面的问题。   准备工作: 本...
阅读(6069) 评论(2)

[置顶] 第十六章——处理锁、阻塞和死锁(1)——确定长时间运行的事务

前言: 事务是OLTP系统中的主要部分。它管理数据一致性和数据并发问题,当多个资源同时被读取或者修改相同数据时,SQLServer会通过锁定机制来确保数据库中的数据总是处于一个有效状态。在SQLServer中,锁管理器是负责实现这些锁机制。SQLServer对于不同的资源类型提供不同的锁类型,如数据库、文件、对象、表、区、页和键。 当你使用事务时,依然会遇到由事务引起的问题,这些通常是由于锁、...
阅读(6126) 评论(0)

[置顶] 第六章——根据执行计划优化性能(3)——键值查找

前言:         本文为本系列最后一篇,介绍键值查找的相关知识。         键值查找是具有聚集索引的表上的一个书签查找,键值查找用于SQLServer查询一些非键值列的数据。使用非聚集索引的查询不会有键值查找,但是所有键值查找会伴随非聚集索引出现。这里特别提醒的是键值查找总是伴有嵌套循环关联。   准备工作:   下面将创建一个表,通过执行计划看看键值查找的不同效果。为了产...
阅读(7430) 评论(0)

[置顶] 第六章——根据执行计划优化性能(2)——查找表/索引扫描

前言:       在绝大部分情况下,特别是从一个大表中返回少量数据时,表扫描或者索引扫描并不是一种高效的方式。这些必须找出来并解决它们从而提高性能,因为扫描将遍历每一行,查找符合条件的数据,然后返回结果。这种处理是相当耗时耗资源的。在性能优化过程中,一般集中于: 1、  CPU 2、  Network 3、  磁盘IO 而扫描操作会增加这三种资源的开销。   准备工作:...
阅读(6958) 评论(0)

[置顶] 第六章——根据执行计划优化性能(1)——理解哈希、合并、嵌套循环连接策略

前言: 本系列文章包括: 1、 理解Hash、Merge、Nested Loop关联策略。 2、 在执行计划中发现并解决表/索引扫描。 3、 介绍并在执行计划中发现键查找并解决它们。   对于性能优化,需要集中处理以下的问题: 1、 为你的环境创建性能基线。 2、 监控现在的性能并发现瓶颈。 3、 解决瓶颈以便得到更好的性能。   一个预估执行计划是描述查询将会如何执行的一个...
阅读(7730) 评论(0)

[置顶] 第七章——DMVs和DMFs(4)——用DMV和DMF监控磁盘IO

前言:         本文为本系列最后一篇,作为DBA,你必须经常关注磁盘的I/O问题,一旦出现问题,要尽快分析出是什么问题。SQLServer同样提供了一些列与I/O相关的DMO来做监控。         本文介绍如何使用DMO来监控I/O子系统的性能并找到I/O瓶颈。通过本文,可以区分不同数据库的I/O使用模式。一旦发现有数据库的I/O很高,可能需要考虑把数据库迁移到单独的磁盘,或者深入...
阅读(4709) 评论(0)

[置顶] 第七章——DMVs和DMFs(3)——用DMV和DMF监控TempDB

前言:         我们都知道TempDB是SQLServer的系统数据库,且SQLServer的日常运作严重依赖这个库。因此,监控TempDB的性能问题尤为重要。在过去很长一段时间里面,很多人都忽略了TempDB的重要性并忽略了它的性能问题。这并不是一件好事,因为TempDB的性能会影响其他用户数据库的性能,所以需要时时刻刻注意TempDB的性能。         在一些查询的聚合、排序...
阅读(4412) 评论(0)

[置顶] 第七章——DMVs和DMFs(2)——用DMV和DMF监控索引性能

本文继续介绍使用DMO来监控,这次讲述的是监控索引性能。索引是提高查询性能的关键性手段。即使你的表上有合适的索引,你也要时时刻刻进行索引维护任务。   SQLServer有专门的DMO来显示索引相关统计信息。能帮助你分析现有索引的性能情况。通过这些DMO,可以做到: Ø  检查索引使用模式 Ø  查找丢失索引 Ø  查找无用索引 Ø  查找索引碎片 Ø  分析索引页分配明细 本文将...
阅读(4633) 评论(0)

[置顶] 第七章——DMVs和DMFs(1)

简介:         从SQLServer2005开始,微软引入了一个名叫DMO(动态管理对象)的新特性,DMO可以分为DMFs(Dynamic Manage Functions,动态管理函数)和DMVs(Dynamic Manage Views,动态管理视图)两部分。这些函数和视图用于查找SQLServer实例内部统计信息以供性能监控所用。它们提供实时的,关于SQLServer内部工作的...
阅读(20208) 评论(3)

[置顶] 第四章——SQLServer2008-2012资源及性能监控(3)

本文为本系列最后一章,监控内存使用。监控服务器的内存是非常重要的事情,有很多情况会引起内存消耗。所以要经常性地做检查。 本文将使用可靠性和性能监视器来获取内存相关的统计。   准备工作: 在开始之前,先来了解一下将要用到的计数器: Ø  Memory: Available Mbytes:提供系统上可用内存的数量。 Ø  Memory: Pages/sec:显示有多少页被用于读或写入硬盘...
阅读(10672) 评论(0)

[置顶] 第四章——SQLServer2008-2012资源及性能监控(2) .

本文接着上文继续,讲述如何监控CPU的使用情况 前言: CPU是服务器中最重要的资源。在数据库服务器中,CPU的使用情况应该时刻监控以便SQLServer一直处于最佳状态。 本文将会使用可靠性和性能监视器来获取CPU相关的使用统计信息 可靠性和性能监视器是过去性能监视器工具的加强版。同时拥有性能监视器的全部功能。 性能计数器提供对各种系统活动的统计功能。可以找到有数百种性能计数器...
阅读(8508) 评论(0)

[置顶] 第四章——SQLServer2008-2012资源及性能监控(1)

性能优化的第一步是发现问题,而发现问题通常又有两类:突发问题的侦测和常规问题的侦测,对于常规问题的侦测,通常需要有一个长效的性能监控作为依据。   本系列文章介绍 服务器性能监控CPU使用率监控内存使用率监控   前言:        当由于劣质的查询写法、缺失必要的索引或者数据库级别的其他情况所导致的性能问题时,可以通过使用执行计划、DMVs/DMFs、SQL Trace或者数据...
阅读(19002) 评论(1)

[置顶] 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(3)

本文为这个系列最后一篇。将是如何使用DBCC命令来监控SQLServer日志空间的使用情况。   前言:          每个数据库都必须有事务日志。事务日志记录每个DML操作,并应用于SQLServer的数据库中,如果恢复模式为FULL并经常有DML操作,日志将增长得非常快。几时恢复模式为simple,当数据库处于事务复制或者合并复制时,日志通常会增长。如果日志不是经常备份且日志文件的...
阅读(6776) 评论(0)

[置顶] 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(2)

承接上文,本文讲述如何使用系统存储过程来监控系统。       SQLServer同样也提供了一系列系统存储过程用于监控SQLServer,获取当前进程、会话、请求以及锁定的详细信息。本文将演示系统存储过程来实现这些监控。   情景:     有时候你会发现应用程序突然变得很慢,经常需要等待数据库响应,此时你需要快速查看是否请求被阻塞或者挂起。   准备工作:   在本文中,将使...
阅读(5963) 评论(0)

[置顶] 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(1)

忘了说明:本系列文章出自《Microsoft SQL Server 2012 Performance Tuning Cookbook》,将会陆续推出译文,但是由于工作需要,没有按顺序贴出来。 本系列文章包含三部分: 1、  使用系统统计函数(system statistical functions)来监控系统健康程度。 2、 使用系统存储过程来监控SQLServer进程和会话。 3、...
阅读(5303) 评论(1)

[置顶] 何时使用SET和SELECT为变量赋值

我们经常使用SET和SELECT来为变量复制,但是有时候,只能选其一来使用,下面来看看这些例子,本例中使用AdventureWorks数据库来做演示。 通过查询返回值:        当你把查询返回的值付给变量时,SET将会接受这个结果(单值)并付给一个标量值。但是SELECT 可以接受查询返回的多个值。 下面来看看单值和多值均使用SET的例子:                USE A...
阅读(19572) 评论(7)

[置顶] SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327问题:         经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了。人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题。        遇到这种情况,一般都是没有做备份,不然也不会来发问了。...
阅读(91483) 评论(75)

[置顶] SQLServer RESOURCE_SEMAPHORE 等待状态

概述:          当一个SQLServer实例运行得很慢的时候,应该做一些检查,如检查等待状态。最好的方法是一开始就建立一个性能基线,以便做性能对比。当发现与性能基线对比后,存在内存压力的话,就要找出是什么原因导致的。可以检查事务的等待状态,其中Resource_semaphore等待可能出现最多。下面是如何去处理这个问题:           当检查事务的所有等待类型后,可能会发现R...
阅读(5784) 评论(0)

[置顶] SQLServer 列出每个表的列和属性

当需要整理一个数据库帮助文档是,可能需要列出库中每个表的列及其属性。这可能在开发一些接口或者外包给别的公司时有帮助。如果需要别人打开SQL Server Management Studio (SSMS)来一个一个查看,无疑是一种折磨。        解决这个问题可以考虑使用系统的目录视图:sys.tables、sys.all_columns、sys.types Sys.tabl...
阅读(7630) 评论(3)

[置顶] 你是否也忘了刷新视图?

起因:          由于工作原因,我隔几天就要执行一批开发人员提供过来的脚本,部分是新需求的开发,部分是修复bug。往往包含有几百个。我用工具批量执行之后,系统继续运行,后来反反复复会有这样那样的错误,其中一个,经过开发人员的检查,是因为视图没刷新。          对此我纳闷了很久,视图不就是一堆select语句吗?怎么还要刷新?难道表改了不会跟着改?为此,我首先自己做一个实验,发现...
阅读(12841) 评论(21)

[置顶] 使用SQLCMD在SQLServer执行多个脚本

概述:          作为DBA,经常要用开发人员提供的SQL脚本来更新正式数据库,但是一个比较合理的开发流程,当提交脚本给DBA执行的时候,可能已经有几百个sql文件,并且有执行顺序,如我现在工作的公司,十几个客户,每个客户一个库,但是数据库结构、存储过程、视图等都是一模一样,每次执行脚本(以下称为升级),如果有一百个脚本,那么就要按顺序执行过千次,这种工作量可不是一个人能承受得了的。...
阅读(35411) 评论(3)

[置顶] SQL Server高可用——日志传送(4-3)——使用

顺接上一篇:SQL Server高可用——日志传送(4-2)——部署 本文为本系列最重要的一篇,讲述如何使用日志传送及一些注意事项。从上一篇可以看到,其实配置不难,难是难在一旦出现问题,如何处理。这些是4大高可用的同性。配置都不会很难,只是如何故障排除而已。     监控日志传送:       在配置好日志传送之后,需要进行监控,监控备份、复制及还原的作业运作情况。这三类作业任何一个没有...
阅读(6486) 评论(0)

[置顶] SQL Server高可用——日志传送(4-2)——部署

前文再续,书接上一回。本章演示一下日志传送的具体过程   准备工作:   由于时间关系,已经装好了3台虚拟机,且同在一个域里面:         SQL01:主服务器 SQL02:辅助服务器 SQL03:监视服务器   初始配置:       这里是实验方便,正式环境应该由于特殊账号的读写权限。注意这里的读写权限不应该是sql内部的账号,如sa这些,而是sqlage...
阅读(7083) 评论(4)

[置顶] SQL Server高可用——日志传送(4-1)——概论

本文作为学习总结,部分内容出自联机丛书及其他书籍   日志传送是什么?          SQLServer 2012之前(2012出现了AlwaysOn),SQLServer存在四大高可用(集群/群集、日志传送、镜像和复制)。本主题主要讨论其中的日志传送功能。但是由于工作原因,只能谈论到使用级别,不做太深入的研究。   现在先来说说日志传送(Log Shipping)是什么?...
阅读(7625) 评论(0)

[置顶] SQLServer恢复表级数据

最近几天,公司的技术维护人员频繁让我恢复数据库,因为他们总是少了where条件,导致update、delete出现了无法恢复的后果,加上那些库都是几十G。恢复起来少说也要十几分钟。为此,找了一些资料和工作总结,给出一下几个方法,用于快速恢复表,而不是库,但是切记,防范总比亡羊补牢好。        在生产环境或者开发环境,往往都有某些非常重要的表。这些表存放了核心数据。当这些表出现数据损坏时,需...
阅读(18800) 评论(9)

[置顶] 一个非常有用的函数——COALESCE

很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止,这个函数的确非常有用,本文主要讲解其中的一些基本使用:    首先看看联机丛书的简要定义:   返回其参数中第一个非空表达式   语法:   COALESCE ( expression [ ,...n ] )...
阅读(124731) 评论(6)

[置顶] 查看SQLServer 代理作业的历史信息

不敢说众所周知,但是大部分人都应该知道SQLServer的代理作业情况都存储在SQLServer5大系统数据库(master/msdb/model/tempdb/resources)中的MSDB中,而由于代理作业的长期运行和种类较多,所以一般可以看到msdb的大小往往比其他库加起来还大。本文主要专注在如何查询作业的运行时间点及运行持续时间上。 作为DBA,周期性检查作业情况是一下非常重要的任...
阅读(8097) 评论(1)

[置顶] 使用SQLServer Audit来监控触发器的启用、禁用情况

使用情景:              有时候会发现在触发器中的业务逻辑没有执行,可能是因为触发器的逻辑错误所引起的。但是有时候却是因为一些触发器被禁用了。          由于SQLServer默认不跟踪触发器的启用还是禁用。且禁用触发器的命令(Disable Trigger)不在默认跟踪里面捕获。但是可以在服务器级别的跟踪(不是使用Profiler)获取这些信息,捕获SQL:StmtCo...
阅读(8288) 评论(26)

[置顶] 使用SQLServer 2008的CDC功能实现数据变更捕获

最近由于工作需要,研究了一下2008 CDC功能,觉得还不错,下面整理了一下研究过程,虽然比较粗略,但是基本上能用了,如果有补充请大家回复,我视情况修改原帖,谢谢。 背景: 在SQLServer2008之前,对数据变更的捕获通常使用触发器、时间戳等低效高成本的功能来实现,所以很多系统都没有做数据变更或者仅仅对核心表做监控。 自从SQLServer2008引入了数据变更捕获功能(后面简称为...
阅读(34074) 评论(47)

[置顶] 数据库开发——参照完整性——在外键中使用Delete on cascade选项

原文: http://www.mssqltips.com/sqlservertip/2743/using-delete-cascade-option-for-foreign-keys/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012731   参照完整性在设计数据库时需要重视...
阅读(10956) 评论(6)

[置顶] 数据库管理——Powershell——使用Powershell脚本找出消耗最多磁盘空间的文件

原文译自: http://www.mssqltips.com/sqlservertip/2774/powershell-script-to-find-files-that-are-consuming-the-most-disk-space/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=...
阅读(6679) 评论(0)

[置顶] 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项

原文译自:http://www.mssqltips.com/sqlservertip/2766/sql-server-auto-update-and-auto-create-statistics-options/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012913...
阅读(18916) 评论(2)

[置顶] 数据库管理——安全管理——识别SQLServer中空密码或者弱密码的登录名

原文译自: http://www.mssqltips.com/sqlservertip/2775/identify-blank-and-weak-passwords-for-sql-server-logins/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012925...
阅读(5363) 评论(1)

[置顶] 通过配置Windows 防火墙允许使用TCP/IP协议远程访问数据库

本文适用于:2005、2008、2008R2所有版本 为了可以通过TCP/IP协议远程访问SQLServer数据库,需要做以下几点: 在SQLServer所运行的服务器上,我们必须找到SQLServer所侦听的端口然后添加到WIndows防火墙的【允许入站】中。 一:需要添加SQLServer的端口到防火墙的入站规则中。 二:如果无法确定连接字符串的端口或者SQLServer没有侦听TCP...
阅读(10656) 评论(0)

[置顶] 日志文件不断增长

先了解SQLServer需要保存的日志记录:   1、  所有没有经过“检查点”的日志记录:          SQLServer定时执行(Checkpoint),保证“脏页”被写入硬盘。没做Checkpoint的,可能是只在内存中修改,数据文件还没同步。SQLServer要在硬盘的日志文件中有记录,一边异常重启后重新修改。   2、  所有没有提交的事务所产生的日志及其后续的日志记录...
阅读(10589) 评论(2)

[置顶] 如何把SQLServer数据库从高版本降级到低版本?

由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接【分离/附加】或者【备份/还原】数据库,在不同版本之间存放。往往就会遇到版本不兼容的问题。前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错:从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部...
阅读(116141) 评论(25)

[置顶] 在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败

问题: 在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败,反之亦然. 分析: 这种情况多数为执行时上下文(Context)安全性问题。在SSMS中执行的时候,T-SQL语句是在当前登录名下运行的。但是作业在SQL Server Agent中是以SQL Server Agent 服务(SQL Server Agent Service a...
阅读(9335) 评论(0)

[置顶] 恢复SQLServer实例连接

译自: http://www.mssqltips.com/sqlservertip/2682/recover-access-to-a-sql-server-instance/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012829   问题: 开启SQLServer2008之...
阅读(9868) 评论(0)

[置顶] Delete和Truncate的区别

一般对于没有用的数据,都会经行删除,而删除通常使用的是DELETE和TRUNCATE命令。对于有条件地删除,基本上就会使用DELETE,当然还是没有绝对,用TRUNCATE也可以实现,只要把【不需要】删除的数据插入新表,然后truncate源表,再把数据导回来或者直接重命名新表就可以了。 下面例子主要比较全表删除的情况下DELETE 和TRUNCATE 之间的差异:   首先,先创建测试用...
阅读(8676) 评论(2)

[置顶] SQLServer数据类型优先级对性能的影响

译自: http://www.mssqltips.com/sqlservertip/2749/sql-server-data-type-precedence/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012814   问题:          我在我的应用程序中使用简单的查...
阅读(7387) 评论(4)

[置顶] SQL Server 连接问题-TCP/IP

出自:http://blogs.msdn.com/b/apgcdsd/archive/2012/02/24/ms-sql-server-tcp-ip.aspx TCP/IP的基本工作原理这里就不浪费口水了。现在这网络年代,谁不知道TCP/IP啊。不要跟我抬杠说你偏就没听说过TCP/IP阿,真是这样那你得自己去补补课了。   TCP/IP协议有两个基本的东西,一个是IP地址, 另一个是端口号。...
阅读(15884) 评论(1)

[置顶] 利用Ring Buffer在SQL Server 2008中进行连接故障排除

出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/11/21/ring-buffer-sql-server-2008.aspx SQL Server 2008中包含一个新功能,旨在帮助解决特别棘手的连接问题。这个新功能是Connectivity Ring Buffer,它可以捕捉每一个由服务器发起的连接关闭记录(server-initiated...
阅读(4480) 评论(0)

[置顶] 无法使用SQL login去登陆SQL Server - 'Password did not match'

出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/02/01/sql-login-sql-server-password-did-not-match.aspx 问题描述: 在某一台机器上的management studio,始终无法使用SQL login去登陆SQL Server。但是如果在其他的机器上,使用同样的SQL login是可以登陆SQL...
阅读(3613) 评论(0)

[置顶] SQL Server 连接问题-命名管道

出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/12/sql-server-1.aspx 一。前言   在使用SQL Server 的过程中,用户遇到的最多的莫过于连接问题了。本文将深度讨论SQL Server 连接问题的方方面面,希望能帮你彻底解决SQL server 的连接问题。   SQL Server 支持的通讯协议很多,如命...
阅读(15174) 评论(0)

[置顶] SQL Server 2008 (R2) 单机版安装的先决条件

出自:http://blogs.msdn.com/b/apgcdsd/archive/2012/03/07/sql-server-2008-r2.aspx 在为客户提供技术支持时,发现安装SQL Server 2008 (R2) 单机版出现的问题很多源于以下几个典型情况,而客户们有所不知,这正是SQL Server 安装所必须的先决条件:   1.       .NET Framework 3...
阅读(8638) 评论(1)

[置顶] TFS:TF30042 数据库已满 处理方法

今天早上,公司打来电话,说TFS(Team Foundation Server)微软源代码管理软件签入不了,报错:TF30042 数据库已满。 经过差不多半个小时的处理,基本上好了,再次总结一下: 根据提示,我先检查磁盘空间,发现都有几十G(公司的TFS数据库比较大,光压缩备份就有20G以上),足够用来备份。 检查完硬盘空间后,接着检查数据库空间,发现日志文件的确满了,按照常...
阅读(7655) 评论(2)

[置顶] 博客专栏第一篇文章——我眼里的DBA

在专职DBA工作一年过一个月以后,开通了CSDN的博客专栏,在第一篇文章中,我谈谈一年DBA生涯的感想,虽然我是SQL Server的DBA,但是我觉得本文适合所有DBA,顺便把这篇文章作为个人真正DBA的开端和指引: 为什么要有DBA:          对于大量小公司,是请不起DBA,而且也不是非常必须的。那么DBA这个职业是如何产生的?我也不懂,个人的猜测是,当你的应用系统和数据库到达一...
阅读(13804) 评论(32)

[置顶] 移除函数调用能有更好的性能

原文出自: http://www.mssqltips.com/sqlservertip/2727/removing-function-calls-for-better-performance-in-sql-server/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012726...
阅读(4569) 评论(0)

[置顶] 如何获得SQL Server索引使用情况

原文出自: http://www.mssqltips.com/sqlservertip/1239/how-to-get-index-usage-information-in-sql-server/   问题: 数据库有两大存储需要:数据页和索引页。在你的表中理解和查看实际的数据,是相当简单的。通过运行一些查询示例来了解哪些列被使用,以及什么类型的数据实际上是被存储。一方面,很难知道索引实际...
阅读(6188) 评论(0)

[置顶] 如何识别SQL Server中的CPU瓶颈

原文出自: http://www.mssqltips.com/sqlservertip/2316/how-to-identify-sql-server-cpu-bottlenecks/   问题: 如果经常遇到CPU瓶颈而导致的SQLServer宕机,那如何去发现并解决这些相关的问题?   解决方案: 导致CPU成为SQLServer性能问题的原因有很多,比较明显的原因是因为资源不足...
阅读(7243) 评论(0)

[置顶] 如何识别SQL Server中的IO瓶颈

原文出自: http://www.mssqltips.com/sqlservertip/2329/how-to-identify-io-bottlenecks-in-ms-sql-server/ 问题: 我们可能经常会遇到SQLServer数据库频繁关闭的情况。在分析了内存和CPU使用情况后,我们需要继续调查根源是否在I/O。我们应该如何识别SQLServer是否有I/O相关的瓶颈?...
阅读(11998) 评论(1)

[置顶] SQL Server 2008性能故障排查(四)——TempDB

接着上一章:I/O TempDB:          TempDB是一个全局数据库,存储内部和用户对象还有零食表、对象、在SQLServer操作过程中产生的存储过程等数据。在一个SQLServer实例中,只有一个TempDB。所以容易成为性能和磁盘空间瓶颈。TempDB可能因为空间可用程度和过量的DDL和DML操作而变得超负荷。这可能导致不相关的应用运行缓慢甚至失败。...
阅读(11555) 评论(1)

[置顶] SQL Server 2008性能故障排查(三)——I/O

接着上一章:CPU瓶颈 I/O瓶颈(I/O Bottlenecks): SQLServer的性能严重依赖I/O子系统。除非你的数据库完全加载到物理内存中,否则SQLServer会不断地把数据库文件从缓存池中搬进搬出,这会引起大量的I/O传输。同样地,日志记录在事务被声明为已提交前必须写入磁盘。最后,SQLServer基于许多原因使用tempdb,比如存储临时结果、排序和保持行版本。所以一个好的...
阅读(12419) 评论(0)

[置顶] SQL Server 2008性能故障排查(二)——CPU

承接上一篇:SQL Server 2008性能故障排查(一)——概论 说明一下,CSDN的博客编辑非常不人性化,我在word里面都排好了版,贴上来就乱得不成样了。建议CSDN改进这部分。也请大家关注内容不要关注排版。同时在翻译的过程中本人也整理了一次思路,所以还似乎非常愿意翻译,虽然有点自娱自乐,但是分享给大家也是件好事 CPU 瓶颈: CPU瓶颈可能因为某个负载所需的硬件资源不足而引起。但...
阅读(15857) 评论(2)

[置顶] SQL Server 2008性能故障排查(一)——概论

备注:本人花了大量下班时间翻译,绝无抄袭,允许转载,但请注明出处。由于篇幅长,无法一篇博文全部说完,同时也没那么快全部翻译完,所以按章节发布。由于本人水平有限,翻译结果肯定存在问题,为了不造成误导,在每篇结尾处都附上原文,供大家参考,也希望能指出我的问题,以便改进。谢谢。 另外,本文写给稍微有经验的数据库开发人员或者DBA看,初学者可能会看不懂。在此请见谅 作者:Sunil Agarwal...
阅读(8508) 评论(0)

[置顶] T-SQL技术收集——删除重复数据

在工作和面试中,经常出现如何查询或者删除重复数据的问题,如果有主键,那还好办一点,如果没有主键,那就有点麻烦。          当一个表上没有辅助键时,如果使用SSMS界面来删除,就会报错(注意,本人测试环境是2012,所以界面可能会有所不一样,但是对结果没有任何影响):          因为在创建表后插入数据是没有做判断。但是在删除时,为了保证数据库的一致性,RDBMS还是会...
阅读(6216) 评论(0)

[置顶] T-SQL技巧收集——拆分字符串

在开发中,很多时候都需要处理拆分字符串的操作。下面收集了几种方法供大家分享,其中的逗号可以改为多种有需要的符号,但是不能针对多种符号同时存在的例子。有待各位补充: 说明: 将字符串转换为正规化的数据表,可以使用多种方法实现,比如前端程序处理、游标、数据库循环函数,都是常用的技巧。 对于处理这些问题,比较好的思路就是使用SUBSTRING函数取出字符串,然后使用CHARINDEX函数定位。最后...
阅读(5970) 评论(0)

[置顶] T-SQL使用案例——结果数据前面自动补0

现象: 在开发的过程中,往往需要数字和字符串互转。在转换的过程中,可能需要把1编程00001,这样的格式。实现这种样子是有非常多的方法,本文主要提供一种自定义函数来实现   说明:          一般来说这种处理主要使用CONVERT或者CAST来实现即可。思路是先转换为字符串然后在不上足够数量的0,最后使用RIGHT函数,从右边取出需要长度。   案例:          本例...
阅读(10829) 评论(5)

[置顶] 使用一个T-SQL语句批量查询数据表占用空间及其行数

要找到数据库中数据表占用的空间和存在的行数。可以使用sp_spaceused搭配数据表的名称。就可以产生该表耗用的空间和现有行数。 如: USE ADVENTUREWORKS GO EXEC sp_spaceused [Sales.SalesOrderHeader] GO     但如果数据库中包含数千的数据表,如何能利用一句SQL语句来实现?   解决方法: 一、动态...
阅读(5266) 评论(0)

[置顶] T-SQL开发——ID处理篇

数据库自增ID功能中Identity、Timestamp、Uniqueidentifier的区别: 问题现象: 一般序号的产生,对于一般程序员而言,都是使用T-SQL命令来实现。先读取表中的最大需要,然后累加一,再插回数据库,这样做是相当危险的。因为如果事务机制没有处理好,就会出现同时间内取得同一序号。结果可想而知。为了避免这种情况,SQLServer在内部已经提供了一定的机制来协助处理。...
阅读(10406) 评论(8)

[置顶] 使用CASE表达式替代SQL Server中的动态SQL

翻译自: http://www.mssqltips.com/sqlservertip/1455/using-the-case-expression-instead-of-dynamic-sql-in-sql-server/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012620...
阅读(10458) 评论(0)

[置顶] SQL Server 索引列的顺序——真的没关系吗

翻译自:http://www.mssqltips.com/sqlservertip/2718/sql-server-index-column-order--does-it-matter/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012619 问题: 当设置表的索引时,在性能上有...
阅读(7616) 评论(0)

[置顶] T-SQL问题解决集锦——数据加解密(2)

问题三、如何让指定用户可以对数据表进行Truncate操作?          Truncate在对大表全删除操作时,会明显比Delete语句更快更有效,但是因为它不需要存放日志,并且一定是全表删除,所以造成数据的不可恢复性。也说明了它的危险性。          但是,执行Truncate需要有表拥有者、系统管理员、db_owner、db_ddladmin这些里面的其中一种高权限角色才能执行...
阅读(4220) 评论(0)

[置顶] 设置SQLServer数据库中某些表为只读的多种方法

翻译自:http://www.mssqltips.com/sqlservertip/2711/different-ways-to-make-a-table-read-only-in-a-sql-server-database/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012614...
阅读(9011) 评论(1)

[置顶] T-SQL问题解决集锦——数据加解密

以下代码已经在SQLServer2008上的示例数据库测试通过 问题一:如何为数据进行加密与解密,避免使用者窃取机密数据?        对于一些敏感数据,如密码、卡号,一般不能使用正常数值来存储。否则会有安全隐患。以往的加密解密都有前端应用程序来辅助完成。而数据库一般只能加密不能解密。        从2005开始提供了数据库层面的数据加密与解密。其实现方式主要有以下: 1、 利用CON...
阅读(7535) 评论(0)

[置顶] SQL Server 日期相关

对于开发人员来说,日期处理或许简单,或许很难。结合自己过往的开发经验并整合网上的例子,总结出一些日期相关的操作,供自己备用及为大家分享: 一、日期类型:对于SQL Server 2008 来说(因为2000甚至2005已经稍微有被淘汰的迹象,所以在此不作过多说明,加上自己工作使用的是2008R2。所以不保证08以前的能用),日期类型有:数据类型格式范围精确度存储大小(以字节为单位)用户定义的秒的小...
阅读(16290) 评论(12)

[置顶] 浅谈数据库连接

必须澄清,虽然文章是我总结整理的,但是很多知识的确不是我能研究分析得出来,通过听培训、看书、实践所总结得出,一方面为了给自己备用,以便以后出现问题能解决,另一方面也希望遇到相同问题的朋友能从中得到一些启示。所以文章里面的知识可能会在很多地方都出现。 我们经常会遇到很多连接问题,同时程序员往往也认为连接数据库只需要简单地连接→openconnection→操作→close,但是一个简单的连接动作,...
阅读(29125) 评论(4)

[置顶] 数据库引擎调整顾问

数据库性能很大程度上取决于表上是否有合适的索引。但是工作负载和数据随时变化,现有的索引可能不完全合适,可能需要新的索引。 但是决定索引又是非常困难的,因为对某个查询有提升作用,却会对其他查询或者其他操作有负面影响。 SQLServer提供了【数据库引擎顾问】(DTA)工具来帮助为一个给定的工作负载确认一组最优的索引。而不需要对数据库和SQLServer结构深入了解。它还能为一小部分问题查询提供...
阅读(4877) 评论(5)
258条 共13页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1980633次
    • 积分:19557
    • 等级:
    • 排名:第489名
    • 原创:109篇
    • 转载:37篇
    • 译文:112篇
    • 评论:551条
    我的微博
    博客专栏
    最新评论
    流量统计
    站长统计站长统计
    量子统计