摘要:
一批Reporting Service报表的订阅突然报如下错误: Failure sending mail: The user or group name 'xxx\xxxx' is not recognized.Mail will not be resent. 原因如下,因为开发这批报表的人(也就是报表的创建者)离职了,然后他的NT账号在DC里面被系统管理员删除了。自然就没有权限将订... 阅读全文
随笔分类 - 数据库技术(MS SQL)
如何定位“Operating system error 32(failed to retrieve text for this error. Reason: 15105)”错误中被占用的文件
2018-11-26 16:18 by 潇湘隐者, 1203 阅读, 收藏,
摘要:
之前在这篇“Operating system error 32(failed to retrieve text for this error. Reason: 15105)”博客里面,介绍了因为AWS的DMS的相关会话进程在读取事务日志备份中内容(跟普通的Replication有点不同),导致事务日志备份出现Operating system error 32错误(The process can... 阅读全文
一个特殊的SQL Server阻塞案例分析
2018-11-26 14:50 by 潇湘隐者, 3107 阅读, 收藏,
摘要:
上周,在SQL Server数据库下面遇到了一个有意思的SQL阻塞(SQL Blocking)案例。其实个人对SQL Server的阻塞还是颇有研究的。写过好几篇相关文章。 至于这里为什么要总结一下这个案例,因为这个案例有点意思: 1:使用DMV视图捕获到的Blocking SQL为一个查询语句(这个不是真正引起阻塞的源头SQL语句),等待事件为LCK_M_S。 2:出现阻塞的会话非常... 阅读全文
cannot be run because the QueueReader subsystem failed to load
2018-11-22 14:52 by 潇湘隐者, 610 阅读, 收藏,
摘要:
前阵子一数据库服务器的事务日志开始暴增,当时使用下面脚本检查发现该数据库的log_reuse_wait_desc 一直处于REPLICATION状态, 也就是说在事务复制过程中,与发布相关的事务仍未传递到分发数据库。刚好前一天有个同事配置了AWS的DMS相关作业。 SELECT name, log_reuse_wait_desc FROM sys.databases; 找到具体作业检查发... 阅读全文
SQL Server Log Shipping学习总结
2018-11-13 12:25 by 潇湘隐者, 6303 阅读, 收藏,
摘要:
SQL Server的日志传送(log shipping)技术一直比较鸡肋,尤其当SQL Server 推出了Always On技术以后,估计使用日志传送(log shipping)这种技术方案的企业越来越少,但是日志传送也有自己的一些优点,有些特殊场景或业务背景下也有其存在的价值。最近由于特殊业务场景可能需要用到这个技术,所以做了一些测试和验证,比对一些知识做了一下总结、归纳。下面有部分内容... 阅读全文
SQL Server 更新统计信息出现严重错误,应放弃任何可能产生的结果
2018-10-17 15:00 by 潇湘隐者, 1966 阅读, 收藏,
摘要:
一台SQL Server 2008 R2版本(具体版本如下所示)的数据库,最近几天更新统计信息的作业出错,错误如下所示: Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Jun 28 2012 08:36:30 Copyright (c) Microsoft Corporation Standard... 阅读全文
SQL Server中LIKE %search_string% 走索引查找(Index Seek)浅析
2018-10-17 12:27 by 潇湘隐者, 6017 阅读, 收藏,
摘要:
在SQL Server的SQL优化过程中,如果遇到WHERE条件中包含LIKE '%search_string%'是一件非常头痛的事情。这种情况下,一般要修改业务逻辑或改写SQL才能解决SQL执行计划走索引扫描或全表扫描的问题。最近在优化SQL语句的时候,遇到了一个很有意思的问题。某些使用LIKE '%' + @search_string + '%'(或者 LIKE @search_strin... 阅读全文
SQL Server实际执行计划COST"欺骗"案例
2018-10-10 15:10 by 潇湘隐者, 1553 阅读, 收藏,
摘要:
有个系统,昨天Support人员发布了相关升级脚本后,今天发现系统中有个功能不能正常使用了,直接报超时了(Timeout expired)的错误。定位到相关相关存储过程后,然后在优化分析的过程中,又遇到了执行计划COST “欺骗”我们的这种情况,其实在我这篇博客”SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题“有提及这个问题,但是很多时... 阅读全文
SQL Server中通用数据库角色权限处理
2018-09-28 17:33 by 潇湘隐者, 1580 阅读, 收藏,
摘要:
SQL Server中通用数据库角色权限处理 最近和同事在做数据库权限清理的事情,主要是删除一些账号;取消一些账号的较大的权限等,例如,有一些有db_owner权限,我们取消账号的数据库角色db_owner,授予最低要求的相关权限。但是这种工作完全是一个体力活,而且是吃力不讨好,而且推进很慢。另外,为了管理方便和细化,我们又在常用的数据库角色外,新增了6个通用的数据库角色。如下截图所示。 ... 阅读全文
Key Lookup开销过大导致聚集索引扫描
2018-09-21 15:11 by 潇湘隐者, 3909 阅读, 收藏,
摘要:
以前总结过一篇文章SQL SERVER中什么情况会导致索引查找变成索引扫描 介绍了几种索引查找(Index Seek)变成索引扫描(Index Scan)的情形。昨天写一篇文章的时候,也遇到了一个让人奇怪的执行计划。一时没有想明白为什么优化器会选择聚集索引扫描。案例详情请见SQL Server OPTION (OPTIMIZE FOR UNKNOWN) 测试总结 。 如下所示,测试环境为SQL ... 阅读全文
SQL Server OPTION (OPTIMIZE FOR UNKNOWN) 测试总结
2018-09-21 00:37 by 潇湘隐者, 5794 阅读, 收藏,
摘要:
关于SQL Server的查询提示OPTION (OPTIMIZE FOR UNKNOWN) ,它是解决参数嗅探的方法之一。 而且对应的SQL语句会缓存,不用每次都重编译。关键在于它的执行计划的准确度问题, 最近在优化的时候,和同事对于这个查询提示(Query Hint)有一点分歧,遂动手实验验证、总结了一些东西。 关于提示OPTION (OPTIMIZE FOR UNKNOWN),它会利... 阅读全文
一次存储过程参数嗅探定位流程总结
2018-09-15 12:30 by 潇湘隐者, 3639 阅读, 收藏,
摘要:
昨天一开发同事反馈一个存储过程很慢,但是重编译后,存储过程就很快了。了解基本情况后,初步判断是参数嗅探问题。那么如何诊断定位、分析问题呢?下面简单介绍一下这次参数嗅探问题定位的流程过程。 首先查看该存储过程的执行计划相关信息: 如下截图所示,此存储过程是2018-09-12 9:03:01缓存的,最后一次执行是2018-09-14 08:58,而且自上次缓存后,执行了24875次。... 阅读全文
Cannot obtain the required interface ("IID_IDBCreateCommand") from OLE DB provider "OraOLEDB.Oracle" for linked server xxxx
2018-09-04 23:13 by 潇湘隐者, 2593 阅读, 收藏,
摘要:
今天遇到了一个关于LINKED SERVER查询报错的案例,链接服务器链接ORACLE数据库,测试没有错误,但是执行脚本的时候,报如下错误: Msg 7399, Level 16, State 1, Line 1 The OLE DB provider "OraOLEDB.Oracle" for linked server "xxxx" reported an error. Ac... 阅读全文
SQL Server如何查找表名或列名中包含空格的表和列
2018-08-28 16:21 by 潇湘隐者, 5511 阅读, 收藏,
摘要:
最近发现一个数据库中的某个表有个字段名后面包含了一个空格,这个空格引起了一些小问题,一般出现这种情况,是因为创建对象时,使用双引号或双括号的时候,由于粗心或手误多了一个空格,如下简单案例所示: USE TEST;GO --表TEST_COLUMN中两个字段都包含有空格CREATE TABLE TEST_COLUMN ( "ID " INT IDENTITY (1,1),... 阅读全文
The log scan number (620023:3702:1) passed to log scan in database 'xxxx' is not valid
2018-08-14 10:23 by 潇湘隐者, 1388 阅读, 收藏,
摘要:
昨天一台SQL Server 2008R2的数据库在凌晨5点多抛出下面告警信息: The log scan number (620023:3702:1) passed to log scan in database 'xxxx' is not valid. This error may indicate data corruption or that the log file (.ldf) ... 阅读全文
Operating system error 32(failed to retrieve text for this error. Reason: 15105)
2018-08-02 15:23 by 潇湘隐者, 1126 阅读, 收藏,
摘要:
一台数据库服务器的事务日志备份作业偶尔会出现几次备份失败的情况,具体的错误信息为: DATE/TIME: 2018/7/30 12:10:52 DESCRIPTION: BackupDiskFile::CreateMedia: Backup device 'M:\DB_BACKUP\LOG_BACKUP\xxxx_[2018-07-30_06h03m10_Mon]_logs.TR... 阅读全文
SQL Server 2012还原一直卡在ASYNC_IO_COMPLETION浅析
2018-07-18 15:15 by 潇湘隐者, 1685 阅读, 收藏,
摘要:
在SQL Server 2012(11.0.7001.0)下面在还原一个数据库(备份文件40多G大小,实际数据库大小300G),在还原过程中,出现一直等待ASYNC_IO_COMPLETION,如下测试截图所示,已经等待了72分钟了,但是还原比例依然为0% SELECT r.session_id , r.command , r.start_time, ... 阅读全文
SQL Server的优化器会缓存标量子查询结果集吗
2018-06-05 13:48 by 潇湘隐者, 887 阅读, 收藏,
摘要:
在这篇博客“ORACLE当中自定义函数性优化浅析”中,我们介绍了通过标量子查询缓存来优化函数性能: 标量子查询缓存(scalar subquery caching)会通过缓存结果减少SQL对函数(Function)的调用次数, ORACLE会在内存中构建一个哈希表来缓存标量子查询的结果。 那么SQL Server的优化器是否也会有类似这样的功能呢? 抱着这样的疑问,动手测试了一下,准备测试环境 ... 阅读全文
SQL Server中如何识别、查找未使用的索引(unused indexes)
2018-05-22 23:10 by 潇湘隐者, 2081 阅读, 收藏,
摘要:
在SQL Server中,索引是优化SQL性能的一大法宝。但是由于各种原因,索引会被当做“银弹”滥用,一方面有些开发人员(甚至是部分数据库管理员)有一些陋习,不管三七二十一,总是根据所谓的"感觉"或“经验”先增加一些索引,而不管这些索引是否未被使用或是否合理。另外一方面在数据库的生命周期中,需求总是在变化,业务也在变化,有些当初创建的有效索引可能已经变成了unused index了。变成了数据... 阅读全文
SQL SERVER中LIKE使用变量类型不同输出结果不一致解惑
2018-05-21 23:09 by 潇湘隐者, 3468 阅读, 收藏,
摘要:
一同事在写脚本时,遇到一个关于LIKE里面使用不同的变量类型导致查询结果不一致的问题,因为这个问题被不同的人问过好几次,索性总结一下,免得每次都要解释一遍,直接丢一篇博客岂不是更方便!其实看似有点让人不解的现象背后实质跟数据类型的实现有关。 下面我们构造这样一个类似的简单案例。如下所, CREATE TABLE TEST(ID INT IDENTITY(1,1), NAME... 阅读全文
浙公网安备 33010602011771号