
SQL SERVER
文章平均质量分 60
Burgess_Liu
这个作者很懒,什么都没留下…
展开
-
利用索引降低并发事务引起的锁
时常,来自不同连接的线程会对同一张表进行读/更新操作,这种并发操作会导致阻塞,同时SQL Server会自动处理以防止脏读。然而,有种情景很常见,那就是每个连接要读/更新的行互相排斥,换句话说,就是各个连接读/更新的行没有交集。在这片文章中,将像大家展示如何恰当地使用索引来降低阻塞的发生,以便多个读/更新能够同时操作同一张表。创建TEST表如下:SET ANSI_NULLS ONGO原创 2013-12-09 10:17:50 · 2095 阅读 · 0 评论 -
SQL Server 2012 AlwaysOn探索(上)
毫无疑问,HA或DR对Production DB是至关重要的,原因不必解释。在SQL Server的早期版本,我们可以使用故障转移群集、数据库镜像、日志传递、复制来实现我们需要的HA或DR,但它们均有优缺点:故障转移群集又称为Failover Cluster。此技术使用的共享存储技术,不涉及到底层数据的同步问题,因此可以认为群集的最大好处就是性能较高,但存储会成为整个群集技术中的单点故障。原创 2013-09-25 23:26:57 · 10553 阅读 · 3 评论 -
SQL Server 2012可编程性新特性_5_sp_describe_first_result_set
过去,如果要确定查询或存储过程的返回结果类型,需要使用SET FMTONLY命令。使用该命令可以在不需要实际执行查询的情况下预览返回结果的列信息。可惜的是,返回的信息仅仅局限于列的定义,而如果只要先前执行查询便能够获得这些信息。现在,SQL2012通过使用新的sp_describe_first_result_set存储过程,便可以获得查询和存储过程返回结果的详细信息。这些信息包括数据类型及其规模、原创 2012-03-27 12:59:12 · 2083 阅读 · 0 评论 -
SQL Server 2012可编程性新特性_7_分析函数
SQL Server 2012 支持以下分析函数:CUME_DIST、PERCENT_RANK、FIRST_VALUE、LAST_VALUE、LAG、LEAD、PERCENTILE_CONT、PERCENTILE_DISC,用来基于一组行计算聚合值。不过,与聚合函数不同,它们可能针对每个组返回多行。 可以使用分析函数来计算移动平均线、运行总计、百分比或一个组内的前 N 个结果。CU原创 2012-03-28 14:03:13 · 2547 阅读 · 0 评论 -
SQL Server 2012新特性_列存储索引(3)
本篇Blog将介绍列存储索引相关的性能、查询提示及使用限制等方面的知识。若要了解列存储及列存储索引的概念及特征,请点击这里;若要了解列存储索引的创建与使用,请点击这里。 列存储的性能要了解类存储索引的性能到底如何,不妨先来搭建一下测试的环境。下面我们创建基本两张完全一样的表,不同的是,一张表没有列存储索引,而另一张则有:不带column Store Index (N'tbl_Engin原创 2012-04-09 16:33:13 · 4143 阅读 · 1 评论 -
SQL Server 2012的间接检查点(Indirect checkpoint)
间接检查点是 SQL Server 2012 中引入的新检查点类型,它提供自动检查点的可配置数据库级替代方法。在系统崩溃时,间接检查点与自动检查点相比,恢复时间可能更短更可预测。间接检查点具有以下优点:1、间接检查点可以减少整体数据库恢复时间;2、间接检查点使您可以通过控制 REDO 期间随机 I/O 的开销来可靠控制数据库恢复时间。 这使服务器实例不超过给定数据库的恢复时间上限(长时原创 2012-04-20 14:29:40 · 2592 阅读 · 1 评论 -
目标主体名称不正确,无法生成 SSPI 上下文。
两台Server,环境一样,都使用同一域账号。Server03的SQL Server可以通过Windows认证连接到Server04,但Server04通过Windows认证连接Server03时报如下错误:目标主体名称不正确,无法生成 SSPI 上下文。PING Server03或Ping -a Server03,看起来都正常,问题究竟出在何处呢?无法生成SSPI上下文的原因比较多,具体原创 2014-01-15 08:51:44 · 17348 阅读 · 1 评论 -
Error: the database could not be exclusively locked to perform the operation[解决办法]
今天Attach一个数据库,想对数据库重命名,结果报如下错误:Error: the database could not be exclusively locked to perform the operation.(Microsoft Sql Server,Error 5030) 根据http://social.msdn.microsoft.com/Forums/sqlserver/原创 2014-02-10 14:19:34 · 4137 阅读 · 0 评论 -
Operating system error 64(指定的网络名不再可用。)
这两天数据库异地备份遇到如下错误消息:BackupDiskFile::RequestDurableMedia: failure on backup device '\\116.25.1403.4\F7ASRSBackup\F7ASRS_backup_201402251506.bak'. Operating system error 64(指定的网络名不再可用。).环境:Windows S原创 2014-02-25 16:52:39 · 6728 阅读 · 0 评论 -
获取SQL Server的安装时间
获取SQL Server的安装日期原创 2014-07-18 10:09:43 · 2090 阅读 · 0 评论 -
SQL Server 2012新特性_列存储索引(2)
在上一篇Blog(SQL Server 2012新特性_列存储索引(1) )中,对列存储及列存储索引的概念及特征等做了一些介绍,接下来,主要对列存储索引的创建与使用做一些演练:创建COLUMNSTORE INDEX创建COLUMNSTORE INDEX常用的语法如下:CREATE NONCLUSTERED COLUMNSTORE INDEX ON (,,… )通常可以通过T-原创 2012-04-05 21:58:06 · 5488 阅读 · 1 评论 -
SQL Server 2012新特性_增强的T-SQL编辑器
T-SQL编辑器在2012里有了进一步的增强,如支持代码片段、支持在完成列表中进行 substring 方式匹配及断点验证等。下面一起来看看:断点验证如下图,在2012的编辑器里,在一些无效的位置(如示例中的第3、4行)设置断点时,会在编辑器的左下角出现“这不是断点的有效位置”的信息提示,而在2008R2及之前的版本中,是不会有这样的提示的。2012的这个新特性,就可以避免一些有意或无原创 2012-03-29 10:29:27 · 3703 阅读 · 0 评论 -
SQL Server 2012可编程性新特性_6_14个新的内置函数
SQL Server 2012 引入了 14 个新的内置函数。这些新函数是:转换函数(3个):PARSE、TRY_CONVERT、TRY_PARSE日期和时间函数(7个):DATEFROMPARTS、DATETIME2FROMPARTS、DATETIMEFROMPARTS、DATETIMEOFFSETFROMPARTS、EOMONTH、MALLDATETIMEFROMPARTS、TIM原创 2012-03-28 10:16:19 · 1785 阅读 · 0 评论 -
SQL Server 2012 新功能一览
微软于3月7日正式发布SQL Server 2012(以后简称SQL2012)。SQL2012发布之前,有幸公费参加2011微软技术大会(北京),当时不是称为SQL Server 2012,而是其前身SQL Server Denali。 大会上,了解到Denali新增了支持Windows服务器核心的功能,让SQL Server安装能够更简洁和高效,有望减小潜在的攻击面、减少打补丁的原创 2012-03-23 09:10:54 · 10290 阅读 · 0 评论 -
SQL Server 2012可编程性新特性_3_THROW
T-SQL从2005年就开始支持TRY-CATCH ,但直到2012才有THROW。THROW不带参数,其用法与C#和VB中catch块中的throw类似。也就是说,它会重新抛出异常,而不会丢失当时捕捉到的任何信息。它对于向重试队列记录或添加条目很有帮助,同时也可以通知应用程序出错。当THROW带参使用时,它类似于RAISERROR,不同之处在于它支持sys.messages之外的错误信息号(er原创 2012-03-27 08:58:42 · 1383 阅读 · 0 评论 -
SQL Server 2012中包含的数据库(Contained Database)探索
SQL Server 2012引入了包含数据库(Contained Database),解决了与当前(非包含)数据库关联的某些问题和复杂性。包含的数据库不依赖于其所属服务器相关的配置、管理、排序规则和安全认证信息,因此可以在数据库实例间方便的移动和部署,使数据库的应用和实例分离开来,也使研发能够更好的集中在应用和功能本身。下面将从什么是包含数据库,如何创建包含数据库,如何将数据库转换为部分包含的数原创 2012-04-19 14:26:25 · 7256 阅读 · 4 评论 -
SQL Server 2012可编程性新特性_8_OVER 子句功能增强
OVER 子句在2012里增强了其功能,现在可以计算出移动平均值、累计合计,同时可以指定ROWS(也可以用RANGE)子句,具体可以通过如下示例体会一下其含义: MSDN:http://msdn.microsoft.com/zh-cn/library/ms189461.aspx原创 2012-03-28 15:31:23 · 1424 阅读 · 0 评论 -
SQL Server 2012新特性_列存储索引(1)
做企业应用几年来,每天与SQL Server打交道,深知日益增长的数据给OLTP效率带来的巨大影响,User反应系统慢、有时甚至卡死(通常是出现死锁)。对于有大量OLTP的应用系统来说,系统的运行效率显得尤为重要。如何使系统获得性能上的最佳用户体验,是摆在IT面前的一项艰巨任务。硬件升级、索引、高效执行的SQL、相关性能提升的配置等,往往是我们考虑的。对于拥有海量数据的数据仓库(DW)、决策支持系原创 2012-04-03 10:43:20 · 5627 阅读 · 0 评论 -
SQL Server 2012 AlwaysOn探索(下)
在SQL Server 2012 AlwaysOn探索(上) ,介绍了SQL Server各项HA技术并重点介绍了AlwaysOn技术。这里将详细介绍AlwaysOn整个配置的过程及部分管理。环境: Windows Server 2012 + SQL Server 2012(SP1) Enterprise Edition (64-bit)物理主机: 172.20.144.176:a原创 2013-09-26 18:15:03 · 4507 阅读 · 0 评论 -
SQL Server 2012可编程性新特性_1_Sequence
SQL Server 2012可编程性新增了一些新的特性,这些特性使得我们的日常工作变得更加简单,下面一起来学习一下:序列(Sequence)是一种用户定义的架构绑定对象,它根据创建该序列时采用的规范生成一组数值。这组数值以定义的间隔按升序或降序生成,并且可根据要求循环(重复)。 序列不与表相关联,这一点与标识列不同。有两种方式创建序列号,一是通过对象资源管理器-->DB-->原创 2012-03-26 16:14:20 · 1769 阅读 · 0 评论 -
SQL Server 2012可编程性新特性_2_OFFSET
通过 OFFSET-FETCH 子句,您可以从结果集中仅提取某个时间范围或某一页的结果。OFFSET-FETCH 只能与 ORDER BY 子句一起使用。如下,从排序的结果集中跳过前2行并返回接下来的2行,可以通过ROW_NUMBER()来实现,但通过SQL2012的新特性OFFSET来实现更为简便;如果要从排序的结果集中跳过前2行并返回剩余的行,则只需将下面示例当中的FETCH NEXT 2原创 2012-03-26 21:44:14 · 1268 阅读 · 0 评论 -
SQL Server 2012可编程性新特性_4_WITH RESULT SETS
在之前的版本基础上,2012新增了可以使用 WITH RESULT SETS 选项定义结果集的元数据的功能。我们知道,存储过程中返回结果集是很常见的,但如果想要控制部分返回结果集的字段名和数据类型将会是很困难的。SQL Server 2012引入一个新特性WITH RESULT SETS,可以重新定义存储过程中返回结果的字段名和数据类型。这会使得向拥有特定字段名和数据类型的临时表的结果集中插入记录原创 2012-03-27 11:04:23 · 2073 阅读 · 0 评论 -
无法连接到WMI提供程序(Cannot connect to WMI provider)--已解决
今天一位同事在打开自己工作机的原创 2014-06-27 16:42:24 · 6811 阅读 · 1 评论 -
获取最耗时的存储过程
通过下面的T-SQL,即可轻松获取最耗时的存储过程的信息:SELECT TOP 10 OBJECT_NAME(a.object_id,database_id) SP_Name, DB_NAME(a.database_id) Database_Name, a.cached_time, a.last_execution_time, a.total_elapsed_time, a.total_e原创 2014-12-31 11:11:23 · 1950 阅读 · 1 评论 -
SQL Server 2016新特性:DROP IF EXISTS
在我们写T-SQL要删除某个对象(表、存储过程等)时,一般会习惯先用IF语句判断该对象是否存在,然后DROP,比如:旧版本:IF OBJECT_ID('dbo.PERSON','U') IS NOT NULLDROP TABLE PERSONIF EXISTS (SELECT * FROM sys.objects where name = 'PERSON')DROP TAB原创 2016-06-02 09:38:25 · 8748 阅读 · 0 评论 -
获取整个实例下缺失的索引信息
变量@email_profile_name和@email_recipients 赋值后,执行脚本即可。本脚本根据缺失索引的影响程度,由大到小进行排序。DECLARE @email_profile_name VARCHAR(100);DECLARE @email_recipients VARCHAR(100);set @email_profile_name = '' ; set @emai原创 2016-08-12 08:28:52 · 991 阅读 · 0 评论 -
使用xp_readerrorlog审计失败及成功的登录
USE [master]GODECLARE @FirstDay DATETIME, @LastDay DATETIMESET @FirstDay = DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE()) - 2, 0); --默认上月首日SET @LastDay = GETDATE(); IF OBJECT_ID('tempdb..#Tem原创 2016-08-12 09:00:31 · 1181 阅读 · 0 评论 -
Tempdb怎么会成为性能瓶颈?
转自:https://blogs.msdn.microsoft.com/apgcdsd/2011/01/24/tempdb/我曾经遇到过这样一个性能问题。一个客户反映,他的SQL Server会在某一段时间里,突然变得非常慢。最后他不得不重启SQL Server服务。而重启以后,问题就消失了。客户在出现问题的那段时间里,收集了主要的系统动态管理视图,以及性能监视器里和SQL Ser转载 2016-10-10 11:27:41 · 3110 阅读 · 0 评论 -
如何监测谁用了SQL Server的Tempdb空间?
转自:https://blogs.msdn.microsoft.com/apgcdsd/2011/02/10/sql-servertempdb/Tempdb系统数据库是一个全局资源,供连接到 SQL Server 实例的所有用户使用。在现在的SQL Server里,其使用频率可能会超过用户的想象。如果Tempdb空间耗尽,许多操作将不能完成。作为一个支持工程师,会被经常问到象“转载 2016-10-10 11:30:57 · 1604 阅读 · 0 评论 -
谁用掉了我的数据库空间?
随着硬件能力的升级,以及软件应用的扩展,现在的数据库是越来越大了。回想10年前,一个上百GB的数据库就会把支持工程师吓得要命。而现在,上TB的数据库真是比比皆是。 DBA遇到的一个常见问题,就是如何监视数据空间的增长情况,或者在数据库用满的时候,能够迅速定位谁是罪魁祸首。了解一个数据库空间使用的最简单方法,就是在Management Studio里,右键点击数据库名字,选择”R转载 2016-10-12 13:33:26 · 836 阅读 · 0 评论 -
Lock request time out period exceeded. (Microsoft SQL Server, Error: 1222)
问题: 正常情况下,执行Rebuild Index都会很快完成,可今天遇到Rebuild Index的Job一直Running。手动执行Rebuild,也一样失败,报“Lock request time out period exceeded. (Microsoft SQL Server, Error: 1222)”,如下图:解决:查看当前Running的SPID及SQL Text,特原创 2016-11-02 16:47:57 · 4378 阅读 · 0 评论 -
SQL Server KILL Sleeping进程
DECLARE @SPID AS INTDECLARE @COUNT AS INT=0DECLARE curSPID CURSOR FORSELECT A.SPID --,DB_NAME(A.DBID) DB,A.login_time,SUBSTRING(SUSER_SNAME(sid),1,30) 登陆帐号,A.CMD,A.open_tran,A.last_batch,A.hostnam原创 2016-12-13 15:50:22 · 3533 阅读 · 0 评论 -
Find out session ID of blocked processes and kill it
How to find out session ID of blocked processes and kill it?原创 2011-04-04 22:41:00 · 1200 阅读 · 0 评论 -
使用DMV调优性能
使用DMV,诊断和调优DB性能。原创 2016-12-28 15:58:26 · 3401 阅读 · 0 评论 -
监控SQL Server的磁盘使用空间
下面SQL会列出磁盘可用空间低于15%的磁盘信息:SELECT DISTINCT vs.volume_mount_point AS Drive_Name, vs.total_bytes/1024/1024/1024 AS Drive_Total_Space, vs.available_bytes/1024/1024/1024 AS Drive_Free_Spaceinto #temp原创 2016-08-10 15:55:05 · 1137 阅读 · 0 评论 -
AlwaysON下迁移数据库----无需破坏HADR
Move database without breaking alwaysON This post is going to show the database movement from one drive to another drive, without breaking the database from alwaysON configuration. An application转载 2016-08-04 07:54:58 · 3541 阅读 · 0 评论 -
SQL Server 2016新特性:动态数据屏蔽(Dynamic Data Masking)
动态数据屏蔽是SQL Server 2016引入的一项新的特性,通过数据屏蔽,你可以对非授权用户限制敏感数据的曝光。动态数据屏蔽会在查询结果集里隐藏指定栏位的敏感数据,而数据库中的实际数据并没有任何变化。动态数据屏蔽很容易应用到现有的应用系统中,因为屏蔽规则是应用在查询结果上,很多应用程序能够在不修改现有查询语句的情况下屏蔽敏感数据。 动态数据屏原创 2016-06-02 09:33:55 · 3570 阅读 · 0 评论 -
SQL Server 2016新特性:行级别安全控制(Row-Level Security----RLS)
行级别安全控制(Row-Level Security----RLS)能够让我们根据用户执行查询的特性,来控制对数据库表中的数据行进行访问。RSL能够简化应用程序中安全的设计与编写代码,实现对数据行的访问限制。访问限制的逻辑位于数据库层,而不是在应用程序层分离数据。比如,我们希望各部门的经理只能查看他所在部门的员工的薪资情况,医院的护士只能查看自己所负责的病人的状况等。以往像要实现这样的功能,一般要原创 2016-06-02 09:19:45 · 2607 阅读 · 2 评论 -
SQL Server 2016新特性: Always Encrypted (始终加密)
数据,尤其是机密数据的安全性,是我们设计和开发系统所要考虑的。SQL Server 2016引入了加密数据列的新方式,即始终加密(Always Encrypted)。有了始终加密,数据就可以通过ADO.NET在应用层进行加密,这意味着,在数据通过网络发送到SQL Server之前,你可以通过.NET应用程序来加密你的机密数据。这个过程中,网络传输的是密文,存储在DB里的数据原创 2016-06-02 08:43:36 · 8235 阅读 · 13 评论 -
SQL Server 2016新特性: Temporal table
曾经我们遇过,误删(或更新)数据的情况,补救措施通常是还原数据库,然后把数据还原回来,整个过程比较繁琐耗时。SQL Server 2016引入了一个新的功能,即Temporaltable,我们可以称之为历史表,因为它记录了表在历史上任何时间点所做的改动。有了这个功能,一旦发生误操作,我们就可以及时进行数据恢复,很酷的一项功能。 Temporal Table原创 2016-06-02 08:12:38 · 4551 阅读 · 0 评论