摘要:
这里简单总结一下关于SQL Server事务日志备份的一些疑问,如有其它更多疑问,欢迎你们留言讨论。 事务日志备份频繁有性能影响吗? 关于事务日志备份,如果设置得非常频繁有什么性能影响吗? 这个是不少人的疑惑,频繁的事务日志备份是否影响性能呢?其实这是一个谬论。关于这些问题,我们先来做个假设,假设两小时内产生了30G大小的事务日志,那么对于下面几种事务日志备份策略: 1... 阅读全文
随笔分类 - 数据库技术(MS SQL)
SQL Server数据库还原或分离附加后程序集遇到的SQL CLR问题
2020-06-16 11:32 by 潇湘隐者, 948 阅读, 收藏, 编辑
摘要:
工作中遇到一个案例:备份还原过后或者对数据库分离&附加后(移动数据库文件),发现一些权限为EXTERNAL_ACCESS和UNSAFE程序集对应的CLR函数,在调用的时候会出现一些错误。下面特意用YourSQLDba备份还原到一个测试环境,然后调用CLR函数,就会遇到如下错误: USE YourSQLDba;GOSELECT *FROM [yUtl].[clr_GetFolder... 阅读全文
SQL Server中CLR表值函数(table-valued function)不能使用WITH(NOLOCK)
2020-06-10 20:30 by 潇湘隐者, 915 阅读, 收藏, 编辑
摘要:
在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 潇湘隐者, 450 阅读, 收藏, 编辑
摘要:
帮人分析解决一个YourSQLDba备份报错问题,个人觉得有点意思,顺手记录一下分析思路,大体解决思路如下: 首先,找到YourSQLDba作业YourSQLDba_FullBackups_And_Maintenance的报错邮件或者作业的错误日志信息,检查YourSQLDba出错的详细信息。 YOURSQLDBA.MAINT.ShowHistoryErrors 96 发现YourSQ... 阅读全文
SQL Server中GETDATE转换时间时注意事项
2020-03-28 12:26 by 潇湘隐者, 1507 阅读, 收藏, 编辑
摘要:
在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 潇湘隐者, 758 阅读, 收藏, 编辑
摘要:
从监控工具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 潇湘隐者, 10387 阅读, 收藏, 编辑
摘要:
如果应用程序遇到了下面错误信息,那么意味着连接池(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 潇湘隐者, 763 阅读, 收藏, 编辑
摘要:
今天发现监控的一个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 潇湘隐者, 16258 阅读, 收藏, 编辑
摘要:
在SQL Server中,如何快速删除大表中的数据呢? 回答这个问题前,我们必须弄清楚上下文环境和以及结合实际、具体的需求,不同场景有不同的应对方法。 1: 整张表的数据全部删除 如果是整张表的数据全部清空、删除,这种场景倒是非常简单,TRUNCATE TABLE肯定是最快的。 反而用DELETE处理的话,就是一个糟糕的策略。 2: 大表中删除一部分数据 对于... 阅读全文
SQL Server解惑——对象命名的唯一性小结
2020-02-21 11:48 by 潇湘隐者, 1975 阅读, 收藏, 编辑
摘要:
关于SQL Server数据库中的对象命名的唯一性问题。例如表、索引、约束等数据库对象,有时候DBA在做数据库维护时,经常要创建对象或重命名对象,此时就会遇到一个问题,对象命名的唯一性问题。虽然是一个小小的问题,估计不少人搞不清,在看文章前,你可以先回答几个问题 1: 表名在数据库是不是唯一? 不同的Schema下,是否可以存在同名的表? 2: 索引名在数据库是不是唯一? 不同的Sch... 阅读全文
SQL Server等待事件—PAGEIOLATCH_EX
2020-02-11 15:36 by 潇湘隐者, 3033 阅读, 收藏, 编辑
摘要:
什么是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 潇湘隐者, 2562 阅读, 收藏, 编辑
摘要:
开发人员有时候使用类似下面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 潇湘隐者, 2838 阅读, 收藏, 编辑
摘要:
昨天网上一网友说,由于他同事误将“max server memory”设置为10M后,SQL Server数据库登录不了,当时我简单测试了一下,今天有空就顺手将整个过程整理一下,记录在此。 在SSMS的UI界面设置“max server memory”,即使你设置为10M大小,但是它会“悄悄”默认修改为128M,你用Profile跟踪或者设置后会发现,它偷偷“修改”了你的设置值(改为了128M... 阅读全文
SQL Server优化技巧——如何避免查询条件OR引起的性能问题
2019-11-22 15:48 by 潇湘隐者, 5612 阅读, 收藏, 编辑
摘要:
之前写过一篇博客“SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析”,里面介绍了OR可能会引起全表扫描或索引扫描的各种案例,以及如何优化查询条件中含有OR的SQL语句的几种方法,其实还有一些方法可以用来优化这种问题,这里简单介绍一下。 如下所示,下面的SQL语句之所有出现这种写法,是因为程序的查询界面,可能有多个输入性的查询条件,往往用户只填了一个或部分查询条件(业务情况,应该不用... 阅读全文
SQL Server解惑——为什么你的查询结果超出了查询时间范围
2019-11-10 15:40 by 潇湘隐者, 1868 阅读, 收藏, 编辑
摘要:
废话少说,直接上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 潇湘隐者, 875 阅读, 收藏, 编辑
摘要:
阿里云RDS for SQL Server的账号管理有不少小Bug,而且有一个很严重的Bug:任何普通账号,都能创建数据库。注意,我这里是说任意普通账号,任意任意普通账号!任意任意普通账号!重要的事情说三遍。 例如,下面测试环境所示,RDS for SQL Server的数据库版本为SQL Server 2016 WEB,我们在控制平台的“账号管理”界面,创建一个数据库账号test2,如下... 阅读全文
SQL Server获取索引创建时间&重建时间&重组时间
2019-10-22 17:09 by 潇湘隐者, 3260 阅读, 收藏, 编辑
摘要:
之前写过一篇博客“SQL Server中是否可以准确获取最后一次索引重建的时间?“,里面主要讲述了三个问题:我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild)的时间? 最后一次索引重组(INDEX REORGANIZE)的时间呢?,当时得出的结论,答案是我们无法准确的找到索引的创建时间、最后一次索引重组时间,最后一次索引重建的时间。但是最近看到一篇博客“SQL Server... 阅读全文
SQL Server通过条件搜索获取相关的存储过程等对象
2019-10-22 12:05 by 潇湘隐者, 673 阅读, 收藏, 编辑
摘要:
在SQL Server中,我们经常遇到一些需求,需要去搜索存储过程(Procedure)、函数(Function)等对象是否包含某个对象或涉及某个对象,例如,我需要查找那些存储过程、函数是否调用了链接服务器(LINKED SERVER),我们如果从sys.sql_modules去搜索的话,如果有多个用户数据库,需要切换数据库,执行多次SQL语句。这些都是非常麻烦的事情。本着“模块化定制脚本,... 阅读全文
SQL Server重建索引与重组索引会更新统计信息吗?
2019-10-15 08:58 by 潇湘隐者, 2161 阅读, 收藏, 编辑
摘要:
在SQL Server中重建索引(Rebuild Index)与重组索引(Reorganize Index)会触发统计信息更新吗? 那么我们先来测试、验证一下: 我们以AdventureWorks2014为测试环境,如下所示: Person.Person表的统计信息最后一次更新为2014-07-17 16:11:31,如下截图所示: DECLARE @table_name NVAR... 阅读全文