代码改变世界

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

Key Lookup开销过大导致聚集索引扫描

2018-09-21 15:11 by 潇湘隐者, 3494 阅读, 收藏, 编辑
摘要: 以前总结过一篇文章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 潇湘隐者, 5348 阅读, 收藏, 编辑
摘要: 关于SQL Server的查询提示OPTION (OPTIMIZE FOR UNKNOWN) ,它是解决参数嗅探的方法之一。 而且对应的SQL语句会缓存,不用每次都重编译。关键在于它的执行计划的准确度问题, 最近在优化的时候,和同事对于这个查询提示(Query Hint)有一点分歧,遂动手实验验证、总结了一些东西。 关于提示OPTION (OPTIMIZE FOR UNKNOWN),它会利... 阅读全文

一次存储过程参数嗅探定位流程总结

2018-09-15 12:30 by 潇湘隐者, 3422 阅读, 收藏, 编辑
摘要: 昨天一开发同事反馈一个存储过程很慢,但是重编译后,存储过程就很快了。了解基本情况后,初步判断是参数嗅探问题。那么如何诊断定位、分析问题呢?下面简单介绍一下这次参数嗅探问题定位的流程过程。 首先查看该存储过程的执行计划相关信息: 如下截图所示,此存储过程是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 潇湘隐者, 2375 阅读, 收藏, 编辑
摘要: 今天遇到了一个关于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 潇湘隐者, 4870 阅读, 收藏, 编辑
摘要: 最近发现一个数据库中的某个表有个字段名后面包含了一个空格,这个空格引起了一些小问题,一般出现这种情况,是因为创建对象时,使用双引号或双括号的时候,由于粗心或手误多了一个空格,如下简单案例所示: 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 潇湘隐者, 1075 阅读, 收藏, 编辑
摘要: 一台数据库服务器的事务日志备份作业偶尔会出现几次备份失败的情况,具体的错误信息为: 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 潇湘隐者, 1612 阅读, 收藏, 编辑
摘要: 在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 潇湘隐者, 852 阅读, 收藏, 编辑
摘要: 在这篇博客“ORACLE当中自定义函数性优化浅析”中,我们介绍了通过标量子查询缓存来优化函数性能: 标量子查询缓存(scalar subquery caching)会通过缓存结果减少SQL对函数(Function)的调用次数, ORACLE会在内存中构建一个哈希表来缓存标量子查询的结果。 那么SQL Server的优化器是否也会有类似这样的功能呢? 抱着这样的疑问,动手测试了一下,准备测试环境 ... 阅读全文

SQL Server中如何识别、查找未使用的索引(unused indexes)

2018-05-22 23:10 by 潇湘隐者, 1729 阅读, 收藏, 编辑
摘要: 在SQL Server中,索引是优化SQL性能的一大法宝。但是由于各种原因,索引会被当做“银弹”滥用,一方面有些开发人员(甚至是部分数据库管理员)有一些陋习,不管三七二十一,总是根据所谓的"感觉"或“经验”先增加一些索引,而不管这些索引是否未被使用或是否合理。另外一方面在数据库的生命周期中,需求总是在变化,业务也在变化,有些当初创建的有效索引可能已经变成了unused index了。变成了数据... 阅读全文

SQL SERVER中LIKE使用变量类型不同输出结果不一致解惑

2018-05-21 23:09 by 潇湘隐者, 3367 阅读, 收藏, 编辑
摘要: 一同事在写脚本时,遇到一个关于LIKE里面使用不同的变量类型导致查询结果不一致的问题,因为这个问题被不同的人问过好几次,索性总结一下,免得每次都要解释一遍,直接丢一篇博客岂不是更方便!其实看似有点让人不解的现象背后实质跟数据类型的实现有关。 下面我们构造这样一个类似的简单案例。如下所, CREATE TABLE TEST(ID INT IDENTITY(1,1), NAME... 阅读全文

SQL Server Replication的分发服务器的快照文件夹位置查找

2018-05-17 22:57 by 潇湘隐者, 1480 阅读, 收藏, 编辑
摘要: SQL Server分发服务器配置中,需要配置快照文件夹(Snapshot Folder),用于存储发布的数据和架构文件的工作目录,那么如何查找当前SQL Server数据库服务器的分发服务器的快照文件夹位置呢? 如果配置了具体发的发布和订阅,那么可以在对应的发布的属性-》快照文件里面查看,如果还没有配置具体的发布和订阅,这个需要怎么查看呢? ... 阅读全文

服务器 'xxxx' 已被定义为分发服务器。若要将该服务器重新配置为分发服务器,必须首先卸载现有的分发服务

2018-05-17 22:11 by 潇湘隐者, 716 阅读, 收藏, 编辑
摘要: 使用AWS DMS(Database Migration Service)将SQL Server数据库同步到AWS的Data Lake上,需要在本地源数据库上配置复制,在配置分发向导最后一步时,遇到下面错误: TITLE: Microsoft.SqlServer.ConnectionInfo------------------------------ SQL Server cou... 阅读全文

查看Windows服务器安装了那些SQL Server组件

2018-05-17 11:56 by 潇湘隐者, 4537 阅读, 收藏, 编辑
摘要: 如何查看Windows服务器安装了那些SQL Server组件呢? 最近就遇到这样一个需求,需要知道Windows服务器是否安装了Replication组件,那么有几种方法查看Windows服务器安装了哪些SQL Server组件呢?下面总结一下这方面的方法,希望对遇到这样问题的人有所帮助! 1:通过SQL Server Features Discovery Report查看。 ... 阅读全文

备份链中断导致差异备份报错案例

2018-05-09 15:40 by 潇湘隐者, 906 阅读, 收藏, 编辑
摘要: 最近一台SQL Server服务器部署SQL Server Backup后,发现每晚的差异备份老是失败,报如下错误: Msg 3035, Level 16, State 1, Line 1 无法执行数据库"xxxx" 的差异备份,因为不存在当前数据库备份。请去掉WITH DIFFERENTIAL 选项后重新发出BACKUP DATABASE 以执行数据库的完整备份。 Msg 3013, L... 阅读全文

SQL Server遗失管理权限账号密码怎么办?

2018-04-24 16:19 by 潇湘隐者, 2336 阅读, 收藏, 编辑
摘要: 假如一个SQL Server实例只允许“SQL身份认证”模式登录数据库,而糟糕的是你忘记了sa的密码(sa出于安全考虑应该被禁用,这里仅仅为了描述问题)或其它具有sysadmin角色的登录名的密码?个人就遇到这样一个案例,HK一同事在一台测试服务器安装了一个测试用途的SQL Server数据库,然后这个同事离职前没有交接这个测试服务器任何信息。那现在就麻烦了。我没有任何权限,我如何获取sysadm... 阅读全文

SQL Server系统视图sys.master_files不能正确显示数据库脱机状态

2018-04-21 00:27 by 潇湘隐者, 1243 阅读, 收藏, 编辑
摘要: 最近发现在SQL Server数据库(目前测试过SQL Server 2008, 2012,2014,2016各个版本)中,即使数据库处于脱机(OFFLINE)状态,但是sys.master_files中依然显示是联机状态。本文测试环境为Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64) 。具体测试过程如下所示: ... 阅读全文

[翻译]SQL Server等待事件—THREADPOOL

2018-04-18 16:32 by 潇湘隐者, 1237 阅读, 收藏, 编辑
摘要: 前言: 本文是对SQLSkills上一篇关于SQL Server中THREADPOOL等待的博客的翻译,本文也不是完全翻译,有些地方适当加入了自己的一些认知。如有翻译不对或不好的地方,敬请指出,大家一起学习进步。尊重原创和翻译劳动成果,转载时请注明出处。谢谢! 英文原文地址:https://www.sqlskills.com/help/waits/threadpool/ 翻... 阅读全文

The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction

2018-04-12 22:06 by 潇湘隐者, 1181 阅读, 收藏, 编辑
摘要: 今天遇到一起关于分布式事务错误的案例,如下所示,执行SQL脚本时报错, 错误信息具体如下所示: [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ] OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x80... 阅读全文

SQL Server查看视图定义总结

2018-04-11 14:01 by 潇湘隐者, 25968 阅读, 收藏, 编辑
摘要: 在SQL Server中如何查看数据库视图的定义呢? 其实官方文档已经有一个较详细的总结了,这里在官方文档的基础上,我们再深入展开分析一下,例如如何获取系统视图的定义。知其然知其所以然吗。 1:使用SQL Server Management Studio(SSMS) 在“对象资源管理器”中,首先找到对应数据库中需要查看定义的视图,右键单击获取对象的定义脚本。这种方式非常简单。在此略过。... 阅读全文
上一页 1 2 3 4 5 6 7 8 9 10 ··· 19 下一页