摘要:
昨天网上一网友说,由于他同事误将“max server memory”设置为10M后,SQL Server数据库登录不了,当时我简单测试了一下,今天有空就顺手将整个过程整理一下,记录在此。 在SSMS的UI界面设置“max server memory”,即使你设置为10M大小,但是它会“悄悄”默认修改为128M,你用Profile跟踪或者设置后会发现,它偷偷“修改”了你的设置值(改为了128M... 阅读全文
随笔分类 - 数据库技术(MS SQL)
SQL Server优化技巧——如何避免查询条件OR引起的性能问题
2019-11-22 15:48 by 潇湘隐者, 6409 阅读, 收藏,
摘要:
之前写过一篇博客“SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析”,里面介绍了OR可能会引起全表扫描或索引扫描的各种案例,以及如何优化查询条件中含有OR的SQL语句的几种方法,其实还有一些方法可以用来优化这种问题,这里简单介绍一下。 如下所示,下面的SQL语句之所有出现这种写法,是因为程序的查询界面,可能有多个输入性的查询条件,往往用户只填了一个或部分查询条件(业务情况,应该不用... 阅读全文
SQL Server解惑——为什么你的查询结果超出了查询时间范围
2019-11-10 15:40 by 潇湘隐者, 1982 阅读, 收藏,
摘要:
废话少说,直接上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 潇湘隐者, 933 阅读, 收藏,
摘要:
阿里云RDS for SQL Server的账号管理有不少小Bug,而且有一个很严重的Bug:任何普通账号,都能创建数据库。注意,我这里是说任意普通账号,任意任意普通账号!任意任意普通账号!重要的事情说三遍。 例如,下面测试环境所示,RDS for SQL Server的数据库版本为SQL Server 2016 WEB,我们在控制平台的“账号管理”界面,创建一个数据库账号test2,如下... 阅读全文
SQL Server获取索引创建时间&重建时间&重组时间
2019-10-22 17:09 by 潇湘隐者, 3662 阅读, 收藏,
摘要:
之前写过一篇博客“SQL Server中是否可以准确获取最后一次索引重建的时间?“,里面主要讲述了三个问题:我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild)的时间? 最后一次索引重组(INDEX REORGANIZE)的时间呢?,当时得出的结论,答案是我们无法准确的找到索引的创建时间、最后一次索引重组时间,最后一次索引重建的时间。但是最近看到一篇博客“SQL Server... 阅读全文
SQL Server通过条件搜索获取相关的存储过程等对象
2019-10-22 12:05 by 潇湘隐者, 724 阅读, 收藏,
摘要:
在SQL Server中,我们经常遇到一些需求,需要去搜索存储过程(Procedure)、函数(Function)等对象是否包含某个对象或涉及某个对象,例如,我需要查找那些存储过程、函数是否调用了链接服务器(LINKED SERVER),我们如果从sys.sql_modules去搜索的话,如果有多个用户数据库,需要切换数据库,执行多次SQL语句。这些都是非常麻烦的事情。本着“模块化定制脚本,... 阅读全文
SQL Server重建索引与重组索引会更新统计信息吗?
2019-10-15 08:58 by 潇湘隐者, 2286 阅读, 收藏,
摘要:
在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 潇湘隐者, 2309 阅读, 收藏,
摘要:
在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 潇湘隐者, 3059 阅读, 收藏,
摘要:
在SQL Server数据库中如何查看一个登录名(login)的具体权限呢,如果使用SSMS的UI界面查看登录名的具体权限的话,用户数据库非常多的话,要梳理完它所有的权限,操作又耗时又麻烦,个人十分崇尚简洁、高效的方法,反感那些需要大量手工操作的UI界面操作方式,哪怕就是脚本,如果不能一次搞定,手工多操作几次(例如,切换数据库),都是不可接受的。最近遇到这个需求,就完善了一下之前的脚本get_lo... 阅读全文
YourSQLDba的共享路径备份遭遇重启问题
2019-09-25 14:32 by 潇湘隐者, 642 阅读, 收藏,
摘要:
如果YourSQLDba设置过共享路径备份(具体参考博客YourSQLDba设置共享路径备份),有时候服务器重启后,备份就会出错,具体错误信息类似如下所示: Date 2019/9/25 10:10:00Log SQL Server (Current - 2019/9/25 3:06:00) Source spid56 MessageBackup... 阅读全文
SQL Server如何正确的删除Windows认证用户
2019-09-21 16:49 by 潇湘隐者, 1112 阅读, 收藏,
摘要:
在SQL Server数据库中,有时候会建立一些Windows认证的账号(域账号),例如,我们公司习惯给开发人员和Support同事开通NT账号权限,如果有离职或负责事宜变更的话,那么要如何正确的删除这些Windows认证账号呢?这篇文章就是来探讨一下如何正确的删除Windows认证账号。如下所示: 阅读全文
Database mirroring connection error 4 'An error occurred while receiving data: '10054(An existing connection was forcibly closed by the remote host.)
2019-09-04 00:22 by 潇湘隐者, 1613 阅读, 收藏,
摘要:
公司一SQL Server镜像发生了故障转移(主备切换),检查SQL Server镜像发生主备切换的原因,在错误日志中发现下面错误: Date 2019/8/31 14:09:17 Log SQL Server (Archive #4 - 2019/9/1 0:00:00) Source spid35s Message Database mirr... 阅读全文
SQL Server Agent作业执行CmdExec(bat)命令报权限问题
2019-08-31 09:16 by 潇湘隐者, 1938 阅读, 收藏,
摘要:
写了一个bat命令,定期去清理一些SQL Server的Dump文件,然后配置成SQL Server作业,作业执行时报权限错误,具体错误信息如下所示: Message Executed as user: NT Service\SQLSERVERAGENT. The process could not be created for step 1 of job 0xCA038C081E9BEF4C... 阅读全文
SQL Server有意思的数据类型隐式转换问题
2019-08-27 23:35 by 潇湘隐者, 1402 阅读, 收藏,
摘要:
写这篇文章的时候,还真不知道如何取名,也不知道这个该如何将其归类。这个是同事遇到的一个案例,案例比较复杂,这里抽丝剥茧,仅仅构造一个简单的案例来展现一下这个问题。我们先构造测试数据,如下所示: CREATE TABLE TEST( ID INT, GOOD_TYPE VARCHAR(12), GOOD_WEIGHT NUMERIC(18,2)) INSERT INTO db... 阅读全文
SQL Server如何查看存储过程的执行计划
2019-06-28 12:24 by 潇湘隐者, 7385 阅读, 收藏,
摘要:
有时候,我们需要查看存储过程的执行计划,那么我们有什么方式获取存储过程的历史执行计划或当前的执行计划呢? 下面总结一下获取存储过程的执行计划的方法。 1:我们可以通过下面脚本查看存储过程的执行计划,但是有时候,你会发现这种方式并不总是能够获取到存储过程的执行计划。 SELECT d.object_id , DB_NAME(d.database_id) DB... 阅读全文
链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "Cannot start more transactions on this session."
2019-06-20 10:32 by 潇湘隐者, 8821 阅读, 收藏,
摘要:
开发同事反馈一个SQL Server存储过程执行的时候,报“链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "Cannot start more transactions on this session."。这个存储过程,个人做了一个精简和脱敏处理后如下: BEGIN TRY BEGIN TRANSACTION ... 阅读全文
ApexSQL Log中的Redo Script跟原始SQL不一致问题
2019-06-13 12:13 by 潇湘隐者, 997 阅读, 收藏,
摘要:
最近遇到一个误更新数据的问题,使用ApexSQL Log做挖掘事务日志的时候,发现ApexSQL Log生成的Redo Script跟原始SQL是有区别的。它们并不是完全一致的。只是逻辑上等价而已。如下所示,我们做一个测试,如下所示,创建一个表后,并模拟忘记添加条件,出现误删除数据的情况 SELECT * INTO KERRY_TEST FROM SYS.OBJECTS; DELETE F... 阅读全文
SQL Server扩展事件system_health会话总结
2019-05-23 10:41 by 潇湘隐者, 2744 阅读, 收藏,
摘要:
system_health会话概念 我们知道扩展事件(Extended Events)是从SQL Server 2008开始引入的。system_health会话是SQL Server默认包含的扩展事件会话。该会话在SQL Server数据库引擎启动时自动启动,并且运行时不会对性能造成任何明显影响。该会话收集的系统数据可用于帮助对数据库引擎的性能问题进行故障排除。 该会话收集的信息包括:(... 阅读全文
SQL Server 2017的Linked Server配置触发的bug“Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION”
2019-05-20 11:41 by 潇湘隐者, 1830 阅读, 收藏,
摘要:
SQL Server 2017的Linked Server配置触发的bug“Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION” 现象描述: 数据库版本:SQL Server 2017 (RTM-CU14) (KB4484710) - 14.0.3076.1 (X64) 出现大量的Dump File文件,如下所示: ... 阅读全文
SQL Server一个特殊的阻塞案例分析2
2019-05-10 11:08 by 潇湘隐者, 1037 阅读, 收藏,
摘要:
最近发现一个非常奇怪的阻塞问题,如下截图所示(来自监控工具DPA),会话583被会话1036阻塞,而且阻塞发生在tempdb,被阻塞的SQL如下截图所示,会话等待类型为LCK_M_S 因为DPA工具不好截取全部信息,使用下面SQL语句获取了阻塞会话的详细信息如下,来自Microsoft SQL Server Management Studio - Tran... 阅读全文
浙公网安备 33010602011771号