代码改变世界

随笔分类 -  数据库技术(MS SQL)

SQL Server中CLR表值函数(table-valued function)不能使用WITH(NOLOCK)

2020-06-10 20:30 by 潇湘隐者, 894 阅读, 收藏, 编辑
摘要: 在SQL Server中,普通的表值函数(table-valued function)是可以使用表提示(Hints-Table)的,那么CLR类型的表值函数(table-valued function)是否也可以使用表提示(Hints-Table)呢? 相信很多人都没有留意过这个问题。 下面我以YourSQLDba中现成的CLR表值函数来演示一下这个问题。如果自己手头有自定义CLR表值函数的,... 阅读全文

SQL Server 2017错误日志中出现“Parallel redo is shutdown for database 'xxx' with worker pool size [2]."浅析

2020-05-16 12:54 by 潇湘隐者, 1382 阅读, 收藏, 编辑
摘要: 在SQL Server 2017的错误日志中出现"Parallel redo is started for database 'xxx' with worker pool size [2]"和“Parallel redo is shutdown for database 'xxx' with worker pool size [2].”这种信息,这意味着什么呢? 如下所示 Date ... 阅读全文

YourSQLDba低版本的一个Bug的浅析

2020-05-08 17:07 by 潇湘隐者, 446 阅读, 收藏, 编辑
摘要: 帮人分析解决一个YourSQLDba备份报错问题,个人觉得有点意思,顺手记录一下分析思路,大体解决思路如下: 首先,找到YourSQLDba作业YourSQLDba_FullBackups_And_Maintenance的报错邮件或者作业的错误日志信息,检查YourSQLDba出错的详细信息。 YOURSQLDBA.MAINT.ShowHistoryErrors 96 发现YourSQ... 阅读全文

SQL Server中GETDATE转换时间时注意事项

2020-03-28 12:26 by 潇湘隐者, 1491 阅读, 收藏, 编辑
摘要: 在SQL Server中,有时候查询数据时,需要限定查询时间范围。此时需要对时间进行运算, 如下所示: USE AdventureWorks2014;GOSELECT *FROM HumanResources.EmployeeWHERE ModifiedDate > GETDATE() - 20; 例如,获取前一天的时间,可以用下面这样的SQL语句。 SE... 阅读全文

SQL Server 2008 R2执行存储过程sp_MailItemResultSets引起大量PREEMPTIVE_OS_WAITFORSINGLEOBJEC等待

2020-03-24 23:44 by 潇湘隐者, 753 阅读, 收藏, 编辑
摘要: 从监控工具DPA中发现一个数据库(SQL Server 2008 R2)的等待事件突然彪增,下钻分析发现数据库执行存储过程sp_MailItemResultSets时,引起了非常严重的等待(High Wait),而主要的等待事件为PREEMPTIVE_OS_WAITFORSINGLEOBJEC。 如下截图所示: 查询正在执行的SQL,发现会话正在执行下面SQL(存储过程sp_MailItemR... 阅读全文

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool

2020-03-16 11:55 by 潇湘隐者, 9995 阅读, 收藏, 编辑
摘要: 如果应用程序遇到了下面错误信息,那么意味着连接池(connection pool)的连接数量由于一些原因导致其超过了Max Pool Size参数的限制。 英文错误信息: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occ... 阅读全文

SQL Server 2014下Database Mail Engine进程消耗大量CPU资源

2020-03-12 23:36 by 潇湘隐者, 753 阅读, 收藏, 编辑
摘要: 今天发现监控的一个SQL Server数据库实例的CPU有些异常,如下所示,系统消耗的CPU(O/S CPU Utilization)和数据库实例消耗的CPU(Instance CPU Utilization)有较大出入,登录服务器检查,发现Database Mail Engine进程消耗了20%作业的CPU资源。而且是持续消耗这么多CPU资源。 首先我想的是数据库是否... 阅读全文

SQL Server大表如何快速删除数据

2020-03-09 13:41 by 潇湘隐者, 15544 阅读, 收藏, 编辑
摘要: 在SQL Server中,如何快速删除大表中的数据呢? 回答这个问题前,我们必须弄清楚上下文环境和以及结合实际、具体的需求,不同场景有不同的应对方法。 1: 整张表的数据全部删除 如果是整张表的数据全部清空、删除,这种场景倒是非常简单,TRUNCATE TABLE肯定是最快的。 反而用DELETE处理的话,就是一个糟糕的策略。 2: 大表中删除一部分数据 对于... 阅读全文

SQL Server解惑——对象命名的唯一性小结

2020-02-21 11:48 by 潇湘隐者, 1954 阅读, 收藏, 编辑
摘要: 关于SQL Server数据库中的对象命名的唯一性问题。例如表、索引、约束等数据库对象,有时候DBA在做数据库维护时,经常要创建对象或重命名对象,此时就会遇到一个问题,对象命名的唯一性问题。虽然是一个小小的问题,估计不少人搞不清,在看文章前,你可以先回答几个问题 1: 表名在数据库是不是唯一? 不同的Schema下,是否可以存在同名的表? 2: 索引名在数据库是不是唯一? 不同的Sch... 阅读全文

SQL Server等待事件—PAGEIOLATCH_EX

2020-02-11 15:36 by 潇湘隐者, 2849 阅读, 收藏, 编辑
摘要: 什么是PAGEIOLATCH_EX等待事件? 下面我们将对PAGEIOLATCH_EX等待事件的相关资料做一个简单的归纳、整理。关于PAGEIOLATCH_EX,官方文档的简单介绍如下: PAGEIOLATCH_EX: Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The l... 阅读全文

为什么你SQL Server中SQL日期转换出错了呢?

2020-01-11 15:40 by 潇湘隐者, 2486 阅读, 收藏, 编辑
摘要: 开发人员有时候使用类似下面SQL将字符串转换为日期时间类型,乍一看,这样的SQL的写法是没有什么问题的。但是这样的SQL其实有时候就是一个定时炸弹,随时可能出现问题(),下面简单对这种情况进行一个简单概括。 SELECT CONVERT(DATETIME, '2020-01-13 6:46:42'); 如果你将连接数据库的登录名的默认语言修改为Aribc,然后去执行上面SQL语句,... 阅读全文

SQL Server误设置max server memory处理小结

2019-12-24 11:20 by 潇湘隐者, 2768 阅读, 收藏, 编辑
摘要: 昨天网上一网友说,由于他同事误将“max server memory”设置为10M后,SQL Server数据库登录不了,当时我简单测试了一下,今天有空就顺手将整个过程整理一下,记录在此。 在SSMS的UI界面设置“max server memory”,即使你设置为10M大小,但是它会“悄悄”默认修改为128M,你用Profile跟踪或者设置后会发现,它偷偷“修改”了你的设置值(改为了128M... 阅读全文

SQL Server优化技巧——如何避免查询条件OR引起的性能问题

2019-11-22 15:48 by 潇湘隐者, 5421 阅读, 收藏, 编辑
摘要: 之前写过一篇博客“SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析”,里面介绍了OR可能会引起全表扫描或索引扫描的各种案例,以及如何优化查询条件中含有OR的SQL语句的几种方法,其实还有一些方法可以用来优化这种问题,这里简单介绍一下。 如下所示,下面的SQL语句之所有出现这种写法,是因为程序的查询界面,可能有多个输入性的查询条件,往往用户只填了一个或部分查询条件(业务情况,应该不用... 阅读全文

SQL Server解惑——为什么你的查询结果超出了查询时间范围

2019-11-10 15:40 by 潇湘隐者, 1840 阅读, 收藏, 编辑
摘要: 废话少说,直接上SQL代码(有兴趣的测试验证一下),下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇到的一个问题,个人设计了一个例子。 USE AdventureWorks2014;GOSELECT * FROM [Person].[Person]WHERE ModifiedDate >= '2008-11-26 00:00:00:000' AND Modif... 阅读全文

阿里云RDS for SQL Serrver关于权限的一个严重Bug

2019-10-23 23:35 by 潇湘隐者, 867 阅读, 收藏, 编辑
摘要: 阿里云RDS for SQL Server的账号管理有不少小Bug,而且有一个很严重的Bug:任何普通账号,都能创建数据库。注意,我这里是说任意普通账号,任意任意普通账号!任意任意普通账号!重要的事情说三遍。 例如,下面测试环境所示,RDS for SQL Server的数据库版本为SQL Server 2016 WEB,我们在控制平台的“账号管理”界面,创建一个数据库账号test2,如下... 阅读全文

SQL Server获取索引创建时间&重建时间&重组时间

2019-10-22 17:09 by 潇湘隐者, 3066 阅读, 收藏, 编辑
摘要: 之前写过一篇博客“SQL Server中是否可以准确获取最后一次索引重建的时间?“,里面主要讲述了三个问题:我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild)的时间? 最后一次索引重组(INDEX REORGANIZE)的时间呢?,当时得出的结论,答案是我们无法准确的找到索引的创建时间、最后一次索引重组时间,最后一次索引重建的时间。但是最近看到一篇博客“SQL Server... 阅读全文

SQL Server通过条件搜索获取相关的存储过程等对象

2019-10-22 12:05 by 潇湘隐者, 669 阅读, 收藏, 编辑
摘要: 在SQL Server中,我们经常遇到一些需求,需要去搜索存储过程(Procedure)、函数(Function)等对象是否包含某个对象或涉及某个对象,例如,我需要查找那些存储过程、函数是否调用了链接服务器(LINKED SERVER),我们如果从sys.sql_modules去搜索的话,如果有多个用户数据库,需要切换数据库,执行多次SQL语句。这些都是非常麻烦的事情。本着“模块化定制脚本,... 阅读全文

SQL Server重建索引与重组索引会更新统计信息吗?

2019-10-15 08:58 by 潇湘隐者, 2133 阅读, 收藏, 编辑
摘要: 在SQL Server中重建索引(Rebuild Index)与重组索引(Reorganize Index)会触发统计信息更新吗? 那么我们先来测试、验证一下: 我们以AdventureWorks2014为测试环境,如下所示: Person.Person表的统计信息最后一次更新为2014-07-17 16:11:31,如下截图所示: DECLARE @table_name NVAR... 阅读全文

SQL Server如何找出一个表包含的页信息(Page)

2019-09-27 12:15 by 潇湘隐者, 2063 阅读, 收藏, 编辑
摘要: 在SQL Server中,如何找到一张表或某个索引拥有那些页面(page)呢? 有时候,我们在分析和研究(例如,死锁分析)的时候还真有这样的需求,那么如何做呢? SQL Server 2012提供了一个无文档的DMF(sys.dm_db_database_page_allocations)可以实现我们的需求,sys.dm_db_database_page_allocations有下面几个参数: ... 阅读全文

SQL Server查看login所授予的具体权限

2019-09-25 22:58 by 潇湘隐者, 2816 阅读, 收藏, 编辑
摘要: 在SQL Server数据库中如何查看一个登录名(login)的具体权限呢,如果使用SSMS的UI界面查看登录名的具体权限的话,用户数据库非常多的话,要梳理完它所有的权限,操作又耗时又麻烦,个人十分崇尚简洁、高效的方法,反感那些需要大量手工操作的UI界面操作方式,哪怕就是脚本,如果不能一次搞定,手工多操作几次(例如,切换数据库),都是不可接受的。最近遇到这个需求,就完善了一下之前的脚本get_lo... 阅读全文
上一页 1 2 3 4 5 6 7 ··· 19 下一页