代码改变世界

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

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

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

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

2020-03-28 12:26 by 潇湘隐者, 297 阅读, 收藏, 编辑
摘要:在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 潇湘隐者, 146 阅读, 收藏, 编辑
摘要:从监控工具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 潇湘隐者, 332 阅读, 收藏, 编辑
摘要:如果应用程序遇到了下面错误信息,那么意味着连接池(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 潇湘隐者, 173 阅读, 收藏, 编辑
摘要:今天发现监控的一个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 潇湘隐者, 672 阅读, 收藏, 编辑
摘要:在SQL Server中,如何快速删除大表中的数据呢? 回答这个问题前,我们必须弄清楚上下文环境和以及结合实际、具体的需求,不同场景有不同的应对方法。 1: 整张表的数据全部删除 如果是整张表的数据全部清空、删除,这种场景倒是非常简单,TRUNCATE TABLE肯定是最快的。 反而用DELETE处理的话,就是一个糟糕的策略。 2: 大表中删除一部分数据 对于... 阅读全文

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

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

SQL Server等待事件—PAGEIOLATCH_EX

2020-02-11 15:36 by 潇湘隐者, 204 阅读, 收藏, 编辑
摘要:什么是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 潇湘隐者, 397 阅读, 收藏, 编辑
摘要:开发人员有时候使用类似下面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 潇湘隐者, 507 阅读, 收藏, 编辑
摘要:昨天网上一网友说,由于他同事误将“max server memory”设置为10M后,SQL Server数据库登录不了,当时我简单测试了一下,今天有空就顺手将整个过程整理一下,记录在此。 在SSMS的UI界面设置“max server memory”,即使你设置为10M大小,但是它会“悄悄”默认修改为128M,你用Profile跟踪或者设置后会发现,它偷偷“修改”了你的设置值(改为了128M... 阅读全文

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

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

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

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

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

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

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

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

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

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

YourSQLDba的共享路径备份遭遇重启问题

2019-09-25 14:32 by 潇湘隐者, 104 阅读, 收藏, 编辑
摘要:如果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 潇湘隐者, 221 阅读, 收藏, 编辑
摘要:在SQL Server数据库中,有时候会建立一些Windows认证的账号(域账号),例如,我们公司习惯给开发人员和Support同事开通NT账号权限,如果有离职或负责事宜变更的话,那么要如何正确的删除这些Windows认证账号呢?这篇文章就是来探讨一下如何正确的删除Windows认证账号。如下所示: 下面这种方式,仅仅是删除登录名(login),然而并没有删除用户(User) USE ... 阅读全文

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 潇湘隐者, 350 阅读, 收藏, 编辑
摘要:公司一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 潇湘隐者, 473 阅读, 收藏, 编辑
摘要:写了一个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 潇湘隐者, 371 阅读, 收藏, 编辑
摘要:写这篇文章的时候,还真不知道如何取名,也不知道这个该如何将其归类。这个是同事遇到的一个案例,案例比较复杂,这里抽丝剥茧,仅仅构造一个简单的案例来展现一下这个问题。我们先构造测试数据,如下所示: 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 潇湘隐者, 2776 阅读, 收藏, 编辑
摘要:有时候,我们需要查看存储过程的执行计划,那么我们有什么方式获取存储过程的历史执行计划或当前的执行计划呢? 下面总结一下获取存储过程的执行计划的方法。 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 潇湘隐者, 970 阅读, 收藏, 编辑
摘要:开发同事反馈一个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 潇湘隐者, 346 阅读, 收藏, 编辑
摘要:最近遇到一个误更新数据的问题,使用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 潇湘隐者, 617 阅读, 收藏, 编辑
摘要: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 潇湘隐者, 269 阅读, 收藏, 编辑
摘要: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 潇湘隐者, 329 阅读, 收藏, 编辑
摘要:最近发现一个非常奇怪的阻塞问题,如下截图所示(来自监控工具DPA),会话583被会话1036阻塞,而且阻塞发生在tempdb,被阻塞的SQL如下截图所示,会话等待类型为LCK_M_S 因为DPA工具不好截取全部信息,使用下面SQL语句获取了阻塞会话的详细信息如下,来自Microsoft SQL Server Management Studio - Tran... 阅读全文

SQL Server Sleeping会话占用内存资源浅析?

2019-05-08 23:08 by 潇湘隐者, 750 阅读, 收藏, 编辑
摘要:在SQL Server中,会话的状态有运行(Running)、睡眠(Sleeping)、休眠(Dormant)、Preconnect 等状态,有时候你会在数据库中看到很多会话处于睡眠(Sleeping)状态,那么这些睡眠(Sleeping)状态的会话会消耗CPU、Memory资源吗?如果消耗资源的话,那么sleeping会话具体消耗多少内存资源呢? 另外它会影响数据库性能吗? 首先,处于睡... 阅读全文

SQL Server数据库文件与文件组总结

2019-04-25 13:38 by 潇湘隐者, 589 阅读, 收藏, 编辑
摘要:文件和文件组概念 关于文件与文件组,简单概括如下,详情请参考官方文档“数据库文件和文件组Database Files and Filegroups”或更多相关资料: 数据文件概念: 每个SQL Server数据库至少包含两个作系统文件:一个数据文件(data file)和一个日志文件(log file)。数据文件包含数据和对象,例如表、索引、存储过程和视图....。日志文件包含恢复... 阅读全文

SQL Server使用sp_rename重命名约束注意事项

2019-04-18 16:12 by 潇湘隐者, 1022 阅读, 收藏, 编辑
摘要:在SQL Server中,我们可以使用sp_name这个系统存储过程重命名数据库中对象的名称。 此对象可以是表、 索引、 列、 别名,约束等数据类型(具体可以参考官方文档)。上周在使用这个函数重构数据库中约束的时候,遇到了下面错误,如下所示: USE AdventureWorks2014; GO sp_rename 'ErrorLog.DF_ErrorLog_ErrorTime', 'DF... 阅读全文

LogWriter: Operating system error 21(error not found) encountered

2019-04-15 14:58 by 潇湘隐者, 304 阅读, 收藏, 编辑
摘要:一台老旧的数据库服务器(SQL Server 2005)突然报如下错误,而且数据库处于RECOVERY PENDING ,检查错误日志,发现这个错误是突然出现的。没有任何其它人为误操作导致 Date 2019/4/15 10:57:47 Log SQL Server (Archive #1 - 2019/4/15 11:16:00) Source ... 阅读全文

SQL Server的Linked Server支持使用SEQUENCE吗?

2019-04-11 16:04 by 潇湘隐者, 334 阅读, 收藏, 编辑
摘要:SQL Server的Linked Server支持使用SEQUENCE吗? SQL Server 2012开始支持序列(SEQUENCE),今天遇到有个同事咨询,能否在LINKED SERVER里面调用SEQENCE, 结果我测试发现不行,但是不管官方文档也好,网上相关资料也罢,都没有说支持,也没有说不支持。 例如官方文档NEXT VALUE FOR (Transact-SQL)中明确表... 阅读全文

SQL Server使用sp_spaceused查看表记录存在不准确的情况

2019-04-09 09:10 by 潇湘隐者, 360 阅读, 收藏, 编辑
摘要:在之前写过一篇博客"关系数据库如何快速查询表的记录数",里面介绍了使用sp_spaceused查看表的记录数是否正确的问题,具体如下: 关于问题3:有多个索引的表,是否记录数会存在不一致的情况? 答案:个人测试以及统计来看,暂时发现多个索引的情况下,sys.partitions中的rows记录数都是一致的。暂时没有发现不一致的情况,当然也不排除有特殊情况。 关于问题5: 分区表的... 阅读全文

SQL Server死锁中的会话隔离级别为序列化(Serializable)实验测试

2019-04-03 09:36 by 潇湘隐者, 328 阅读, 收藏, 编辑
摘要:最近在分析SQL Server的死锁时,发现一个比较有意思的现象,发现死锁当中一个会话的隔离级别为序列化(Serializable),这个是让人比较奇怪的地方,我们知道SQL Server数据库的默认隔离级别为已提交读(READ COMMITTED),除非人为设置事务隔离级别(TRANSACTION ISOLATION LEVEL),否则事务隔离级别会使用数据库的默认隔离级别。在分析了死锁相关的存... 阅读全文

SQL Server统计信息偏差影响表联结方式案例浅析

2019-03-31 19:54 by 潇湘隐者, 568 阅读, 收藏, 编辑
摘要:我们知道数据库中的统计信息的准确性是非常重要的。它会影响执行计划。一直想写一篇关于统计信息影响执行计划的相关博客,但是都卡在如何构造一个合适的例子上,所以一直拖着没有写。巧合,最近在生产环境中遇到这么一个案例,下面对案例中的相关信息做了脱敏处理,有些中间步骤也省略了,只关注核心部分SQL。如下所示,同事反馈一个SQL语句执行很慢。 UPDATE bSET b.[Statu... 阅读全文

SQL Server关于predicate、density、selectivity、cardinality名词浅析

2019-03-27 08:45 by 潇湘隐者, 407 阅读, 收藏, 编辑
摘要:在SQL Server中,我们要看懂执行计划和统计信息,我们可能需要深刻理解一些关键词,例如密度(Density)、选择性(Selectivity)、谓词(predicate)、基数(Cardinality)。前阵子,对密度和选择性的概念模糊了,刚好看了Query Tuning Fundamentals: Density, Predicates, Selectivity, and Card... 阅读全文

SQL Server移除事务日志后sys.master_files依然存在记录问题

2019-03-19 15:38 by 潇湘隐者, 296 阅读, 收藏, 编辑
摘要:在SQL Server中移除了事务日志文件后,使用sys.master_files检查时发现,对应的事务日志文件记录信息依然存在sys.master_files里面,只是状态state_desc为OFFLINE。需要经过一段时间,这条记录在这个系统视图才会消失。 DECLARE @db_name NVARCHAR(32);SET @db_name=N'TEST';SELECT f.dat... 阅读全文

阿里云RDS for SQL Server测试吐槽

2019-03-12 12:53 by 潇湘隐者, 1048 阅读, 收藏, 编辑
摘要:最近测试了一下阿里云RDS for SQL Server,有些设计简直就是反人类,让人不得不吐槽一番。 1:控制台创建数据库时,数据库名不能包含大小字母。 如上截图所示,数据库名称不能包含大写字母,好吧,这个限制我认了。 但是使用“高权限账号”通过SSMS客户端连接数据库,可以创建包含大写字母的数据库。这个是完全不一致的行为? 实在不明白要弄成前后矛盾!。最坑爹的是,如果你用S... 阅读全文

SQL Server作业报错特殊案例

2019-03-08 17:15 by 潇湘隐者, 645 阅读, 收藏, 编辑
摘要:一个作业报错,报错信息如下,从错误信息根本看不出为什么出错,手工运行作业又成功了。一时不清楚什么原因导致作业出错。 MessageExecuted as user: NT SERVICE\SQLSERVERAGENT. ...eration. [SQLSTATE 01003] (Message 8153) Mar 6 2019 8:09AM [SQLSTATE 01000] (Mess... 阅读全文

Variable SQLLOGDIR not found

2019-03-01 12:58 by 潇湘隐者, 261 阅读, 收藏, 编辑
摘要:昨天在一数据库(SQL Server 2008 R2 SP3)上部署了一个作业,今天早上收到告警邮件,作业执行报错“Unable to start execution of step 1 (reason: Variable SQLLOGDIR not found). The step failed”,刚开始有点莫名其妙,后面检查发现出错的原因是因为在高级选项(Advanced)里面的output... 阅读全文

SQL Server查看索引重建、重组索引进度

2019-02-25 14:57 by 潇湘隐者, 2937 阅读, 收藏, 编辑
摘要:相信很多SQL Server DBA或开发人员在重建或重组大表索引时,都会相当郁闷,不知道索引重建的进度,这个对于DBA完全是一个黑盒子,对于系统负载非常大的系统或维护窗口较短的系统,你会遇到一些挑战。例如,你创建索引的时候,很多会话被阻塞,你只能取消创建索引的任务。查看这些索引维护操作的进度、预估时间对于我们有较大的意义,需要根据这个做一些决策。下面我们来看看看看如何获取CREATE INDEX... 阅读全文

SQL Server 查找统计信息的采样时间与采样比例

2019-02-18 16:39 by 潇湘隐者, 1032 阅读, 收藏, 编辑
摘要:有时候我们会遇到,由于统计信息不准确导致优化器生成了一个错误的执行计划(或者这样表达:一个较差的执行计划),从而引起了系统性能问题。那么如果我们怀疑这个错误的执行计划是由于统计信息不准确引起的。那么我们如何判断统计信息不准确呢?当然首先得去查看实际执行计划中,统计信息的相关数据是否与实际情况有较大的出入,下面我们抛开这个大命题,仅仅从统计信息层面去查看统计信息的更新时间,统计信息的采样行数、采样比... 阅读全文

SQL Server中是否可以准确获取最后一次索引重建的时间?

2019-02-18 11:03 by 潇湘隐者, 662 阅读, 收藏, 编辑
摘要:在SQL Server中,我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild)的时间? 最后一次索引重组(INDEX REORGANIZE)的时间呢? 答案是我们无法准确的找到索引的创建时间、最后一次索引重组时间,最后一次索引重建的时间。 其实就目前SQL Server的各个版本而言,还没有一个系统表或DMV视图有保存索引创建的时间,索引重建的时间、索引重组的时间。但是有些... 阅读全文

SQL Server一致性错误修复案例总结

2019-01-11 12:07 by 潇湘隐者, 1932 阅读, 收藏, 编辑
摘要:今天遇到了一个关于数据库一致性错误的案例。海外工厂的一台SQL Server 2005(9.00.5069.00 Standard Edition)数据库在做DBCC CHECKDB的时候出现了一致性错误,下面总结一下处理过程。具体的一致性错误信息如下所示: Msg 8992, Level 16, State 1, Line 1 Check Catalog Msg 3853, State ... 阅读全文

There is already an object named '#xxxx' in the database.

2018-12-31 10:23 by 潇湘隐者, 548 阅读, 收藏, 编辑
摘要:这个案例是前几天同事遇到的一个案例,在存储过程中“删除”了一个临时表,然后重新创建这个临时表时遇到“There is already an object named 'xxxx' in the database."这样的错误。下面简单演示一下这个案例(不用存储过程,而是直接用简单的SQL语句重现) CREATE TABLE #temp_test( id INT, name VARCHAR... 阅读全文

SQL Server服务没有自动启动原因案例分析

2018-12-28 11:32 by 潇湘隐者, 4954 阅读, 收藏, 编辑
摘要:这个案例是前两天出现的,一直没有时间总结,25号凌晨4点去处理数据库的故障问题。远程连上公司的局域网,psping检查发现服务器的1433端口不通,数据库连接不上,但是主机又能ping通,登录服务器检查发现SQL Server的SQL Server (MSSQLSERVER) Service 等服务都没有启动.从Zabix检查也发现服务停了, 真是懵了,使用systeminfo命令检查系统的情况,... 阅读全文

Cannot connect to WMI Provider & Invalid class [0x80041010]

2018-12-25 10:42 by 潇湘隐者, 459 阅读, 收藏, 编辑
摘要:数据库服务器(Virtual Machine)所在的Nutanix一台主机由于故障,VM自动切换到另一台主机,切换过程中VM会重新启动,但是早上检查的时候,发现点击SQL Server Configuration Manager进去时报如下错误: ”Cannot connect to WMI provider.You do not have permission or the server i... 阅读全文

Failure sending mail: The user or group name 'xxx\xxxx' is not recognized.Mail will not be resent

2018-12-05 17:03 by 潇湘隐者, 438 阅读, 收藏, 编辑
摘要:一批Reporting Service报表的订阅突然报如下错误: Failure sending mail: The user or group name 'xxx\xxxx' is not recognized.Mail will not be resent. 原因如下,因为开发这批报表的人(也就是报表的创建者)离职了,然后他的NT账号在DC里面被系统管理员删除了。自然就没有权限将订... 阅读全文

如何定位“Operating system error 32(failed to retrieve text for this error. Reason: 15105)”错误中被占用的文件

2018-11-26 16:18 by 潇湘隐者, 545 阅读, 收藏, 编辑
摘要:之前在这篇“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 潇湘隐者, 1088 阅读, 收藏, 编辑
摘要:上周,在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 潇湘隐者, 236 阅读, 收藏, 编辑
摘要:前阵子一数据库服务器的事务日志开始暴增,当时使用下面脚本检查发现该数据库的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 潇湘隐者, 2193 阅读, 收藏, 编辑
摘要:SQL Server的日志传送(log shipping)技术一直比较鸡肋,尤其当SQL Server 推出了Always On技术以后,估计使用日志传送(log shipping)这种技术方案的企业越来越少,但是日志传送也有自己的一些优点,有些特殊场景或业务背景下也有其存在的价值。最近由于特殊业务场景可能需要用到这个技术,所以做了一些测试和验证,比对一些知识做了一下总结、归纳。下面有部分内容... 阅读全文

SQL Server 更新统计信息出现严重错误,应放弃任何可能产生的结果

2018-10-17 15:00 by 潇湘隐者, 698 阅读, 收藏, 编辑
摘要:一台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 潇湘隐者, 2132 阅读, 收藏, 编辑
摘要:在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 潇湘隐者, 577 阅读, 收藏, 编辑
摘要:有个系统,昨天Support人员发布了相关升级脚本后,今天发现系统中有个功能不能正常使用了,直接报超时了(Timeout expired)的错误。定位到相关相关存储过程后,然后在优化分析的过程中,又遇到了执行计划COST “欺骗”我们的这种情况,其实在我这篇博客”SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题“有提及这个问题,但是很多时... 阅读全文

SQL Server中通用数据库角色权限处理

2018-09-28 17:33 by 潇湘隐者, 680 阅读, 收藏, 编辑
摘要:SQL Server中通用数据库角色权限处理 最近和同事在做数据库权限清理的事情,主要是删除一些账号;取消一些账号的较大的权限等,例如,有一些有db_owner权限,我们取消账号的数据库角色db_owner,授予最低要求的相关权限。但是这种工作完全是一个体力活,而且是吃力不讨好,而且推进很慢。另外,为了管理方便和细化,我们又在常用的数据库角色外,新增了6个通用的数据库角色。如下截图所示。 ... 阅读全文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2018-04-21 00:27 by 潇湘隐者, 570 阅读, 收藏, 编辑
摘要:最近发现在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 潇湘隐者, 619 阅读, 收藏, 编辑
摘要:前言: 本文是对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 潇湘隐者, 659 阅读, 收藏, 编辑
摘要:今天遇到一起关于分布式事务错误的案例,如下所示,执行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 潇湘隐者, 13667 阅读, 收藏, 编辑
摘要:在SQL Server中如何查看数据库视图的定义呢? 其实官方文档已经有一个较详细的总结了,这里在官方文档的基础上,我们再深入展开分析一下,例如如何获取系统视图的定义。知其然知其所以然吗。 1:使用SQL Server Management Studio(SSMS) 在“对象资源管理器”中,首先找到对应数据库中需要查看定义的视图,右键单击获取对象的定义脚本。这种方式非常简单。在此略过。... 阅读全文

SQL Server元数据损坏(metadata corruption)修复

2018-04-08 10:14 by 潇湘隐者, 762 阅读, 收藏, 编辑
摘要:在升级一个SQL Server 2000的数据库时,遇到了一致性错误,其中有几个错误是元数据损坏(metadata corruption),特意研究了一下这个案例,因为以前也零零散散的遇到过一些一致性相关错误,但是难得遇到元数据损坏的案例。 如下所示,数据库从SQL Server 2000还原到SQL Server 2008以后,在做一致性检查时,发现有元数据损坏(metadata cor... 阅读全文

单用户模式启动SQL Server实例总结

2018-04-06 14:53 by 潇湘隐者, 7679 阅读, 收藏, 编辑
摘要:在SQL Server的数据库维护过程中,有时候在一些特殊情况下需要在单用户模式下启动SQL Server实例。 下面总结一下单用户模式启动SQL Server的几种方式: 1:命令模式(sqlservr.exe)启动 首先在命令窗口中切换到Binn目录(这个要视SQL Server实际安装路径情况而定,另外,多实例情况下,必须切换到对应路径),如果你对sqlservr.exe命令不熟... 阅读全文

SQL Server等待事件—RESOURCE_SEMAPHORE_QUERY_COMPILE

2018-03-14 00:23 by 潇湘隐者, 1091 阅读, 收藏, 编辑
摘要:等待事件介绍 关于等待事件RESOURCE_SEMAPHORE_QUERY_COMPILE,官方的介绍如下: Occurs when the number of concurrent query compilations reaches a throttling limit. High waits 阅读全文

Azure SQL Virtual Machine报Login failed for user 'NT Service\SqlIaaSExtension'. Reason: Could not find a login matching the name provided

2018-03-12 09:27 by 潇湘隐者, 868 阅读, 收藏, 编辑
摘要:在一台位于HK的Azure SQL Virtual Machine上修改排序规则,重建系统数据库后,监控发现大量的登录失败告警生成,如下所示: DESCRIPTION: Login failed for user 'NT Service\SqlIaaSExtension'. Reason: Could not find a login matching the name provid... 阅读全文

SQL Server使用侦听器IP访问时遇到"The target principal name is incorrect. Cannot generate SSPI context"

2018-02-07 14:45 by 潇湘隐者, 1396 阅读, 收藏, 编辑
摘要:在测试SQL Server 2016 Always On时,在创建侦听器后,在客户端使用SSMS, 可以用侦听器名称访问Always On集群,但是使用侦听器IP访问时遇到"The target principal name is incorrect. Cannot generate SSPI context" TITLE: Connect to Server ------... 阅读全文

MS SQL 事务日志管理小结

2018-01-15 10:43 by 潇湘隐者, 1599 阅读, 收藏, 编辑
摘要:本文是对SQL Server事务日志的总结,文章有一些内容和知识来源于官方文档或一些技术博客,本文对引用部分的出处都有标注。 事务日志介绍 在SQL Server中,事务日志是数据库的重要组件,如果系统出现故障,则可能需要使用事务日志将数据库恢复到一致状态。每个SQL Server数据库都拥有自己的事务日志,用于记录所有事务以及每个事务对数据库所做的修改。那么数据库的哪... 阅读全文

注意Vietnamese_CI_AS排序规则下的特殊字符大小敏感问题

2017-11-03 17:11 by 潇湘隐者, 405 阅读, 收藏, 编辑
摘要:注意Vietnamese_CI_AS排序规则下的特殊字符大小敏感问题 最近,在SQL Server中遇到了Vietnamese_CI_AS排序规则的特殊字符的大小写敏感问题,是的,你没有看错,这句话并没有语病(DBA老司机懂的)。遇到这个特殊情况的时候,我也大跌眼镜,颠覆我的一些常识,OK,闲话少说,我们来演示一下这个特殊场景下出现的特殊情况。 准备测试环境: 服务器排序规则(... 阅读全文

SQL Server 死锁的告警监控

2017-10-24 10:41 by 潇湘隐者, 1633 阅读, 收藏, 编辑
摘要:今天这篇文章总结一下如何监控SQL Server的死锁,其实以前写过MS SQL 监控错误日志的告警信息,这篇文章着重介绍如何监控数据库的死锁,当然这篇文章不分析死锁产生的原因、以及如何解决死锁。死锁(Dead Lock)的错误信息在sys.messages中的message_id为1205,可以使用下面SQL查看。 SELECT * FROM sys.messages WHERE ... 阅读全文

PlateSpin备份服务器时SQL Server的一些活动信息

2017-10-20 10:09 by 潇湘隐者, 303 阅读, 收藏, 编辑
摘要:以前写过一篇文章IO is frozen on database xxx, No user action is required“, 主要是介绍PlateSpin在服务器层面做DR备份时,SQL Server日志里面有"I/O is frozen on database xxxx"以及“I/O was resumed on database xxx"信息,详细信息参考那篇博客,这篇主要是从侧面... 阅读全文

MS SQL xp_instance_regwrite设置注册表疑惑

2017-10-19 14:34 by 潇湘隐者, 744 阅读, 收藏, 编辑
摘要:以前写过一篇博文“MS SQL 日志记录管理”,里面介绍了如何设置SQL Server的错误日志的最大归档数量,如果在SSMS的UI界面设置,可以从“Management”-> "SQL Server Logs" 右键单击选项“Configure" 去设置错误日志的个数,如下所示: 如果里使用脚本设置,如下所示,这个脚本也能实现修改最大错误日志数量的功能 U... 阅读全文

AutoAudit研究学习

2017-10-18 16:10 by 潇湘隐者, 330 阅读, 收藏, 编辑
摘要:AutoAudit介绍 AutoAudit这个是Paul Nielsen写的一个开源的审计跟踪的脚本项目,项目位于https://autoaudit.codeplex.com/上,Paul Nielsen的一篇博客CodeGen to Create Fixed Audit Trail Triggers上也介绍了他创建这个项目的前因后果。目前最新的版本为3.30a,官方文档写着支持SQL S... 阅读全文

The Windows account sa does not exist and cannot be provisioned as a SQL Server system administrator

2017-10-16 23:21 by 潇湘隐者, 1332 阅读, 收藏, 编辑
摘要:今天遇到一个案例,在使用命令修改一个测试服务器(SQL Server 2014标准版)的服务器排序规则时,遇到了下面错误信息 (具体账号信息脱敏处理,随机生成一个账号密码) The Windows account sa does not exist and cannot be provisioned as a SQL Server system administrator c:\SQL... 阅读全文

三大关系数据库字段值超长的一个有趣对比

2017-10-02 09:23 by 潇湘隐者, 722 阅读, 收藏, 编辑
摘要:三大关系数据库字段值超长的一个有趣对比 在开发中,我们可能会遇到插入字段值超长的情况,前阵子遇到这样一个案例,结果一对比后发现一个有趣的现象,如果插入字段值超长,ORACLE、SQL Server、MySQL它们会提示那个字段值超长吗?下面看看实验吧: ORACLE数据库 SQL> create table test(id number(10), name varchar2(12))... 阅读全文

MS SQL作业Schedule的限制注意事项

2017-09-18 11:47 by 潇湘隐者, 576 阅读, 收藏, 编辑
摘要:最近遇到了一个关于MS SQL作业Schedule下有限制的特殊案例,有一个作业,用户要求执行的时间为:9:30,14:30,16:30, 19:00,于是我设置了两个Schedule,其中一个每隔5小时执行一次,时间范围为9:30~ 14:30.另外一个作业的Schedule为每隔150分钟执行,时间范围16:30 ~ 19:00, 结果设置后,用户反馈作业并没有在19:00执行,而是18... 阅读全文

YourSQLDba遭遇.NET Framework Error 6522

2017-09-14 17:09 by 潇湘隐者, 556 阅读, 收藏, 编辑
摘要:一工厂的SQL Server数据库服务器上的YourSQLDba_LogBackups作业做事务日志备份时,突然出现异常,异常的错误信息指向.NET Framework,出现这个问题时,一般我估计是该服务器自动应用了.NET Framework的一些补丁导致,因为以前也碰到过这类错误,于是去检查服务 阅读全文

SQL Server如何定位自定义标量函数被那个SQL调用次数最多浅析

2017-09-08 12:04 by 潇湘隐者, 690 阅读, 收藏, 编辑
摘要:前阵子遇到一个很是棘手的问题,监控系统DPA发现某个自定义标量函数被调用的次数非常高,高到一个离谱的程度。然后在Troubleshooting这个问题的时候,确实遇到了一些问题让我很是纠结,下文是解决问题过程的一点思索和尝试,如果你有更好的思路和解决方法,也请多多指教。 DPA可以监控到该函数每小时被调用的次数,如下截图所示: 那么第一个问题来了。 DPA如何监控获取这个函数每小时执... 阅读全文

批量修改所有服务器的dbmail配置

2017-08-29 11:33 by 潇湘隐者, 327 阅读, 收藏, 编辑
摘要:最近遇到这样一个案例,需要修改所有SQL Server的Database Mail的SMTP,原来的SMTP为10.xxx.xxx.xxx, 现在需要修改为192.168.xxx.xxx, 另外需要规范邮件地址,以前这类邮件ServerName@yoursqldba.com的后缀需要修改为ServerName@xxxx.com(信息做了脱敏处理)。 如果使用SSMS客户端的UI界面去修改的话,... 阅读全文

Multiple Server Query Execution报The result set could not be merged..

2017-08-23 16:48 by 潇湘隐者, 346 阅读, 收藏, 编辑
摘要:在SQL Server中使用Multiple Server Query Execution这个功能做数据库维护或脚本发布时非常方便,昨天由于磁盘空间原因,删除清理了大量的软件和组件,结果导致SSMS客户端出了问题,重装过后,使用Multiple Server Query Execution时,出现了 阅读全文

SQL Server中授予用户查看对象定义的权限

2017-08-07 14:28 by 潇湘隐者, 665 阅读, 收藏, 编辑
摘要:SQL Server中授予用户查看对象定义的权限 在SQL Server中,有时候需要给一些登录名(用户)授予查看所有或部分对象(存储过程、函数、视图、表)的定义权限存。如果是部分存储过程、函数、视图授予查看定义的权限,那么就像下面脚本所示,比较繁琐: GRANT VIEW DEFINITION ON YOUR_PROCEDURE TO USERNAME; GRANT VIE... 阅读全文

The process could not read file xxx due to OS error 53

2017-08-02 08:53 by 潇湘隐者, 397 阅读, 收藏, 编辑
摘要:在不同地域的两个SQL Server服务器上配置了复制(Replication)用于同步数据(生产环境配置有Replication,测试环境也配有Replication),两地通过专线连接起来,这些复制(Replication)已经稳定运行了一两年了, 但是前阵子,测试环境的SQL Server的Replication中突然遇到下面错误: Error messages: The... 阅读全文

SQL Server中如何定位Row Lock锁定哪一行数据

2017-08-01 15:36 by 潇湘隐者, 779 阅读, 收藏, 编辑
摘要:在SQL Server中有时候会使用提示(Hint)强制SQL使用行锁(Row Lock),前两天有个同事咨询了一个问题,如何定位Row Lock具体锁定了哪一行。其实这个问题只适合研究一下,实际意义并不大,因为找到、定位被锁定的行的代价开销较大,而意义却不怎么大,而且使用场景也很少。那么下面我们来探讨、研究一下这个问题吧: 在会话窗口(会话ID=65)下执行下面SQL语句,模拟SQL S... 阅读全文

SQL Server事务遭遇网络异常时的处理机制浅析

2017-07-27 17:03 by 潇湘隐者, 1575 阅读, 收藏, 编辑
摘要:SQL Server数据库中,如果应用程序正在执行一个事务的时候突然遭遇了网络异常,例如网络掉包,网络中断等,那么这个事务会怎么样? SQL Server数据库是通过什么机制来判断处理呢? 估计很多人跟我一样都有不少疑问, 我们下面构造一个测试实验来测试验证一下。如下所示: 步骤1:在客户端连使用S 阅读全文

MS SQL批量生成作业脚本方法介绍总结

2017-07-25 11:21 by 潇湘隐者, 1516 阅读, 收藏, 编辑
摘要:在迁移或升级SQL Server数据库服务器时,很多场景下我们不能还原msdb,所以我们必须手工迁移SQL Server相关作业。如果手工生成每一个作业的脚本话,费时又费力,其实SQL Server中有好几种方法可以批量生成作业脚本的方法, 下面介绍一下。 1:SSMS客户端工具批量生成创建作业脚本 1:在SSMS—>SQL Server Agent下,单击Jobs。 2: 按快捷键F... 阅读全文

The Microsoft Distributed Transaction Coordinator (MS DTC) has cancelled the distributed transaction.

2017-07-07 11:56 by 潇湘隐者, 733 阅读, 收藏, 编辑
摘要:同事反馈一个系统在运行一个存储过程时遇到了下面错误: Msg 1206, Level 18, State 169, Procedure xxxxxx, Line 118The Microsoft Distributed Transaction Coordinator (MS DTC) has cancelled the distributed transaction. 费了九牛二虎之力才定位到... 阅读全文

用户 'XXX\SERVERNAME$' 登录失败。 原因: 找不到与提供的名称匹配的登录名。 [客户端: ]

2017-06-23 15:35 by 潇湘隐者, 1724 阅读, 收藏, 编辑
摘要:一工厂的中控服务器遇到了下面Alert提示,'XXX\SERVERNAME$' XXX表示对应的域名, SERVERNAME$(脱敏处理,SERVERNAME为具体的服务器名称+$),而且如下所示,客户端是本机,研究了一下,才搞清楚具体原因. 日期/时间: 2017/6/20 12:24:51 说明: 用户 'XXX\SERVERNAME$' 登录失败。 原因: 找不到与提... 阅读全文

Troubleshooting SQL Server RESOURCE_SEMAPHORE Waittype Memory Issues

2017-06-23 09:08 by 潇湘隐者, 382 阅读, 收藏, 编辑
摘要:前言: 本文是对博客https://www.mssqltips.com/sqlservertip/2827/troubleshooting-sql-server-resourcesemaphore-waittype-memory-issues/的翻译,本文基本直译,部分地方读起来有点不自然。 如有翻译不对或不好的地方,敬请指出,大家一起学习进步。尊重原创和翻译劳动成果,转载时请注明出处htt... 阅读全文

SQL Server Alert发送告警邮件少了的原因

2017-06-21 17:53 by 潇湘隐者, 615 阅读, 收藏, 编辑
摘要:最近突然发现我们部署在数据库上面的告警(Alert),当错误日志里面出现错误时,并不是每个错误日志都会发送邮件出来。如下所示,设置了告警“SQL Server Severity Event 14” USE [msdb] GO IF NOT EXISTS(SELECT 1 FROM msdb.dbo.syscategories WHERE NAME='DBA_MONITORING' AN... 阅读全文

SQL Server使用sys.master_files计算tempdb大小不正确

2017-06-13 16:36 by 潇湘隐者, 1340 阅读, 收藏, 编辑
摘要:一直习惯使用sys.master_files来统计数据库的大小以及使用情况,但是发现sys.master_files不能准确统计tempdb的数据库大小信息。如下所示: SELECT database_id AS DataBaseId ,DB_NAME(database_id) ... 阅读全文

SQL Server中sys.syslogin中updatedate字段的浅析

2017-06-07 23:09 by 潇湘隐者, 1064 阅读, 收藏, 编辑
摘要:在系统视图sys.syslogins中,有createdate与updatedate两个字段,分别表示创建登录名与更新登录名的日期,如果你用updatedate的值来判断一个登录名的权限是否被修改过,那么你就要跳坑里了。当然sys.sysusers视图里面updatedate字段也不能作为某个use 阅读全文

SQL Server中sp_spaceused统计数据使用的空间总量不正确的原因

2017-06-05 17:05 by 潇湘隐者, 1220 阅读, 收藏, 编辑
摘要:很多时候,我们经常使用sp_spaceused来查看表的空间使用情况,上个月群里有个网友说他使用DELETE删除了数据后,使用sp_spaceused查看,发现该表的分配的空间总量(reserved)与数据使用的空间总量(data)没有变化,当时和他讨论了并分析了一下原因,随手记录了一下这个案例,这个周末刚好有点时间,正好分析整理一下这个案例、分享在这篇文章。如下所示,我们先构造数据,我们的测... 阅读全文

SQL Server中INNER JOIN与子查询IN的性能测试

2017-05-17 17:07 by 潇湘隐者, 9200 阅读, 收藏, 编辑
摘要:这个月碰到几个人问我关于“SQL SERVER中INNER JOIN 与 IN两种写法的性能孰优孰劣?”这个问题。其实这个概括起来就是SQL Server中INNER JOIN与子查询孰优孰劣(IN是子查询的实现方式之一,本篇还是只对比INNER JOIN与子查询IN的性能,如果展开INNER JOIN与子查询性能对比,范围太大了,没法一一详述)。下面这篇文章,我们就INNER JOIN与子查询I... 阅读全文

SQL Server中关于基数估计如何计算预估行数的一些探讨

2017-05-02 08:44 by 潇湘隐者, 1323 阅读, 收藏, 编辑
摘要:关于SQL Server 2014中的基数估计,官方文档Optimizing Your Query Plans with the SQL Server 2014 Cardinality Estimator里有大量细节介绍,但是全部是英文,估计也没有几个人仔细阅读。那么SQL Server 2014中基数估计的预估行数到底是怎么计算的呢? 有哪一些规律呢?我们下面通过一些例子来初略了解一下,下... 阅读全文

SQL Server 2005 sp_send_dbmail出现Internal error at FormatRowset (Reason: Not enough storage is available to complete this operation)

2017-04-01 00:34 by 潇湘隐者, 719 阅读, 收藏, 编辑
摘要:案例环境: 操作系统: Windows 2003 SE 32bit(SP2) 数据库版本:Microsoft SQL Server 2005 - 9.00.5069.00 (Intel X86) Aug 22 2012 16:01:52 Copyright (c) 1988-2005 Microsoft Corporation ... 阅读全文

SQL Server数据库邮件发送异常案例

2017-03-31 09:56 by 潇湘隐者, 3623 阅读, 收藏, 编辑
摘要:最近遇到两起关于SQL Server数据库邮件发送异常的案例,这些问题也有点意思,顺便记录一下。方便以后遇到类似问题的人参考,不要被这些问题弄得抓狂! 案例1:我们一台数据库服务器突然发送邮件都不行了,出现问题时,检查邮件发送记录,你会发现发送状态都是failed。 SELECT * FROM msdb.dbo.sysmail_faileditems SELECT * FROM ms... 阅读全文

SQL Server如何用触发器捕获DML操作的会话信息

2017-03-20 15:51 by 潇湘隐者, 1282 阅读, 收藏, 编辑
摘要:需求背景 上周遇到了这样一个需求,维护人员发现一个表的数据经常被修改,由于历史原因;文档缺少;以及维护人员的经常变更,导致他们对系统也业务也不完全熟悉,他们也不完全清楚哪些系统和应用程序会对这个表的数据进行操作。现在他们想找出有哪些服务器,哪些应用程序会对这个表进行INSERT、UPDATE操作。那么问题来了,怎么去解决这个问题呢? 解决方案 由于数据库版本是标准版,我们选择了... 阅读全文

The server principal "sa" is not able to access the database "xxxx" under the current security context

2017-03-07 17:30 by 潇湘隐者, 2282 阅读, 收藏, 编辑
摘要:在SQL Server服务器上一个作业执行时,遇到下面错误信息: Message: Executed as user: dbo. The server principal "sa" is not able to access the database "xxxx" under the current 阅读全文

Reporting Service 2008 “报表服务器数据库内出错。此错误可能是因连接失败、超时或数据库中磁盘空间不足而导致的”

2017-03-02 12:23 by 潇湘隐者, 2140 阅读, 收藏, 编辑
摘要:今天遇到了两个关于Reporting Service的问题, 出现问题的环境为Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) 。具体情况请见下面描述。 1:在修改报表的订阅后,保存时出现下面错误: 提示:报表服务器数据库内出错。此错误可能是因连接失败、超时或数据库中磁盘空间不足而导致的。 (rsReportServerDataba... 阅读全文

SQL Agent Job 报“Access to the remote server is denied because the current security context is not trusted”

2017-02-24 11:41 by 潇湘隐者, 716 阅读, 收藏, 编辑
摘要:SQL Server 2005(Microsoft SQL Server 2005 - 9.00.5000.00)下的一个作业执行一个存储过程,存储过程中动态SQL语句使用链接服务器(Linked Servers),从另外一台SQL Server服务器获取数据。但是执行时报“Access to the remote server is denied because the current secu... 阅读全文

SQL Server如何用SQL实现一批字符串的全部组合

2017-02-21 15:03 by 潇湘隐者, 2443 阅读, 收藏, 编辑
摘要:在SQL Server中,如何用SQL去实现得到一批字符串的全部组合呢?这个是同事在实际需求当中遇到的一个问题,他的具体需求如下所示: 传入参数格式为'1,2,3,224,15,6' 'A,BC,GHT,TTY,B,E' 输出的内容为分割后字符串的所有非排列组合 !-阶乘,如!=5××××=120 (M!/(N!*((M-N)!))) 公式描述:组合数公式是从m个不同元... 阅读全文

Windows服务器防火墙配置规范

2017-02-18 11:12 by 潇湘隐者, 1880 阅读, 收藏, 编辑
摘要:本文属于一篇内部规范文档,整理的初衷是为了规范、统一集团的Windows服务器(仅仅SQL Server数据库服务器)防火墙设置,仅仅供内部其它同事设置Windows防火墙时作为参考的文档资料。如有不足,敬请指正。后续将不断完善、整理该文档。文档里面部分内容直接摘抄自MSDN,敬请知晓! 文档类型 Windows服务器防火墙配置规范 创建日期 2017-02-06 ... 阅读全文

The concurrent snapshot for publication 'xxx' is not available because it has not been fully generated or the Log Reader Agent is not running to activate it

2017-02-15 17:14 by 潇湘隐者, 1208 阅读, 收藏, 编辑
摘要:在两台测试服务器部署了复制(发布订阅)后,发现订阅的表一直没有同步过来。重新生成过snapshot ,也重新初始化过订阅,都不能同步数据,后面检查Distributor To Subscriber History, 发现有如下日志信息: The concurrent snapshot for publication 'RPL_PUB_Tecdb' is not available because ... 阅读全文

Could not update the distribution database subscription table. The subscription status could not be changed.

2017-02-09 14:50 by 潇湘隐者, 634 阅读, 收藏, 编辑
摘要:在一个测试服务器删除发布(Publication)时遇到下面错误,具体如下所示 标题: Microsoft SQL Server Management Studio ------------------------------ Could not delete publication 'RPL_GES_MIS_QCSDB'. ------------------------------ 其他信... 阅读全文

SQL Server如何固定执行计划

2017-01-18 11:10 by 潇湘隐者, 3223 阅读, 收藏, 编辑
摘要:SQL Server 其实从SQL Server 2005开始,也提供了类似ORACLE中固定执行计划的功能,只是好像很少人使用这个功能。当然在SQL Server中不叫"固定执行计划"这个概念,而是叫"执行计划指南"(Plan Guide 很多翻译是计划指南,个人觉得执行计划指南稍好一些)。当然两者虽然概念与命名不同,实质上它们所说的是相同的事情,当然商业包装是很常见的事情。个人还是觉得“... 阅读全文

为什么你SQL Server的数据库文件的Date modified没有变化呢?

2017-01-05 12:17 by 潇湘隐者, 1250 阅读, 收藏, 编辑
摘要:在SQL Server数据库中,数据文件与事务日志文件的修改日期(Date Modified)是会变化的,但是有时候你会发现你的数据文件或日志文件的修改日期(Date Modified)几个月甚至是半年以上都没有变化了,如下截图所示: 为什么呢?不会是什么bug吧? 相信很多人都会有这样的反应。下面我们通过实验来看看数据库的数据文件与事务日志文件在什么情况或条件下, 修改日期(Date ... 阅读全文

SQL Server中SELECT会真的阻塞SELECT吗?

2017-01-04 23:06 by 潇湘隐者, 2626 阅读, 收藏, 编辑
摘要:在SQL Server中,我们知道一个SELECT语句执行过程中只会申请一些意向共享锁(IS) 与共享锁(S), 例如我使用SQL Profile跟踪会话86执行SELECT * FROM dbo.TEST WHERE OBJECT_ID =1 这个查询语句,其申请、释放的锁资源的过程如下所示: 而且从最常见的锁模式的兼容性表,我们可以看到IS锁与S锁都是兼容的,也就是说SELECT... 阅读全文

基于令牌的服务器访问验证失败,出现基础结构错误。请检查以前的错误

2016-12-28 23:31 by 潇湘隐者, 3569 阅读, 收藏, 编辑
摘要:一数据库服务器(SQL Server 2014)上的一个作业执行报错,具体错误信息如下: Executed as user: NT SERVICE\SQLSERVERAGENT. 用户 'xxxx\xxxxx$' 登录失败。 [SQLSTATE 28000] (Error 18456). The step failed. 其中用户 'xxxx\xxxxx$',反斜杠前面是域名,后面为... 阅读全文

VMware中CPU分配不合理以及License限制引起的SQL Scheduler不能用于查询处理

2016-11-25 11:48 by 潇湘隐者, 1283 阅读, 收藏, 编辑
摘要:有一台SQL Server(SQL Server 2014 标准版)服务器中的scheduler_count与cpu_count不一致,如下截图所示: SELECT cpu_count , scheduler_count FROM sys.dm_os_sys_info; SQL Server中Scheduler数量应该与逻辑CPU的核数一致,而sys.dm_os_sy... 阅读全文

backup log is terminating abnormally because for write on file failed: 112(error not found)

2016-11-24 11:16 by 潇湘隐者, 350 阅读, 收藏, 编辑
摘要:昨天遇到一个案例,YourSQLDba做事务日志备份时失败,检查YourSQLDba输出的错误信息如下: yMaint.backups backup log [gewem] to disk = 'M:\DB_BACKUP\LOG_BACKUP\xxxx_[2016-11-22_01h11m05_Tue]_logs.TRN' with noInit, checksum, name = '... 阅读全文

DBCC CHECKDB 遭遇Operating system error 112(failed to retrieve text for this error. Reason: 15105) encountered

2016-11-22 11:56 by 潇湘隐者, 729 阅读, 收藏, 编辑
摘要:我们一个SQL Server服务器在执行YourSQLDBa的作业YourSQLDba_FullBackups_And_Maintenance时遇到了错误: Exec YourSQLDba.Maint.ShowHistoryErrors @JobNo = 1227 yMaint.IntegrityTesting DBCC checkDb('xxxx') In case of non-com... 阅读全文

SQL Server 如何通过SQL语句定位SSRS中的具体报表

2016-11-22 00:15 by 潇湘隐者, 1484 阅读, 收藏, 编辑
摘要:在一些IT技术人员的推广、简单培训后,公司很多部门都有一些非IT技术人员参与开发各自需求的Reporting Service报表。原因很简单,罗列出来的原因大概有这样一些: IT部门的考量: 1:IT部门这边工作量很大,跟进各个项目都力不从心。不想腾出精力和时间来解决各个部门层出不穷的报表需求。 2:IT技术人员可能对各个部门的业务的理解和那些精通业务的员工有一定的差距。业务人员才是真正... 阅读全文

SQL Server 作业Schedule异常案例分析

2016-11-16 14:36 by 潇湘隐者, 5 阅读, 收藏, 编辑
该文被密码保护。

MS SQL巡检系列——检查外键字段是否缺少索引

2016-11-08 11:37 by 潇湘隐者, 909 阅读, 收藏, 编辑
摘要:前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的。一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方面,网上关于MS SQL巡检方面的资料好像也不是特别多。写这个系列只是一个分享,自己的初衷是一个知识梳理、总结提炼过程,有些知识和脚本也不是原创,文章很多地方融入了自己的一些想法和见解的,不足和肤浅之... 阅读全文

MS SQL巡检系列——检查重复索引

2016-11-01 15:26 by 潇湘隐者, 1076 阅读, 收藏, 编辑
摘要:前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的。一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方面,网上关于MS SQL巡检方面的资料好像也不是特别多。写这个系列只是一个分享,自己的初衷是一个知识梳理、总结提炼过程,有些知识和脚本也不是原创,文章很多地方也是融入了自己的一些想法和见解的,不足和肤... 阅读全文

SQL Server 2014 Database Mail重复发送邮件特殊案例

2016-10-31 12:02 by 潇湘隐者, 1277 阅读, 收藏, 编辑
摘要:在一数据库服务器(Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64))发现有个作业调用Database Mail发送邮件时,有时候出现同样的邮件发送两封的情况,经过详细检查,排除了该作业里面业务逻辑有问题的情况,确实存在重复发送邮件的情况, 检查Database Mail日志,发现在0:00~0.03报“The mail ... 阅读全文

SQL SERVER 数据库各版本功能对比

2016-10-26 17:40 by 潇湘隐者, 2726 阅读, 收藏, 编辑
摘要:以前写了篇SQL SERVER 2008数据库各版本功能对比,官网提供的那个功能确实很好很强大,后面发现那个链接失效了。今天又遇到要对比SQL Server 2014数据库版本功能需求,搜索找了好久才找到,索性将这些链接收录在此,以备不时之需。 SQL Server 2008https://technet.microsoft.com/zh-cn/subscriptions/cc645993(v... 阅读全文

SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析

2016-10-20 17:44 by 潇湘隐者, 7915 阅读, 收藏, 编辑
摘要:今天遇到一个很奇怪的情况,发现一个会话异常,这个会话只是在执行一个简单的存储过程,里面使用了链接服务器(Linked Server)查询另外一台服务器数据(存储过程里面没有任何显性事务、UPDATE、DELETE操作,只有几个简单的SELECT查询,其中有两个查询使用了链接服务器Linked Server,由于生产环境,不好贴出SQL语句),在DPA监控工具里面,发现该会话引起了非常长的OLEDB... 阅读全文

Cannot execute as the database principal because the principal "guest" does not exist, this type of principal cannot be impersonated, or you do not have permission.

2016-10-17 11:51 by 潇湘隐者, 1131 阅读, 收藏, 编辑
摘要:今天遇到这样一个问题:一个系统的作业需要给系统Support人员开放SQL Agent下作业的查看、执行权限。数据库版本为SQL Server 2014 SP2,给这个系统Support人员的NT账号授予msdb数据库下面权限后: 该系统Support人员反馈在双击查看该作业时报下面错误。于是我测试,验证了一下这个权限是否OK, 我测试的时候使用的是Microsoft SQL ... 阅读全文

IO is frozen on database xxx, No user action is required

2016-09-23 13:57 by 潇湘隐者, 1752 阅读, 收藏, 编辑
摘要:最近遇到一起关于"I/O is frozen on database xxx. No user action is required. However, if I/O is not resumed promptly, you could cancel the backup."的案例。 出现问题的时候,我去执行一个非常简单的SQL语句,执行时间非常长,检查没有阻塞。正常情况下,应该是几秒就OK。后... 阅读全文

SQL SERVER中隐式转换的一些细节浅析

2016-09-08 15:32 by 潇湘隐者, 3678 阅读, 收藏, 编辑
摘要:其实这是一篇没有技术含量的文章,精通SQL优化的请绕道。这个缘起于在优化一个SQL过程中,同事问了我一个问题,为什么SQL中存在隐式转换,但是执行计划没有变? 我思索了一下,觉得这个问题也有点意思,说不定有些对隐式转换了解得不深入的同学都有此疑问,那么下面结合上下文场景做一个细节方面的解答。 我们一个系统中使用了ORMLite框架,粗心的开发人员弄出了不少下面这样的SQL语句,都存在隐式转换问题,... 阅读全文

VIEW SERVER STATE permission was denied on object 'server', database 'master'

2016-08-30 23:01 by 潇湘隐者, 1745 阅读, 收藏, 编辑
摘要:今天一同事反馈使用SQL Server 2012 Management Studio连接SQL Server 2014后,选择数据库中某个表,然后单击右键时,就会遇到下面错误: 这个错误初看以为是权限问题,后面验证、检查、查找资料过后,发现这个是一个bug来的,需要升级或应用SQL Server Management Studio工具的补丁来解决这个问题。下面链接有描述这个问题的相关... 阅读全文

SQL Server 使用OPENROWSET访问ORACLE遇到的各种坑总结

2016-08-18 17:40 by 潇湘隐者, 3609 阅读, 收藏, 编辑
摘要:在SQL Server中使用OPENROWSET访问ORACLE数据库时,你可能会遇到各种坑,下面一一梳理一下你会遇到的一些坑。 1:数据库没有开启"Ad Hoc Distributed Queries"选项,那么你就会遇到下面坑。 SELECT TOP 10 * FROM OPENROWSET('OraOLEDB.Oracle', 'ESCM_134';'test';'test', '... 阅读全文

Remote table-valued function calls are not allowed

2016-08-18 11:29 by 潇湘隐者, 755 阅读, 收藏, 编辑
摘要:在SQL Server中,在链接服务器中调用表值函数(table-valued function)时,会遇到下面错误: SELECT * FROM LNK_TEST.TEST.DBO.TEST(12) 消息 4122,级别 16,状态 1,第 1 行 Remote table-valued function calls are not allowed. 以前几乎没有在链接服务器(Lin... 阅读全文

DBCC SHRINKDATABASE xxxx was skipped because the file does not have enough free

2016-08-16 17:57 by 潇湘隐者, 2957 阅读, 收藏, 编辑
摘要:假设你创建一个数据库时,指定其初始化大小(SIZE )非常大。例如,如下测试案例所示 USE [master]GO CREATE DATABASE [TEST] ON PRIMARY ( NAME = N'TEST_Data', FILENAME = N'D:\SQL_DATA\TEST_Data.mdf' , SIZE = 11527027KB , MAXSIZE = UNLIMITE... 阅读全文

SQL Server 连接超时案例一则

2016-07-25 10:37 by 潇湘隐者, 8741 阅读, 收藏, 编辑
摘要:上周六,一工厂系统管理员反馈一数据库连接不上,SSMS连接数据库报“连接超时时间已到。在尝试使用预登录握手确认时超过了此超时时间.......”, 如下截图所示: 另外远程连接也连接不上,系统管理员只能通过vSphere Client连接到这台服务器,我这边也无法远程登录检查具体情况,ping 这台服务器发现网络正常,没有丢包或时延严重情况,那我就在Linux上使用nmap扫描了... 阅读全文

backup, file manipulation operations (such as ALTER DATABASE ADD FILE) and encryption changes on a database must be serialized.

2016-07-05 22:43 by 潇湘隐者, 1188 阅读, 收藏, 编辑
摘要:昨天在检查YourSQLDba备份时,发现有台数据库做备份时出现了下面错误信息,如下所示: yMaint.ShrinkLog Log Shrink -- ========================================================================-- Shrink of log file E:\SQL_LOG\xxxx_log.l... 阅读全文

YourSQLDba设置共享路径备份

2016-07-04 23:18 by 潇湘隐者, 333 阅读, 收藏, 编辑
摘要:YourSQLDba可以将数据库备份到网络路径(共享路径),这个也是非常灵活的一个功能,以前一直没有使用过这个功能,最近由于一个需求,于是我测试了一下YourSQLDba备份到网络路径,中间遇到了一些问题,遂整理如下。 测试环境: 操作系统: Windows Server Standard 2012 数据库版本: SQL SERVER 2014 1:设置共享路径权限 ... 阅读全文

SQL Server删除distribution数据库二

2016-06-23 13:40 by 潇湘隐者, 1092 阅读, 收藏, 编辑
摘要:以前总结过一遍博文SQL Server删除distribution数据库,里面介绍了如何删除distribution数据库。今天介绍一个删除distribution的特殊案例, 在这之前,我不知道这个服务器上的Replication被如何折腾过,在SSMS管理界面的Local Publications和Local Subscriptions里面已经看不到任何关于发布、订阅相关的内容... 阅读全文

SQL Server 关于列的权限控制

2016-06-13 16:07 by 潇湘隐者, 4613 阅读, 收藏, 编辑
摘要:在SQL SERVER中列权限(Column Permissions)其实真没有什么好说的,但是好多人对这个都不甚了解,已经被人问了几次了,所以还是在这里介绍一下,很多人都会问,我能否单独对表的某列授权给某个用户? 答案是可以,我们可以对表中的列授予SELECT、UPDATE权限,我们结合下面的简单案例来阐述一下可能效果更好。 案例1: 在AdventureWorks2014中,登... 阅读全文

YourSQLDba版本升级总结

2016-06-12 23:29 by 潇湘隐者, 436 阅读, 收藏, 编辑
摘要:在使用YourSQLDba做数据库备份、维护时,像其它软件一样,版本升级是不可避免的。因为YourSQLDba一直在不停更新版本、扩展功能。下面介绍一下升级YourSQLDba时的具体步骤和一些注意事项。下面案例,YourSQLDba原版本为YourSQLDba version: 5.0.2 2012-06-12,升级到YourSQLDba 6.2.5.1。 步骤1: 首先查看服务器对... 阅读全文

TCP Provider The semaphore timeout period has expired

2016-06-03 12:09 by 潇湘隐者, 4512 阅读, 收藏, 编辑
摘要:我们一数据库服务器上有个作业最近几天偶尔会遇到下面错误(敏感信息已做处理),主要是报“TCP Provider: The semaphore timeout period has expired. [SQLSTATE 07008] (Error 121) OLE DB provider "SQLNCLI" for linked server "(null)" returned messa... 阅读全文

SQL SERVER 中如何用脚本管理作业

2016-06-03 10:32 by 潇湘隐者, 1724 阅读, 收藏, 编辑
摘要:在SQL SERVER中用脚本管理作业,在绝大部分场景下,脚本都比UI界面管理作业要高效、简洁。打个简单的比方,如果你要查看作业的运行时长,如果用UI界面查看,100个作业,你就得在历史记录里面至少查看一百次甚至更多,还要记录、统计作业各个步骤的执行时间。而用脚本,一个查询就OK了。这篇文章分享一些我在数据库管理过程中积累的一些常用脚本。 如有不足或需要完善的地方,也请多多指教。 1:... 阅读全文

Unable to determine if the owner (Domain\UserName) of job JOB_NAME has server access

2016-06-02 09:59 by 潇湘隐者, 1801 阅读, 收藏, 编辑
摘要:早上巡检的的时候,发现一数据库的作业报如下错误(作业名等敏感信息已经替换),该作业的OWNER为一个域账号: JOB RUN: 'JOB_NAME' was run on 2016-6-1 at 7:00:00 DURATION: 0 hours, 0 minutes, 1 seconds STATUS: Failed MESSAGES: The job failed. Unable to det... 阅读全文

MS SQL巡检系列——检查数据库上一次DBCC CHECKDB的时间

2016-05-13 15:57 by 潇湘隐者, 1828 阅读, 收藏, 编辑
摘要:DBCC CHECKDB检查指定数据库中的所有对象的逻辑和物理完整性,具体请参考MSDN文档。我们必须定期对数据库做完整性检查(DBCC CHECKDB),以便能及时发现一些数据库损坏(Corruption)的情况。如果你的数据库长时间没有做DBCC CHECKDB,这样是做是不合理,并且很危险的。那么我们怎么检查数据库上一次做DBCC CHECKDB的时间呢? 可以通过DBCC DBINFO来获... 阅读全文

查看数据库表的数据量和SIZE大小的脚本修正

2016-05-12 14:31 by 潇湘隐者, 1301 阅读, 收藏, 编辑
摘要:在使用桦仔的分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)的脚本时,遇到下面一些错误 这个是因为这些表的Schema是Maint,而不是默认的dbo,造成下面这段SQL在执行EXEC sp_spaceused @tablename时出现 Msg 15009, Level 16, State 1, Procedure sp_spaceused, Line 75 ... 阅读全文

SQL SERVER 2014 Agent服务异常停止案例

2016-04-26 11:10 by 潇湘隐者, 2788 阅读, 收藏, 编辑
摘要:生产环境一数据库服务器(SQL Server 2014)的Agent服务突然停掉了,检查了错误日志,发现在"SQL Server Agent"里面没有"SQLServerAgent terminated (normally)"的信息,只有如下错误信息 根据作业运行的日志信息,以及上面错误信息,可以判断SQL SERVER Agent服务应该在2016-04-24 9:20: PM(21... 阅读全文

SSRS 2008 ReportServerTempDB增长异常分析

2016-04-20 23:59 by 潇湘隐者, 1646 阅读, 收藏, 编辑
摘要:这两天收到一SQL 2008 R2数据库服务器的磁盘空间告警,在检查过程中发现ReportServerTempDB已经暴增到60多GB,其中数据文件接近60G,日志文件9G大小左右。如下截图所示 我们知道ReportServerTempDB是SSRS使用的临时数据库。这个数据库负责存储中间处理结果,例如报表服务器生成的会话和执行数据、缓存报表以及工作表。正常情况下,Report Serv... 阅读全文

SQL性能优化:如何定位网络性能问题

2016-04-13 12:09 by 潇湘隐者, 6291 阅读, 收藏, 编辑
摘要:一同事跟我反馈他遇到了一个SQL性能问题,他说全表只有69条记录,客户端执行耗费了两分多钟,这不科学呀。要我分析一下原因并解决。我按照类似表结构,构造了一个案例,测试截图如下所示 这个表有13800KB(也就是13M多大小),因为该表将图片保存到数据库(Item_Photo字段为iamge类型),这个是历史原因,暂且不喷这种的设计。看来这个SQL执行时间长的性能问题不在于IO和SQL本身... 阅读全文

SQL SERVER导出特殊格式的平面文件

2016-03-23 23:21 by 潇湘隐者, 2922 阅读, 收藏, 编辑
摘要:有时候我们需要将SQL SERVER的数据一次性导入到ORACLE中,对于数据量大的表。我一般习惯先从SQL SERVER导出特殊格式的平面文件(CSV或TXT),然后用SQL*Loader装载数据到ORACLE数据库。 有时候由于一些特殊数据,我们需要导出一些特殊格式的文件,例如: 1:导出的平面文件,字段分隔符不要用逗号, 而使用其它分隔符,例如 | 或 &等 2:我们需... 阅读全文

SQL Server Replication 中关于视图的点滴

2016-03-19 11:52 by 潇湘隐者, 781 阅读, 收藏, 编辑
摘要:在服务器A数据库TEST新建了一个本地发布(Local Publications)RPL_GES_MIS_TEST,在服务器B数据库RPL_TEST上创建了一个本地订阅(Local Subscriptions),它订阅了了这个发布RPL_GES_MIS_TEST.如下截图所示,本地发布只有DB_OBJECTS 、Location两个表 假设现在有一个需求,我们需要同步一个视图V_DB_O... 阅读全文

SQL Server里面如何检查没有释放的游标

2016-03-14 12:13 by 潇湘隐者, 3524 阅读, 收藏, 编辑
摘要:一直以来对SQL SERVER的游标都不怎么感冒,也很少使用SQL Server里面的游标,前几天有一位网友问如何检查数据库里面没有释放的游标,觉得有点意思,就测试验证了一下,顺便整理于此。 会话1:我们模拟一个应用程序或脚本,在打开游标后,忘记关闭、释放游标。 DECLARE Cursor_Test CURSOR FORSELECT * FROM dbo.TEST;OPEN Cu... 阅读全文

Microsoft SQL Server 2005 Service fails to start

2016-03-09 17:34 by 潇湘隐者, 476 阅读, 收藏, 编辑
摘要:今天碰到一雷死人的事情,在Windows Server 2012 R2上安装SQL SERVER 2005标准版过程中一直遇到“The SQL Server service failed to start。 For more information......",最后下面两个组件无法安装成功。 后面查了一下,原来Microsoft SQL Server 2005在Windows Server... 阅读全文

SQL SERVER普通用户需要什么权限才能执行sp_configure命令

2016-03-08 11:59 by 潇湘隐者, 6291 阅读, 收藏, 编辑
摘要:SQL SERVER普通用户需要什么权限才能执行sp_configure命令呢? 例如如下存储过程所示 CREATE PROCEDURE PRC_TESTASBEGIN exec sp_configure 'show advanced option',1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures', 1;RECONFIGU... 阅读全文

SQL SERVER 临时表的排序问题

2016-01-30 23:13 by 潇湘隐者, 4464 阅读, 收藏, 编辑
摘要:在SQL SERVER 2005/2008中,如果将有序的记录插入临时表,则从临时表查询出来的记录是有序的(不依赖ORDER BY也是有序状态),但是从SQL SERVER 2012开始,即使插入的记录集有序,查询出来的结果变成无序了。需要依赖ORDER BY来或得到一个有序结果。例如下面例子: SELECT * INTO #tables FROM sys.tables ORDER BY n... 阅读全文

SQL SERVER中的OLEDB等待事件

2016-01-30 22:04 by 潇湘隐者, 1675 阅读, 收藏, 编辑
摘要:OLEDB等待事件介绍 OLEDB等待类型是SQL SERVER 数据库中最常见的几种等待类型之一。它意味着某个会话(SPID)通过SQL Server Native Client OLEDB Provider发生了调用请求并等待数据库返回所需的数据。它出现在远程系统(remote system )或网络连接速度不够快,因此调用服务器必须等待要返回结果的情况下。OLEDB等待事件一般是由那些活动造... 阅读全文

SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

2016-01-25 17:41 by 潇湘隐者, 4552 阅读, 收藏, 编辑
摘要:用户定义函数(UDF)分类 SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(Table-Valued Function)。其中表值函数又分为Inline table-valued functions和Multistatement table-valued funct... 阅读全文

Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)

2016-01-20 12:10 by 潇湘隐者, 1182 阅读, 收藏, 编辑
摘要:使用Microsoft SQL SERVER 2014 Management Studio访问Azure SQL Database时,查看存储过程时遇到下面错误信息: TITLE: Microsoft SQL Server Management Studio ------------------------------ Failed to retrieve data for this req... 阅读全文

小心SQL SERVER 2014新特性——基数评估引起一些性能问题

2016-01-10 11:32 by 潇湘隐者, 1362 阅读, 收藏, 编辑
摘要:在前阵子写的一篇博文“SQL SERVER 2014 下IF EXITS 居然引起执行计划变更的案例分享”里介绍了数据库从SQL SERVER 2005升级到 SQL SERVER 2014后,发现一个SQL出现性能问题,当时分析后发现执行计划变了,导致SQL出现了性能问题。但是没有彻底搞清楚为什么出现这种情况。当时看到Actual Number of Rows 与Estimated Nu... 阅读全文

SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值

2016-01-10 00:47 by 潇湘隐者, 905 阅读, 收藏, 编辑
摘要:我们知道SQL SERVER建立链接服务器(Linked Server)可以选择的驱动程序非常多,最近发现使用ODBC 的 Microsoft OLE DB 驱动程序建立的链接服务器(Linked Server), 调用存储过程过程时,参数不能为NULL值。 否则就会报下面错误提示: 对应的英文错误提示为: EXEC xxx.xxx.dbo.Usp_Test NULL,NULL,'ALL... 阅读全文

SQL SERVER CHAR ( integer_expression )各版本返回值差异的案例

2016-01-03 10:45 by 潇湘隐者, 518 阅读, 收藏, 编辑
摘要:我们都知道CHAR(integer_expression)将ASCII代码转换为字符。当integer_expression介于 0 和 255 之间的整数。如果该整数表达式不在此范围内,将返回 NULL 值。这些都是官方资料介绍的。具体参考https://msdn.microsoft.com/zh-cn/library/ms187323(v=sql.120).aspx 但是在我们最近... 阅读全文

SQL Server 2008 R2 升级到 Service Pack 3后Report Builder启动不了

2015-12-30 21:14 by 潇湘隐者, 1411 阅读, 收藏, 编辑
摘要:一同事将测试服务器从SQL Server 2008 R2 SP2升级到了SQL Server 2008 R2 SP3后发现Report Service的报表编辑时启动不了Report Builder,错误信息如下所示: PLATFORM VERSION INFO Windows : 6.1.7601.65536 (Win32NT) Common Lan... 阅读全文

Replication-Replication Distribution Subsystem: agent xxxxxx failed. Column names in each table must be unique

2015-12-21 21:35 by 潇湘隐者, 922 阅读, 收藏, 编辑
摘要:最近遇到一个关于发布订阅(Replication)的奇葩问题,特此记录一下这个案例。我们一SQL SERVER数据库服务器出现大量告警。告警信息如下所示: DESCRIPTION: Replication-Replication Distribution Subsystem: agent xxxxxx failed. Column names in each table must be uni... 阅读全文

SQL SERVER 监控数据文件增长情况

2015-12-19 11:30 by 潇湘隐者, 1281 阅读, 收藏, 编辑
摘要:在项目前期评估数据库的增长情况,然后根据数据库数据量的增长情况来规划存储的分配其实是一件比较麻烦的事情。因为项目没有上线,用什么来评估数据库的数据增长情况呢? 如果手头没有实际的数据,我们只能从表的数量以及预计一天的数据增长情况来预估数据增长量。当然这里猜测的成分较大。这个是非常不靠谱,也是不准确的。当然我们可以监控测试环境的数据库大小的增长情况来评估数据增长情况。我们可以监控数据库大小... 阅读全文

SQL SERVER 2014 下IF EXITS 居然引起执行计划变更的案例分享

2015-12-17 23:20 by 潇湘隐者, 917 阅读, 收藏, 编辑
摘要:这个问题是在SQL SERVER 2005 升级到SQL SERVER 2014的测试过程中一同事发现的。我觉得有点意思,遂稍微修改一下脚本展示出来,本来想构造这样的一个案例来演示,但是畏惧麻烦,遂直接贴上原表,希望Leader不要叼我(当然个人觉得真没啥,两张表名而已,真泄露不了啥信息)。 脚本如下所示,非常简单的一段SQL语句,我将其分为SQL1、SQL2、SQL3. 其实SQ... 阅读全文

Failed to create AppDomain 'xxx'. Exception has been Failed to create AppDomain

2015-12-10 11:33 by 潇湘隐者, 1222 阅读, 收藏, 编辑
摘要:一服务器上的数据库全部被置于紧急模式(EMERGENCY),在错误日志里面能看到大量下面的错误 Failed to create AppDomain "YourSQLDba.dbo[runtime].79". Exception has been thrown by the target of an invocation. Failed to create AppDomain "YourSQLDb... 阅读全文

CREATE FILE encountered operating system error 5(Access is denied.)

2015-12-08 16:32 by 潇湘隐者, 2972 阅读, 收藏, 编辑
摘要:这篇博文主要演示”CREATE FILE encountered operating system error 5(Access is denied.)“错误如出现的原因(当然只是导致这个错误出现的一种场景而已)和如何解决这个问题以及一些不解的迷惑。 实验环境: 操作系统版本: Windows Server 2012 SP2 数据库的版本:Micr... 阅读全文

SQLBackupAndFTP The server principal "NT AUTHORITY\SYSTEM" is not able to access the database "xxxx"

2015-12-07 15:36 by 潇湘隐者, 1152 阅读, 收藏, 编辑
摘要:Windows server 2012中使用SQLBackupAndFTP备份数据库时遇到一个错误: ERROR: The server principal "NT AUTHORITY\SYSTEM" is not able to access the database "xxxx" under the current security context. BACKUP DATABASE is t... 阅读全文

SQL SERVER导入数据到ORACLE的方法总结

2015-11-26 15:11 by 潇湘隐者, 21414 阅读, 收藏, 编辑
摘要:我们偶尔会有将数据从SQL SERVER导入到ORACLE当中的这种需求,那么这种跨数据库导数有那些方法呢?这些方法又有那些利弊呢? 下面比较肤浅的总结了一些可行的方法。 1:生成SQL脚本然后去ORACLE数据库执行。 CREATE TABLE TEST( ID INT , NAME VARCHAR(12) ) INSERT INTO dbo.TEST SELECT 100... 阅读全文

SQL SERVER如何通过SQL语句获服务器硬件和系统信息

2015-11-23 14:07 by 潇湘隐者, 2988 阅读, 收藏, 编辑
摘要:在SQL SERVER中如何通过SQL语句获取服务器硬件和系统信息呢?下面介绍一下如何通过SQL语句获取处理器(CPU)、内存(Memory)、磁盘(Disk)以及操作系统相关信息。如有不足和遗漏,敬请补充。谢谢! 一:查看数据库服务器CPU的信息 ---SQL 1:获取数据库服务器的CPU型号 EXEC xp_instance_regread 'HKEY_LOCAL_MACHI... 阅读全文

SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨

2015-11-01 11:55 by 潇湘隐者, 3577 阅读, 收藏, 编辑
摘要:SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile)。那么引发存储过程重编译的条件有哪一些呢?下面罗列了一些导致重编译(recompile)的条件: - 对查询所引用的表或视图进行更改(ALTER TABLE 和 ALTER VIEW)。 - 对执行计划所使用的任何索... 阅读全文

SQL SERVER 属性OWNER不可用于数据库xxx。该对象可能没有此属性,也可能是访问权限不足而无法检索。

2015-10-30 21:21 by 潇湘隐者, 2825 阅读, 收藏, 编辑
摘要:今天遇到一个案例:右键单击数据库的属性时出现下面错误提示: 属性Owner不可用于数据库xxx,该对象可能没有此属性,也可能是访问权限不足而无法检索。 使用脚本查看该数据库的Owner时发现Owner为null。具体原因是因为该数据库的Owner是一个系统管理员的账号,由于该同事离职,接手的系统管理员将该账号清除了,所以出现上面错误.此时用下面脚本查询,就会发现该O... 阅读全文

SQL Server 2008 master 数据库损坏解决总结

2015-10-28 00:00 by 潇湘隐者, 10365 阅读, 收藏, 编辑
摘要:SQL Server 2008 master数据库损坏后,SQL SERVER服务启动失败,查看错误日志,你会看到下面错误信息: 2015-10-27 10:15:21.01 spid6s Starting up database 'master'. 2015-10-27 10:15:23.01 spid6s 错误: 9003,严重性: 20,状态: 1。 2015-1... 阅读全文

在执行xp_cmdshell的过程中出错,调用'LogonUserW'失败,错误代码:'1909'

2015-10-23 23:55 by 潇湘隐者, 1440 阅读, 收藏, 编辑
摘要:在上篇文章Could not obtain information about Windows NT group/user 'xxxx\xxxx', error code 0x5里面,我介绍了SQL Server服务启动账号域账号锁定的情况下,有些Job Owner为域账号的作业执行会报错,其实在域账号被锁定的情况下(该域账号是SQL Server服务的启动账号),执行xp_cmdshe... 阅读全文

Could not obtain information about Windows NT group/user 'xxxx\xxxx', error code 0x5

2015-10-23 00:13 by 潇湘隐者, 1136 阅读, 收藏, 编辑
摘要:案例描述 昨晚踢球回来,接到电话说一个系统的几个比较重要作业出错,导致系统数据有些问题。让我赶紧检查看看。检查作业日志时发现,作业报如下错误(关键信息用xxx替换) The job failed. Unable to determine if the owner (xxxx\xxxx) of job xxxxx has server access (reason: Could not ... 阅读全文

Database 'xxxx' is being recovered. Waiting until recovery is finished.

2015-10-19 22:21 by 潇湘隐者, 1731 阅读, 收藏, 编辑
摘要:巡检发现一个SQL SERVER Express 2005数据库备份时出现下面错误: Database 'xxxx' is being recovered. Waiting until recovery is finished. 出现这个错误有点让人纳闷,有很多情况可能出现这个错误,例如,系统出现异常重启,或数据库服务被人为突然重启,数据库服务启动后,数据库正在恢复中,此时备份就会出现这种错误... 阅读全文

SQL SERVER 2012启动失败 because upgrade step 'SSIS_hotfix_install.sql' 失败

2015-10-14 16:45 by 潇湘隐者, 1610 阅读, 收藏, 编辑
摘要:有台数据库服务器(开发服务器),开发人员邮件告诉我,SSMS连接不了这台服务器,远程登录后,发现SQL SERVER的服务停止了,启动服务时报错,服务启动不了。检查错误日志发现下面一些信息 2015-10-14 13:47:09.98 spid17s The Service Broker endpoint is in disabled or stopped state.2015-10-... 阅读全文

DBCC CheckDB遇到a database snapshot could not be created

2015-10-07 15:16 by 潇湘隐者, 507 阅读, 收藏, 编辑
摘要:在备份一个客户的数据库时(数据库版本为SQL 2005 Express版本),做DBCC CHECKDB时遇到了下面错误信息: dbcc checkdb('DB_NAME'); 消息 5030,级别 16,状态 12,第 1 行 The database could not be exclusively locked to perform the operation. 消息 7926,级别 1... 阅读全文

化繁为简——分解复杂的SQL语句

2015-10-07 00:12 by 潇湘隐者, 8671 阅读, 收藏, 编辑
摘要:今天同事咨询一个SQL语句,如下所示,SQL语句本身并不复杂,但是执行效率非常糟糕,糟糕到一塌糊涂(执行计划也是相当复杂)。如果查询条件中没有NOT EXISTS部分,倒是不要一秒就能查询出来。 SELECT * FROM dbo.UVW_PDATest a WITH(NOLOCK)WHERE Remark='前纺' AND Operation_Name='粗纱' AND One_Status... 阅读全文

SQL SERVER中什么情况会导致索引查找变成索引扫描

2015-09-14 09:12 by 潇湘隐者, 8372 阅读, 收藏, 编辑
摘要:SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方面结合上下文具体场景做了下测试、总结、归纳。 1:隐式转换会导致执行计划从索引查找(Index Seek)变为索引扫描(Index Scan) Implicit Conversion will cause index scan instead of ind... 阅读全文

Cannot set a credential for principal 'sa'. (Microsoft SQL Server,错误: 15535)

2015-08-27 10:46 by 潇湘隐者, 1358 阅读, 收藏, 编辑
摘要:在SQL SERVER 2008上上禁用sa登录时,遇到下面错误:“Cannot set a credential for principal 'sa'. (Microsoft SQL Server,错误: 15535)” 官方文档https://support.microsoft.com/zh-cn/kb/956177 分析了原因以及解决方案。 出现原因 如果在登录属性-sa对话框的常规选... 阅读全文

Provider:SSL Provider,error:0-等待的操作过时

2015-08-05 11:41 by 潇湘隐者, 5983 阅读, 收藏, 编辑
摘要:今天一同事使用SSMS 2012 连接数据库时,遇到了“provider:SSL Provider,error:0-等待的操作过时”,搜索了一下,遇到一哥 们也遇到这个问题:SQLServer 2012 已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 - 等待的操作过时。 在cmd命令窗口输入... 阅读全文

Reporting Service 告警"w WARN: Thread pool pressure. Using current thread for a work item"

2015-08-04 15:32 by 潇湘隐者, 372 阅读, 收藏, 编辑
摘要:如果Reporting Service偶尔出现不可访问或访问出错情况,这种情况一般没有做监控的话,很难捕捉到。出现这种问题,最好检查Reporting Service的日志文件。 今天早上就遇到这样一个案例,应用程序监控到调用SQL SERVER 2005的Reporting Service出现Method failed: HTTP/1.1 500 Internal Server Err... 阅读全文

SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析

2015-08-02 18:31 by 潇湘隐者, 8169 阅读, 收藏, 编辑
摘要:在SQL SERVER的查询语句中使用OR是否会导致不走索引查找(Index Seek)或索引失效(堆表走全表扫描 (Table Scan)、聚集索引表走聚集索引扫描(Clustered Index Scan))呢?是否所有情况都是如此?又该如何优化呢? 下面我们通过一些简单的例子来分析理解这些现象。下面的实验环境为SQL SERVER 2008,如果在不同版本有所区别,欢迎指正。 堆表单索... 阅读全文

作业配置规范文档[MS SQL]

2015-08-02 16:28 by 潇湘隐者, 810 阅读, 收藏, 编辑
摘要:作业配置规范文档(MS SQL) 文档类型 MS SQL数据库作业配置规范文档 创建日期 2015-07-30 版本变化 V3.0 修改记录 修改人 修改日期 版本 修改描述 潇湘隐者 2015-08-01 V1.0 创建制定文档 潇湘隐者 2015-08-13 V2.0 修改部分内容,例如Schedule命名 ... 阅读全文

SQL Server中的“最大并行度”的配置建议

2015-07-31 16:26 by 潇湘隐者, 12596 阅读, 收藏, 编辑
摘要:SQL Server中的最大并行度(max degree of parallelism)如何设置呢? 设置max degree of parallelism有什么好的建议和指导方针呢?在微软官方文档Recommendations and guidelines for the "max degree ... 阅读全文

SQL SERVER 2012/2014 链接到 SQL SERVER 2000的各种坑

2015-07-22 16:35 by 潇湘隐者, 9198 阅读, 收藏, 编辑
摘要:本文总结一下SQL SERVER 2012/2014链接到SQL SERVER 2000的各种坑,都是在实际应用中遇到的疑难杂症。可能会有人说怎么还在用SQL SERVER 2000,为什么不升级呢? 每个公司都会有一两个几乎快被人遗忘的系统,接手维护这些系统的人可能都不知换了多少批了。它们的命运注定慢慢消亡。然而偏偏却又生命力顽强,总还有一些人在使用着这些系统。所以就处在一种尴尬的... 阅读全文

SSRS Reports 2008性能优化案例二

2015-07-17 16:12 by 潇湘隐者, 1040 阅读, 收藏, 编辑
摘要:前几天一同事反映海外工厂A的SSRS报表比较慢,让我检查优化一下。于是我检查了下2015-07-13到2015-07-15 12:00这段时间报表的耗时记录 USE [ReportServer]; GO SELECT C.Name AS ReportName ,E.ReportID ... 阅读全文

SQL SERVER 2012 执行计划走嵌套循环导致性能问题的案例

2015-07-04 11:48 by 潇湘隐者, 2258 阅读, 收藏, 编辑
摘要:开发人员遇到一个及其诡异的的SQL性能问题,这段完整SQL语句如下所示: declare @UserId INTdeclare @PSANo VARCHAR(200)declare @ShipMode VARCHAR(10)declare @CY_FLAG VARCHAR(1)declare @P... 阅读全文

SELECT CAST(GETDATE() AS VARCHAR(10)) 显示不同格式的原因

2015-06-29 20:14 by 潇湘隐者, 4487 阅读, 收藏, 编辑
摘要:开发人员测试时,发现生产服务器与测试服务器执行SELECT CAST(GETDATE() AS VARCHAR(10))语句显示的格式不一样。如下所示 Server A Server B 其实出现这个问题,是因为登录名(login)的语言不一致所致,如下所示 可以使用下面SQL语句来检查对应的默认语言 SELECT @@LANGUAGE 或 SELECT loginname,name... 阅读全文

sp_addlinkedserver '(null)' is an invalid product name

2015-06-23 12:03 by 潇湘隐者, 1544 阅读, 收藏, 编辑
摘要:使用SSMS 2008客户端工具逆向生成了创建链接服务器的脚本时,在测试环境执行是报如下错误:'(null)' is an invalid product name. USE [master]GOIF EXISTS (SELECT srv.NAME FROM sys.servers srv WHERE srv.server_id != 0 ... 阅读全文

SQL SERVER 中is null 和 is not null 将会导致索引失效吗?

2015-06-04 00:01 by 潇湘隐者, 28132 阅读, 收藏, 编辑
摘要:其实本来这个问题没有什么好说的,今天优化的时候遇到一个SQL语句,因为比较有意思,所以我截取、简化了SQL语句,演示给大家看,如下所示 declare @bamboo_Code varchar(3); set @bamboo_Code='-01'; SELECT DISTINCT yarn_lotFROM dbo.rsjob WITH ( nolock )WHERE RIGHT(... 阅读全文

SQL SERVER 2000通过链接服务器发送邮件出现错误

2015-05-28 12:19 by 潇湘隐者, 638 阅读, 收藏, 编辑
摘要:案例环境: 服务器A系统: Windows Server 2000 数据库版本 : Microsoft SQL Server 2000 - 8.00.2282 (Intel X86) 服务器B系统: Windows Server 2003 数据库版本 : Microsoft SQL Server... 阅读全文

Unable to open the physical file xxxx. Operating system error 2

2015-05-27 17:19 by 潇湘隐者, 2955 阅读, 收藏, 编辑
摘要:在新UAT服务器上,需要将tempdb放置在SSD(固态硬盘)上。由于SSD(固态硬盘)特性,所以tempdb的文件只能放置在D盘下面,而不能是D盘下的某一个目录下面。 ALTER DATABASE tempdbMODIFY FILE(name='tempdev', filename='D:\tempdb.mdf') ; GO ALTER DATABASE tempdbMODIFY FI... 阅读全文

SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)

2015-05-13 23:54 by 潇湘隐者, 26251 阅读, 收藏, 编辑
摘要:在SSMS(Microsoft SQL Server Management Studio)里面,查看数据库对应的表的时候,会遇到“Lock Request time out period exceeded.(Microsoft SQL Server, 错误1222)”,对应的中文错误提示为“已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)”,如下截图... 阅读全文

xp_sendmail: 由于邮件错误 0x80004005 而失败

2015-03-30 15:46 by 潇湘隐者, 1487 阅读, 收藏, 编辑
摘要:今天收到一封邮件说我们的一台SQL SERVER 2000服务器发送邮件有问题。我测试中发现了如下错误: exec xp_sendmail 'Konglb@esquel.com','hello, 123' xp_sendmail:由于邮件错误0x80004005而失败解决方法 一直对手头的SQL SERVER 2000服务器关注比较少。之前这台服务器也偶尔会出现发送不了邮件的问题,一... 阅读全文

RESTORE detected an error on page (0:0) in database

2015-03-18 11:13 by 潇湘隐者, 1114 阅读, 收藏, 编辑
摘要:在测试服务器还原生产服务器的一个数据库时遇到了下面错误:System.Data.SqlClient.SqlError: RESTORE detected an error on page (0:0) in database "xxxx" as read from the backup set. (... 阅读全文

SQL SERVER 重组含有特殊字符的索引时遇到“关键字 'with' 附近有语法错误.”

2015-03-08 23:54 by 潇湘隐者, 10957 阅读, 收藏, 编辑
摘要:案例描述 这是在索引重组过程中遇到的有意思的错误案例,搜索了一下也没有看到相关资料,估计我第一个碰到这类错误的人(It's just a joke)。具体情况是YourSQLDba在做维护数据库索引时遇到了索引重组错误,然后我排查时就发现了这个案例。我下面用一个简单的测试例子演示一下具体情况。 数据库版本: SQL SERVER 2005 CREATE TABLE TEST ( ... 阅读全文

SQL Server修改数据库对象所有者(Owner)浅析

2015-03-04 23:53 by 潇湘隐者, 9341 阅读, 收藏, 编辑
摘要:在SQL Server数据库中如何修改数据库对象(表、视图、存储过程..)的所有者(Owner)呢?一般我们可以使用系统提供的系统存储过程sp_changeobjectowner来修改。 我们先看看sp_changeobjectowner在MSDN的文档介绍吧 更改当前数据库中对象的所有者。 重要提示:此存储过程只针对 Microsoft SQL Server 2000 中可用的对象进行。... 阅读全文

YourSQLDba备份失败案例锦集

2015-03-02 12:06 by 潇湘隐者, 537 阅读, 收藏, 编辑
摘要:使用YourSQLDba做备份、维护、管理时,偶尔会收到一些备份失败的邮件。导致YourSQLDba备份失败的情况比价多,打算在此篇中对YourSQLDba备份失败的案例做一些总结、整理。 1:YourSQLDba由于事务日志满了。具体情况如下: 检查YourSQLDba备份失败日志信息,你会看到下面这类错误信息。 The transaction log for database 'x... 阅读全文

服务器重启后SQL Server Agent由于"The EventLog service has not been started" 启动失败

2015-02-27 09:13 by 潇湘隐者, 1417 阅读, 收藏, 编辑
摘要:案例环境: 操作系统 : Microsoft Windows Server 2003 Standard Edtion SP2 数据库版本 : SQL Server 2005 Standard Edition SP4 案例描述: 服务器重启过后,MSSQLSERVER服务自动重启了,但是SQLSERVERAGENT服务启动失败(当然SQL Agent服务的启动类型为自... 阅读全文

SQL SERVER特殊行转列案列一则

2015-02-11 14:01 by 潇湘隐者, 933 阅读, 收藏, 编辑
摘要:今天有个同事找我,他说他有个需求,需要进行行转列,但是又跟一般的行转列有些区别,具体需求如下所说,需要将表1的数据转换为表2的显示格式. 我想了一下,给出了一个解决方法,具体如下所示(先给出测试数据) INSERT INTO TEST SELECT 1, 1, '定型名称', '预定型' UNION ALLSELECT 1, 2, '进布... 阅读全文

SSRS ReportServer Database 的Blocking问题

2015-02-10 23:58 by 潇湘隐者, 1052 阅读, 收藏, 编辑
摘要:我们监控SQL SERVER数据库的阻塞情况时,老是收到在SSRS 里面出现SQL阻塞情况,刚开始由于事情多,没有太关注ReportServerTempDB里面的会话阻塞情况,但是老是出现这种频繁阻塞情况,不得不仔细研究一下SSRS的Blocking问题。 Blocking SQL Text CREATE PROCEDURE [dbo].[Writelocksession] @Se... 阅读全文

Reporting Services 错误案例一则

2015-02-03 00:25 by 潇湘隐者, 3658 阅读, 收藏, 编辑
摘要:遇到一个有意思的Reporting Services报表的案例,在2015-01-30号的凌晨20分左右的时候,有人发现Reporting Services的速度非常慢,而且最后有抛出异常,当时不知道什么情况。只是记录了其中一张报表的名字,以及出错信息截图。如下所示: 第二天,我首先通过下面SQL查看这张报表在2015-01-30 00:00到2015-01-30 02... 阅读全文

SQL SERVER Transactional Replication中添加新表如何不初始化整个快照

2015-02-02 00:29 by 潇湘隐者, 2421 阅读, 收藏, 编辑
摘要:在SQL SERVER的复制(Replication)中,有可能出现由于业务需求变更,需要新增一张表或一些表到已有的复制(发布订阅)当中,这种需求应该是很正常,也很常见的。但是在已有的复制(发布订阅)当中增加新表/文章,往往需要将整个快照重新初始化,这样做虽然简单,但是往往在实际应用中会出现一些问题,例如,发布订阅的表比较多,数据量比较大,那么重新初始化快照往往需要很长一段时间,影响系统正常运行... 阅读全文

Error: 9001, Severity: 21, State: 5 The log for database 'xxxx' is not available

2015-01-24 11:42 by 潇湘隐者, 2405 阅读, 收藏, 编辑
摘要:昨天下午5点多收到几封告警邮件,我还没有来得及看,GLE那边的同事就电话过来,说数据库出现告警了。让我赶紧看看,案例具体信息如下所示: 告警邮件内容: DATE/TIME: 2015/1/23 17:08:52 DESCRIPTION: The log for database 'ecmsDB' is not available. Check the event log for ... 阅读全文

消息 8134,级别 16,状态 1,第 1 行 遇到以零作除数错误

2015-01-09 10:55 by 潇湘隐者, 2112 阅读, 收藏, 编辑
摘要:这两天遇到一个非常奇怪的问题,给人的感觉有点匪夷所思,如下所示,在更新一个表的统计信息时,会遇到“遇到以零作除数错误”,本来这个错误是属于数学错误,但是居然出现在更新统计信息的SQL语句里面 UPDATE STATISTICS [dbo].[FIInspectFabric] SAMPLE 20 PERCENT; 消息 8134,级别 16,状态 1,第 1 行 遇到以零作除数错误。 ... 阅读全文

Write on ……… failed: 112(failed to retrieve text for this error. Reason: 15105)

2015-01-07 10:08 by 潇湘隐者, 2896 阅读, 收藏, 编辑
摘要:早上检查数据库的备份邮件时,发现一台Microsoft SQL Server 2008 R2 (SP2)数据库的Maintenance Report有错误 在SSMS里面执行Exec YourSQLDba.Maint.ShowHistoryErrors 729脚本后,发现如下错误信息(数据库名用XXX替代): yMaint.backups backup log ... 阅读全文

SSRS Reports 2008性能优化案例

2015-01-02 15:13 by 潇湘隐者, 3286 阅读, 收藏, 编辑
摘要:我们的一个Reporting Service服务上部署了比较多的SSRS报表,其中有一个系统的SSRS报表部署后,执行时间相对较长,加之供应商又在ASP.NET页面里面嵌套了Reporting Service的报表,使得用户对报表响应速度非常不满,于是和几个同事研究了一番如何定位、优化SSRS报表性能。 案例环境: 操作系统 : Windows Server 200... 阅读全文

SSRS 2008 R2 错误:Timeout expired. The timeout period

2014-12-25 16:48 by 潇湘隐者, 6599 阅读, 收藏, 编辑
摘要:今天遇到了Reporting Services(SQL SERVER 2008 R2)的报表执行异常情况,报表加载数据很长时间都没有响应,最后报“An error occurred within the report server database. This may be due to a connection failure, timeout or low disk conditi... 阅读全文

forfiles命令批量删除N天前文件

2014-12-15 10:25 by 潇湘隐者, 21577 阅读, 收藏, 编辑
摘要:在整理手上几台SQL SERVER 2000的数据库备份时,一方面为了方便快速还原数据库,另外一方面为了备份冗余、备份方式统一(先备份到本地,然后收上磁带),将以前通过Symantec Backup Exec直接备份上带的作业改成了如下方式: Step 1: 通过数据库维护计划将备份生成在本地磁盘M,完整备份保留2天,事务日志备份保留3天 M:\DB_BA... 阅读全文

MS SQL 监控错误日志的告警信息

2014-10-28 12:09 by 潇湘隐者, 3358 阅读, 收藏, 编辑
摘要:SQL Server的错误消息(Error Message)按照消息的严重级别一共划分25个等级,级别越高,表示严重性也越高。但是如果你统计sys.messages,你会发现,实际上只有16(SQL SERVER 2008/2012)或17个(SQL SERVER 2005)个级别。猜测应该是一些留作扩展用,一些留作用户自定义错误消息的级别。 sys.messages中有个字段is... 阅读全文

SQL Server删除distribution数据库

2014-10-08 11:36 by 潇湘隐者, 6641 阅读, 收藏, 编辑
摘要:在数据库服务器删除复制(发布订阅)后,如何删除掉数据库distribution呢?如果你通过SSMS工具去删除数据库distribution,你会发现根本没有删除选项。 下面介绍一下删除distribution的步骤 步骤1: 查看相关订阅服务器的信息,如果还存在对应的订阅服务器,从注册的服务器中删除订阅服务器名称 exec sp_helpsubscriberinfo ;go exec... 阅读全文

SQL Server 2008 R2 Service Pack 3 已经发布

2014-10-07 17:17 by 潇湘隐者, 12950 阅读, 收藏, 编辑
摘要:微软SQL Server Product Team在9月26号官方博客宣布,Microsoft SQL Server 2008 R2 Service Pack 3 (SP3)正式发布了 。具体信息可以参考官方发布的博客SQL Server 2008 R2 Service Pack 3 has re... 阅读全文

YourSQLDba开源项目发布到codeplex网站了

2014-10-07 12:18 by 潇湘隐者, 541 阅读, 收藏, 编辑
摘要:今天登录YourSQLDba的官方网站http://yoursqldba.grics.ca/index_en.shtml,发现YourSQLDba项目已经发布到开源网站http://www.codeplex.com/了。YourSQLDba项目的地址为http://yoursqldba.codep... 阅读全文

数据库服务器改名导致Reporting Service不可用的案例

2014-09-15 15:01 by 潇湘隐者, 2395 阅读, 收藏, 编辑
摘要:案例环境: 操作系统版本 : Windows Server 2012 R2 Standard 数据库版本 : SQL Server 2012 Standard Edition SP2 案例介绍: 其实已经是第二次碰到这种情况,还是决定将这个案例记录一下。第一次是做数据库迁移时碰到,没有时间整理记录,第二次准备一个测试环境,从虚拟机一个服务器克... 阅读全文

SQL Server 2012 The report server cannot open a connection to the report server database

2014-09-05 17:00 by 潇湘隐者, 1821 阅读, 收藏, 编辑
摘要:案例环境: 操作系统版本: Windows Server 2012 R2 Standard 数据库版本 : SQL SERVER 2012 SP2 案例介绍: 今天进入一台新安装的SQL Server服务器的Reporting Service管理界面时,出现如下错误信息 The report server cannot open a connection to the report ser... 阅读全文

SQL Server 2012安装错误案例:Error while enabling Windows feature: NetFx3, Error Code: -2146498298

2014-09-04 16:34 by 潇湘隐者, 3626 阅读, 收藏, 编辑
摘要:案例环境: 服务器环境 : Windows Server 2012 R2 Standard 数据库版本 : SQL Server 2012 SP1 案例介绍: 在Windows Server 2012 R2 Standard版本上安装SQL SERVER 2012时,安装过程弹出如下错误提示:Error while enabling Windows feature: NetFx3, E... 阅读全文

SQL Server 中WITH (NOLOCK)浅析

2014-08-30 11:58 by 潇湘隐者, 106186 阅读, 收藏, 编辑
摘要:概念介绍 开发人员喜欢在SQL脚本中使用WITH(NOLOCK), WITH(NOLOCK)其实是表提示(table_hint)中的一种。它等同于 READUNCOMMITTED 。 具体的功能作用如下所示(摘自MSDN): 1: 指定允许脏读。不发布共享锁来阻止其他事务修改当前事务读取的数据,其他事务设置的排他锁不会阻碍当前事务读取锁定数据。允许脏读可能产生较多的并发操作,但其... 阅读全文

虚拟机备份克隆导致SQL SERVER 出现IO错误案例

2014-08-20 10:28 by 潇湘隐者, 2433 阅读, 收藏, 编辑
摘要:案例环境: 服务器配置: CPU: Intel E5-2690 RAM: 12G 虚拟机 操作系统 : Windows Server 2008 R2 Standard Edtion x64 数据库版本: SQL SERVER 2008R2 案例介绍: 晚上收到数据库一封告警邮件SQL Server Alert System: 'Severity 016' occurred o... 阅读全文

[翻译] 聚集索引表 VS 堆表

2014-08-19 23:21 by 潇湘隐者, 3489 阅读, 收藏, 编辑
摘要:前言: 本文对这篇博客Clustered Tables vs Heap Tables 的翻译, 如有翻译不对或不好的地方,敬请指出,大家一起学习进步。 问题描述 创建一个新表时,一个非常重要的设计原则就是创建还是不创建聚集索引的决定。没有聚集索引的表被称为堆,拥有聚集索引的表叫聚集索引表。 聚集索引表比堆表拥有一些好处(优势),比如聚集索引表是基于聚集索引键顺序存储的,正因为如此,所以通过聚集... 阅读全文

Attempt to fetch logical page (...) in database 2 failed. It belongs to allocation unit xxxx not to xxx

2014-07-29 22:19 by 潇湘隐者, 2181 阅读, 收藏, 编辑
摘要:今天一个同事说在一个生产库执行某个存储过程,遇到了错误: Fatal error 605 occurred at jul 29 2014 我试着执行该存储过程,结果出现下面错误,每次执行该存储过程,得到的错误内容都不一样(page变化,还有就是allocation unit)变化 消息 605,级别 21,状态 3,过程 usp_xxxxxxxxx,第 228 行 Attempt to ... 阅读全文

SQL Server 中VARCHAR(MAX)变量赋值引起的性能问题。

2014-07-25 16:17 by 潇湘隐者, 8425 阅读, 收藏, 编辑
摘要:案例环境: 操作系统版本 : Windows Server 2008 R2 Standard SP1 数据库版本 : Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 案例介绍: 由于不能将生产环境的代码和数据贴上来,所以我构造了下面一个小案例,当然没法和生产环境的案例一致。只能是接近而已。但是足以反映问题本质就足够了。 DRO... 阅读全文

SQL SERVER 2012链接到SQL SERVER 2000的问题解决案例

2014-07-17 23:17 by 潇湘隐者, 3032 阅读, 收藏, 编辑
摘要:前几天在在桦仔的SQLSERVER走起微信公众帐号看到一篇文章MS SQL Server2014链接MS SQL Server 2000,当时手机上囫囵吞枣看了个大概,知道是由于SQL SERVER Native Client版本问题,没想到不过几天,自己就一脚踩到这个坑里面了,真是感概万千,下文主要讲述一下SQL SERVER Native Client 10的安装过程。 网上搜索SQL ... 阅读全文

SQL SERVER 2005删除维护作业报错:The DELETE statement conflicted with the REFERENCE constraint "FK_subplan_job_id"

2014-07-17 21:56 by 潇湘隐者, 4453 阅读, 收藏, 编辑
摘要:案例环境: 数据库版本: Microsoft SQL Server 2005 (Microsoft SQL Server 2005 - 9.00.5000.00 (X64) ) 案例介绍: 对一个数据库实例做清理工作时,发现有一个很久之前禁用的数据库维护作业,于是遂删除该作业,但是删除该作业时,遇到如下错误: 脚本删除操作: USE [msdb]GOEXEC msdb.dbo.sp_de... 阅读全文

YourSQLDba 配置——修改备份路径

2014-07-15 23:18 by 潇湘隐者, 1145 阅读, 收藏, 编辑
摘要:公司一直使用YourSQLDba做本地备份,磁带机将本地备份文件上带做异地容灾备份。近期整理、验证备份时发现本地备份目录命名五花八门 其中有历史原因,也有无规划化的缘故,看着这些五花八门的目录,越看越不顺眼。于是想统一规范化。备份目录统一为DB_BACKUP,完整备份位于FULL_BACKUP子目录,事务日志备份位于LOG_BACKUP子目录下。例如如下所示: 完整备份目录 :G:\D... 阅读全文

浅析SQL SERVER执行计划中的各类怪相

2014-07-11 15:30 by 潇湘隐者, 4648 阅读, 收藏, 编辑
摘要:在查看执行计划或调优过程中,执行计划里面有些现象总会让人有些疑惑不解: 1:为什么同一条SQL语句有时候会走索引查找,有时候SQL脚本又不走索引查找,反而走全表扫描? 2:同一条SQL语句,查询条件的取值不同,它的执行计划会一致吗? 3: 同一条SQL语句,其执行计划会变化,为什么 4: 在查询条件的某个或几个字段上创建了索引,执行计划就一定会走该索引吗? 5:同时存在几个索引... 阅读全文

Reporting Service 服务启动时报错The service did not respond to the start or control request in a timely fashion

2014-06-20 14:10 by 潇湘隐者, 16975 阅读, 收藏, 编辑
摘要:案例环境: 启动一台数据库服务器(Windows Server 2003)的Reporting Service(SQL Server 2008 R2)服务时,出现如下错误信息: System.InvalidOperationException: Cannot start service ReportServer on computer 'xxx'. ---> System.Componen... 阅读全文

SQL Server 2008 标准版不支持Reporting Services的数据驱动订阅

2014-06-18 10:34 by 潇湘隐者, 1025 阅读, 收藏, 编辑
摘要:今天开发同事找我,说为什么Reporting Services服务器的报表管理的订阅选项里面只有”新建订阅“选项, 没有”数据驱动订阅"选项,说实话,我也基本上没有用过这项功能,于是去官方文档查看关于“数据驱动订阅”的一些知识。 搞了半天,原来SQL Server 2008只有Evaluation、Developer、Enterprise三个版本支持这个功能,标准版本以及具有高级服务的 SQL... 阅读全文

Linked Server: EXECUTE permission denied on object 'xp_prop_oledb_provider', database 'master', owner 'dbo'

2014-06-18 09:08 by 潇湘隐者, 2180 阅读, 收藏, 编辑
摘要:问题出现环境: 使用SQL Server Management Studio 2008 连接到SQL Server 2000的数据库,点击其中一个Oracle链接服务器,单击“目录”时,Linked Server弹出如下错误信息.使用另外一个拥有sysadmin角色的账号登录检查发现没有此类问题。 错误详细信息如下所示:有用的信息只有一条:EXECUTE permission denied o... 阅读全文

[翻译]——SQL Server使用链接服务器的5个性能杀手

2014-06-08 09:18 by 潇湘隐者, 3867 阅读, 收藏, 编辑
摘要:前言: 本文是对博客http://www.dbnewsfeed.com/2012/09/08/5-performance-killers-when-working-with-linked-servers/的翻译, 如有翻译不对或不好的地方,敬请指出,大家一起学习进步。尊重原创和翻译劳动成果,转载时请注明出处。谢谢! 当使用链接服务器(Linked Servers)时,最昂贵的代价就是网络带宽间... 阅读全文

SQL Server 监控统计阻塞脚本信息

2014-05-28 11:17 by 潇湘隐者, 3309 阅读, 收藏, 编辑
摘要:数据库产生阻塞(Blocking)的本质原因 :SQL语句连续持有锁的时间过长 ,数目过多, 粒度过大。阻塞是事务隔离带来的副作用,它是不可避免的,而且是一个数据库系统常见的现象。 但是阻塞的时间和出现频率要控制在一定的范围内,阻塞持续的时间过长或阻塞出现过多(过于频繁),就会对数据库性能产生严重的影响。 很多时候,DBA需要知道数据库在出现性能问题时,有没有发生阻塞? 什么时候... 阅读全文

Win7 安装SQL SERVER 2012需要SP1补丁

2014-05-12 10:30 by 潇湘隐者, 12974 阅读, 收藏, 编辑
摘要:在操作系统Win7上安装SQL Server 2012时,报如下错误:也就是说SQL Server 2012如要要安装在Windows 7 上,则至少需要安装SP1补丁。否则就会弹出上面提示信息。关于安装SQL Server 2012的硬件和软件的要求,MSDN有详细的说明:下面内容摘抄自MSDN... 阅读全文

SQL SERVER出现大量一致性错误的解决方法

2014-04-29 16:05 by 潇湘隐者, 7471 阅读, 收藏, 编辑
摘要:如果DBCC CHECKDB发现了比较少的一致性错误,可以使用 DBCC UPDATEUSAGE(DatabaseName,"dbo.ObjectName"); 语句逐个针对表或索引中的每个分区更正行、已用页、保留页、叶级页和数据页的计数。但是如果数据库出现大量一致性错误。例如如下所示:DBCC ... 阅读全文

MS SQL统计信息浅析下篇

2014-04-25 15:05 by 潇湘隐者, 1492 阅读, 收藏, 编辑
摘要:MS SQL统计信息浅析上篇对SQL SERVER 数据库统计信息做了一个整体的介绍,随着我对数据库统计信息的不断认识、理解,于是有了MS SQL统计信息浅析下篇。 下面是我对SQL Server统计信息的一些探讨或认识,如有不对的地方,希望大家能够指正。 触发统计信息更新条件疑问 关于这个触发统计信息更新的条件。因为我在很多资料上看到过,例如Microsoft ... 阅读全文

如何查看Windows服务器运行了多长时间

2014-04-19 17:11 by 潇湘隐者, 38322 阅读, 收藏, 编辑
摘要:前言:有时候管理、维护Windows服务器需要定期重启服务器(为什么需要重启,你懂的),但是这个“定期”有时候会受很多因素影响,例如某台服务器忘了重启;某台服务器那个时间段业务繁忙,不能重启;那个时间段你忘了重启服务器.....。 诸如此类。当你的Schedule被打乱了。这个时候,你就需要查看服务器运行了多长时间,下面介绍一下如何查看Windows服务器运行时间的方法 方法一:如果这台Wind... 阅读全文

SQL SERVER 2012 从Enterprise Evaluation Edtion 升级到 Standard Edtion SP1

2014-03-28 14:57 by 潇湘隐者, 10024 阅读, 收藏, 编辑
摘要:案例背景:公司从意大利购买了一套中控系统,前期我也没有参与其中(包括安装、实施都是第三方),直到最近项目负责人告诉我:前期谈判以为是数据库的License费用包含在合同中,现在经过确认SQL Server 数据库的License需要我们这边提供。等我连接到该数据库服务器检查时,发现数据库版本为2012 Enterprise Evaluation Edition (64-bit),而公司现在只购买了2012 Standard Edition 。那么我现在需要安装SQL SERVER 2012 Standard Edition。 刚开始我在纠结是卸载该版本后重新安装还是是否可以通过“Edit... 阅读全文

杀毒软件导致YourSQLDba备份失败

2014-03-24 12:10 by 潇湘隐者, 417 阅读, 收藏, 编辑
摘要:有一朋友咨询我,他配置的YourSQLDba 备份作业经常出现备份失败的情况,我帮忙查看了一下,首先从告警邮件中查看出错的具体信息,执行了下面SQL语句(来自于告警邮件) Exec YourSQLDba.dbo.ShowHistory @JobNo = 37732, @DispLimit = 1, @FilterErr = 1 最后一行的详细信息如下所示:> -- This line is NULL in the command output. If an Antivirus runs on the SQL server ; check that backup directory is 阅读全文

如何转换SQL Server 2008数据库到SQL Server 2005

2014-03-19 12:06 by 潇湘隐者, 22811 阅读, 收藏, 编辑
摘要:背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档的时候,坑爹的事情发生了,居然发现有两三个工厂使用的还是SQL SERVER 2005数据库,要命的是这几个工厂没有SQL SERVER 2008的数据库服务器。而其中两个正准备做服务器的迁移升级,但... 阅读全文

SQL SERVER 2012 修改数据库默认位置不立即生效

2014-03-17 23:11 by 潇湘隐者, 11954 阅读, 收藏, 编辑
摘要:今天修改SQL SERVER 2012的数据库默认位置:即数据文件、日志文件默认位置时遇到一个问题,单击"服务器属性”(Server Properties)——> 数据库设置(Database Settings), 修改了数据文件和日志的默认路径。点击确认后再打开该属性窗口,居然发现修改的值变回修改前的值了。刚开始我以为是修改没有生效,没有修改到注册表,但是检查注册表,在HKEY_LOCAL_MA... 阅读全文

SQL Server Reporting Services:无法检索应用程序文件。部署中的文件已损坏

2014-03-17 17:31 by 潇湘隐者, 1211 阅读, 收藏, 编辑
摘要:如果在客户端计算机上启动Microsoft SQL Server 2012的 ClickOnce 版本的 Microsoft SQL Server 报表生成器时出现“无法检索应用程序文件。部署中的文件已损坏”时,一般是由于客户端计算机上没有安装 Microsoft.NET Framework 4 或更高版本的.NET Framework 版本,安装了Microsoft.NET Framework ... 阅读全文

PowerVault TL4000 Tape Library 告警:“Media Attention”

2014-03-13 23:21 by 潇湘隐者, 2091 阅读, 收藏, 编辑
摘要:Dell PowerVault TL4000 磁带库机的指示灯告警,从Web管理平台登录后,在菜单“Library Status”下发现如下告警信息: Library Status: Media Attention 出现这个告警,一般是因为磁带卡住、磁带损坏等原因造成,需要进一步验证、检查具体原因,在菜单Inventory下找到了原因: Slot 32下有一盒编码为000037L5的... 阅读全文

Database 'xxx' cannot be upgraded because it is read-only or has read-only file Make the database or files writeable, and rerun recovery.

2014-03-07 12:20 by 潇湘隐者, 1875 阅读, 收藏, 编辑
摘要:在分离数据库DatabaseName(暂且用DatabaseName代替该数据库名)后,我将其数据文件以及日志文件移动到新增的磁盘上。然后附加该数据库,结果报如下错误: Database 'DatabaseName' cannot be upgraded because it is read-only or has read-only files. Make the database or ... 阅读全文

MS SQL错误:SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems

2014-03-05 14:12 by 潇湘隐者, 2023 阅读, 收藏, 编辑
摘要:早晨宁波那边的IT人员打电话告知数据库无法访问了。其实我在早晨也发现Ignite监控下的宁波的数据库服务器出现了异常,但是当时正在检查查看其它服务器发过来的各类邮件,还没等到我去确认具体情况,就收到了电话。我首先检查网络是否畅通,结果发现网络没有问题,然后远程登录到该服务器,查看了一下数据库的服务发现其运行正常,但是在本机使用MSSMS管理工具亦无法连接数据库,当下有两种方案:方案一:... 阅读全文

MS SQL 错误:The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "test" was unable to begin a distributed transaction.

2014-03-05 11:39 by 潇湘隐者, 5221 阅读, 收藏, 编辑
摘要:一同事在测试服务器(系统:Windows 2008 R2 Standard 数据库:SQL SERVER 2008 R2)通过链接服务器test使用分布式事务测试时出错,出错信息如下: set xact_abort on begin tran update test.mydb.dbo.test_one set name='test' where id= 3 ; commit O... 阅读全文

SQL SERVER 2008:内部查询处理器错误: 查询处理器在执行过程中遇到意外错误

2014-01-06 22:20 by 潇湘隐者, 8825 阅读, 收藏, 编辑
摘要:今天一个同事突然告诉我,以前跑得很正常的一个SQL语句,执行时突然报如下错误: 消息1222,级别16,状态18,第1 行 已超过了锁请求超时时段。 消息8630,级别16,状态1,第1 行 内部查询处理器错误: 查询处理器在执行过程中遇到意外错误。 我执行了一下这个SQL语句,也是报如上错误,感觉有点奇怪,还... 阅读全文

sp_configure错误:不支持对系统目录进行即席更新。

2013-12-31 15:44 by 潇湘隐者, 19266 阅读, 收藏, 编辑
摘要:今天在一台数据库服务器上(Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Standard Edition (64-bit))使用sp_configure更改当前服务器的全局配置设置时,遇到错误提示为“消息 5808,级别 16,状态 1,第 1 行 Ad hoc update to system catalogs is not supported”,一般对应的中文错误提示为:“消息 5808,级别 16,状态 1,第 1 行 不支持对系统目录进行即席更新”。Code SnippetEXEC sp_configure'sh 阅读全文

SQL SERVER 2008 Reporting Services 的一些小问题集合

2013-12-18 17:58 by 潇湘隐者, 6641 阅读, 收藏, 编辑
摘要:实验环境:服务器 Windows Server 2008 R2 Standard 64bit 数据库 SQL SERVER 2008 R2 Standard 64bit 问题1:在SQL Server 2008下,配置了Reporting Services后,在IE里输入http://localhost/Reports/Pages/Folder.asp... 阅读全文

SQL Server解决孤立用户浅析

2013-12-09 15:47 by 潇湘隐者, 4335 阅读, 收藏, 编辑
摘要:孤立用户概念 所谓孤立用户即指在服务器实例上未定义或错误定义了其相应 SQL Server 登录名的数据库用户无法登录到实例。 这样的用户被称为此服务器实例上的数据库的“孤立用户”。 如果删除了对应的 SQL Server 登录名,则数据库用户可能会变为孤立用户。 另外,在数据库还原或附加到 SQL Server 的其他实例之后,数据库用户也可能变为孤立用户。 如果未在新服务器实例... 阅读全文

SQL SERVER修改排序规则——脚本篇

2013-12-07 20:45 by 潇湘隐者, 13918 阅读, 收藏, 编辑
摘要:在上篇MS SQL 排序规则总结中,大致就数据库服务器排序规则(或者叫数据库实例排序规则)、数据库排序规则、列的排序规则粗浅的叙说了一遍,重点讲述了修改数据库服务器排序规则(数据库实例排序规则),其中对于数据库排序规则的修改只是粗略带过。其实相对而言,修改服务器排序规则(数据库实例排序规则)相对简单一些,修改数据库的排序规则就复杂多了,因为涉及到数据、SQL脚本等等,例如,一不小心,修改排序规则后... 阅读全文

[翻译]当分发数据库增长到25G时如何解决

2013-10-20 10:05 by 潇湘隐者, 1604 阅读, 收藏, 编辑
摘要:有时候,分发数据库(Distribution Database)会增长得非常大,那么如何解决呢,请看Chris Skorlinski, Microsoft SQL Server Escalation Services 的解决方案。原文地址:How to resolve when Distribution Database is growing huge (+25gig), 本人翻译水平有限,如果有什么地方翻译不当或不对的地方,请不吝指教!是的,我当然知道大数据库是相对的,但总体来说,如果你看到分发数据库越来越大增长到25G,这意味着清理进程很难删除复制事务,后面我将介绍如何以及为什么清理过程会 阅读全文

The process could not execute 'sp_repldone/sp_replcounters' on 'ServerName'

2013-10-17 09:22 by 潇湘隐者, 2733 阅读, 收藏, 编辑
摘要:昨天发现发布服务器S(SQL Server 2008 R2),出现大量如下错误错误细节如下所示:Date 10/16/2013 4:04:14 PMLog SQL Server (Current - 10/16/2013 3:44:00 PM)Source spid52MessageReplication-Replication Transaction-Log Reader Subsystem: agent xxxxx failed. The process could not execute 'sp_repldone/sp_replcounters' on ' Ser 阅读全文

MS SQL 排序规则总结

2013-10-12 21:54 by 潇湘隐者, 16939 阅读, 收藏, 编辑
摘要:排序规则术语 什么是排序规则呢? 排序规则是根据特定语言和区域设置标准指定对字符串数据进行排序和比较的规则。SQL Server 支持在单个数据库中存储具有不同排序规则的对象。MSDN解释:在 Microsoft SQL Server中,字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则 当 Transact-SQL 语句在具有不同排... 阅读全文

SQL SERVER作业的Schedules浅析

2013-10-10 22:39 by 潇湘隐者, 4207 阅读, 收藏, 编辑
摘要:SQL SERVER作业的计划(Schedules),如果你没仔细研究过或没有应用一些复杂的计划(Schedules),那么你觉得SQL SERVER作业的计划(Schedules)非常好用,也没啥问题,但是我要告诉你一个“残酷”的真相,相比Linux系统的Crontab,SQL SERVER作业的计划其实是一个二等残废,很多功能要实行起来真的是让人头疼!如果你自认为非常了解作业的配置(不要想当然,实践验证保证会让你大吃一惊)?那么接下来先看看几个问题:1:如果你要配置作业在每个小时的第20分钟执行,例如1:20、2:20、3:20........执行,你怎么配置?2:在计划(Schedul. 阅读全文

MS SQL 错误:无法绑定由多个部分组成的标识符 "xxxxx"

2013-10-10 14:36 by 潇湘隐者, 63483 阅读, 收藏, 编辑
摘要:今天有个同事问我一个SQL问题,觉得有点意思,虽然能很快定位并解决问题,但是就是有种说不清道不明的感觉。因为不能解释清楚(很多是建立在假设上),顺便记录一下,希望有清楚原理的人能解答一二。原SQL语句不便于说明问题,我用一个简单的例子来描述这个问题,请看下面SQL:SELECT TYPE, COUNT(1) FROM sys.objects tGROUP BY sys.objects.type;消息 4104,级别 16,状态 1,第 2 行无法绑定由多个部分组成的标识符 "sys.objects.type"。如果是English版本,则会报如下错误:消息 4104,级别 阅读全文

MS SQL专用管理员连接DAC

2013-09-28 11:45 by 潇湘隐者, 8799 阅读, 收藏, 编辑
摘要:在SQL SERVER 2005中,微软引入了一个叫做数据库专用管理员连接方式(DAC Dedicated Administrator Connection)的特性,使用这个新特性,数据库管理员可以在数据库引擎不能响应正常连接时,可以通过DAC连接到数据库,执行诊断函数或T-SQL语句,对数据库服务器进行问题诊断和故障排除(即使数据库实例以锁定或非正常状态下运行)。其实DAC还有一个非常有用的用途,用来研究数据库内部的表、目录视图等。以前我也写过关于DAC的一篇文章SQL Server数据库专用管理员DAC连接方式,当时的实验环境是SQL Server 2005,现在来看,感觉有些侧重点和问题 阅读全文

SQL SERVER 2008数据库各版本功能对比

2013-09-27 13:59 by 潇湘隐者, 3631 阅读, 收藏, 编辑
摘要:微软SQL SERVER 2008数据库有6个版本,分别是数据中心版、企业版、标准版、Web版、工作组版、简易版,有时候购买的时候或需要使用某项功能时,需要了解各个版本的区别,功能差异,很多时候,大部分人都没法记得那么清楚,只能上网搜索一下,但是很多搜索结果往往不那么让人满意,要么挂羊头卖狗肉,要么信息残缺不全,其实微软官网有提供了http://www.microsoft.com/zh-cn/SQLServer/product-info/compare.aspx这样一个对比功能,你只需选择你需要对比的版本,就可以从可伸缩性、高可用性、虚拟化支持、复制.....等多方面得到你想要的结果。非常方便 阅读全文

MS SQL Could not obtain information about Windows NT group/user 'domain\login', error code 0x5. [SQLSTATE 42000] (Error 15404)

2013-09-25 20:13 by 潇湘隐者, 2055 阅读, 收藏, 编辑
摘要:最近碰到一个有趣的错误:海外的一台数据库服务器上某些作业偶尔会报错,报错信息如下所示:-------------------------------------------------------------------------------------------------------------------------------------------------日期 2013/9/15 12:00:00日志 作业历史记录 (JOB_SYNCHRONIZING_ESCM_DATA_EAV)步骤 ID 0服务器 EGVNT02作业名称 JOB_SYNCHRONIZING_ESCM_DA 阅读全文

MS SQL 统计信息浅析上篇

2013-09-24 23:08 by 潇湘隐者, 5500 阅读, 收藏, 编辑
摘要:统计信息概念 统计信息是一些对象,这些对象包含在表或索引视图中一列或多列中的数据分布有关的统计信息。数据库查询优化器使用这些统计信息来估计查询结果中的基数或行数。 通过这些基数估计,查询优化器可以生成高质量的执行计划。 例如,查询优化器可以使用基数估计选择索引查找运算符而不是耗费更多资源的索引扫描运算符,从而提高查询性能。[参考MSDN] 其实如果你以前没有接触过统计信息,你可以将其看做是数据库为了得到最优的执行计划,统计数据库里面表、索引等对象的一些数据,例如表的记录数、所有列的平均长度、直方图....等一些优化器需要用到的数据信息。SQL查询优化器是一个基于成本的优化器,类似于ORACLE 阅读全文

SQL SERVER 2000 迁移后SQL SERVER代理服务启动错误分析

2013-09-20 13:49 by 潇湘隐者, 2452 阅读, 收藏, 编辑
摘要:公司有一个老系统,这个系统所用的数据库是SQL SERVER 2000,它所在的Dell服务器已经运行超过10年了,早已经过了保修服务期,最近几乎每周会出现一次故障,加之5月份另外一台服务器坏了两个硬盘,所以非常担心这台服务器“寿终正寝”,跟开发维护那边沟通,想将数据库迁移升级到SQL SERVER 2008,但是由于是老旧系统,现在的负责人不敢做数据库升级,最终协商下来,只能迁移到另外一台服务器,不做升级。 在部署测试环境时,先将master,msdb等系统数据库直接拷贝过去覆盖原系统数据库,启动数据库后,出现了莫名错误。不得已只能从生产库备份master后在测试库还原,然后莫名的错误解决. 阅读全文

SQL SERVER 作业浅析

2013-08-24 19:00 by 潇湘隐者, 12316 阅读, 收藏, 编辑
摘要:作业介绍 SQL SERVER的作业是一系列由SQL SERVER代理按顺序执行的指定操作。作业可以执行一系列活动,包括运行Transact-SQL脚本、命令行应用程序、Microsoft ActiveX脚本、Integration Services 包、Analysis Services 命令和查询或复制任务。作业可以运行重复任务或那些可计划的任务,它们可以通过生成警报来自动通知用户作业状态,从而极大地简化了 SQL Server 管理[参见MSDN]。 创建作业、删除作业、查看作业历史记录....等所有操作都可以通过SSMS管理工具GUI界面操作,有时候也确实挺方便的。但是当一个实例有多个 阅读全文

YourSQLDba将数据库置于紧急模式的原因浅析

2013-08-10 21:20 by 潇湘隐者, 865 阅读, 收藏, 编辑
摘要:从SQL SERVER 2000 上迁移了一个数据库到SQL SERVER 2008 R2上,暂且用DataBaseName代替迁移的真实的数据库名(后面的资料也会将数据库真实的名字用DataBaseName代替),迁移过程中也没有啥问题,配置了YourDataBase,作业“YourSQLDba_FullBackups_And_Maintenance”每天凌晨12点整运行,结果第一天晚上YourDatabase将数据库DataBaseName置于紧急模式,检查错误日志情况如下:错误现象: YourSQLDba对数据库做一致性检查时,发现有错误,所以它将该数据库置于紧急模式,具体内容如下所查. 阅读全文

MS SQL 需要定期清理日志文件

2013-08-10 09:30 by 潇湘隐者, 4657 阅读, 收藏, 编辑
摘要:前言碎语 关于对SQL SERVER 日志文件管理方面了解不多的话,可以参考我的这篇博客文章“MS SQL 日志记录管理”,不过这篇文章只是介绍对SQL SERVER日志记录的深入认知了解,并没有提出如何管理日志文件的方案,如果你有兴趣的话,倒不妨可以钻研一下如何管理、提取日志记录信息,这是数据库精... 阅读全文

SQL Sever 博客文章目录(2016-07-06更新)

2013-08-03 15:23 by 潇湘隐者, 3412 阅读, 收藏, 编辑
摘要:SQL Server方面的博客文章也陆陆续续的写了不少了,顺便也将这些知识点整理、归纳一下下。方便自己和他人查看。 MS SQL 数据类型 三大数据库对比研究系列——数据类型 MS SQL 表和视图 数据库表的基本信息,你知道吗? 数据查询表,列名对比 MS SQL 建表SQL的脚本 查看数据库、表 阅读全文

You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1

2013-07-22 23:47 by 潇湘隐者, 3171 阅读, 收藏, 编辑
摘要:今天在Windows Server 2008 下安装SQL SERVER 2008时,碰到如下错误:You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1。既然碰到了顺便还是记录一下,虽然感觉没啥技术含量也没有难度,有时候有必要养成一个好习惯。记录你碰到的问题、解决问题的方案,你思考的点点滴滴!打开 Server Manager,在“Features”下勾选".NET Framework 3.5.1 Features(Installed)", 阅读全文

Cannot create an instance of OLE DB provider "OraOLEDB.Oracle" for linked server "xxxxxxx".

2013-07-22 23:19 by 潇湘隐者, 4632 阅读, 收藏, 编辑
摘要:在SQL SERVER 2008 R2下用Windows 身份认证的登录名创建了一个访问ORACLE数据库的链接服务器xxxxx,测试成功,木有问题,但是其它登录名使用该链接服务器时,报如下错误:消息 7302,级别 16,状态 1,第 1 行Cannot create an instance of OLE DB provider "OraOLEDB.Oracle" for linked server "xxxxxx".此时需要在“服务器对象”——>“链接服务器”——>“访问接口”下,找到OraOLEDB.Oracle选项,单击右键选择属性, 阅读全文

MS SQL 错误 :17883,严重度: 1,状态: 0

2013-07-17 20:21 by 潇湘隐者, 1659 阅读, 收藏, 编辑
摘要:公司一台老旧的SQL SERVER 2000 数据库,一周内会出现若干次(一次或多次)CPU 持续100%,导致应用程序没有反应的情况,如下图所示:错误信息如下所示:日期 2013/7/12 2:14:03日志 SQL Server (存档编号6 - 2013/7/12 8:49:00)源 server消息错误: 17883,严重度: 1,状态: 0日期 2013/7/12 2:14:03日志 SQL Server (存档编号6 - 2013/7/12 8:49:00)源 server消息调度程序 2 似乎已被... 阅读全文

计算机改名导致数据库链接的诡异问题

2013-07-08 20:47 by 潇湘隐者, 2347 阅读, 收藏, 编辑
摘要:前几天给开发部门部署测试数据库时,遇到一个很诡异的问题:创建一个链接服务器GEK-MIS01时,报错如下: 消息 15190,级别 16,状态 1,过程 sp_dropserver,第 56 行 仍有对服务器 'GEK-MIS01' 的远程登录或链接登录。脚本如下(略去登录名等关键信息):/****** Object: LinkedServer [GEK-MIS01] Script Date: 07/05/2013 16:19:58 ******/IF EXISTS (SELECT srv.name FROM sys.servers srv WHERE srv.serv... 阅读全文

There is insufficient system memory to run this query 错误

2013-07-03 23:39 by 潇湘隐者, 1547 阅读, 收藏, 编辑
摘要:服务器环境大致情况如下:操作系统: Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2数据库 : Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86) 。机器物理内存8G,开启了“使用AWE分配内存选项(U)"在这台服务器上,创建YourSQLDba后,配置过程中创建函数的时候,报如下错误,重试了几次都是如此,但是其它应用从来没有出过这个错误,而且这是一台生产服务器,很多应用在跑,所以这才是让我纳闷的地方:消息 701,级别 17,状态 13,过程 c 阅读全文

SQL Server 2008 R2的发布订阅配置实践

2013-06-28 00:08 by 潇湘隐者, 5518 阅读, 收藏, 编辑
摘要:纸上得来终觉浅,绝知此事要躬行。搞技术尤其如此,看别人配置SQL SERVER的复制,发布-订阅、镜像、日志传送者方面的文章,感觉挺简单,好像轻轻松松的,但是当你自己去实践的时候,你会发现还真不是那么一回事,毕竟环境不同、数据库版本或经验关系,你实践的时候会或多或少碰到一些问题,有可能人家是多次实践 阅读全文

MS SQL 2008 发布订阅配置错误总结

2013-06-25 23:10 by 潇湘隐者, 5928 阅读, 收藏, 编辑
摘要:最近在配置SQL 2008的发布订阅功能时,遇到了几个小错误,顺便归纳总结一下(以后碰到各类关于发布订阅的错误都将收录、更新到这篇文章),方便自己在以后碰到这类问题时,能够迅速解决问题。毕竟人的记忆能力有时效性,时间久了,有可能有些东西就模糊了或忘了,好记性不如烂笔头。 错误1:在数据库服务器上新建本地发布服务时报错。 ... 阅读全文

MS SQL 日常维护管理常用脚本(二)

2013-06-24 20:57 by 潇湘隐者, 7393 阅读, 收藏, 编辑
摘要:监控数据库运行下面是整理、收集监控数据库运行的一些常用脚本,也是MS SQL 日常维护管理常用脚本(一)的续集,欢迎大家补充、提意见。查看数据库登录名信息Code SnippetSELECT name AS LoginName ,dbnameAS DefaultDB ,createdateAS CreateDate,updatedateAS UpdateDate,languageAS Language,CASE WHEN isntname = 1 THEN 'NT USER'ELSE 'SQL USER'ENDAS UserTypeFROM syslogins; 阅读全文

迁移Reporting Services的方法与WMI错误

2013-06-18 22:22 by 潇湘隐者, 1800 阅读, 收藏, 编辑
摘要:今天上午,接到一个任务:迁移SQL SERVER 2005的报表服务到另外一台SQL SERVER 2008服务器,结果等我备份了两边服务器的ReportServer,ReportServerTempDB以及相关准备工作后,准备用Reporting Services 配置管理器(Reporting Services Configuration Manage)备份RS秘钥时,结果悲剧的一幕出现了。WMI错误,具体错误细节请见下面See the end of this message for details on invokingjust-in-time (JIT) debugging inst. 阅读全文

MS SQL 日常维护管理常用脚本(一)

2013-06-15 00:03 by 潇湘隐者, 9889 阅读, 收藏, 编辑
摘要:SQL SERVER 数据库日常维护,管理,巡检过程中你可能经常需要用到一些SQL语句(亦或方法)来查看数据库服务器环境(操作系统版本, 磁盘空间,CPU,RAM信息),数据库信息(数据库版本,实例名称...),数据库对象等。查看数据库信息查看数据库服务器名称 方法1:SQL脚本查询,可以通过下面脚本来查询。 默认实例默认实例查询SELECT @@SERVERNAME AS SERVERNAME;SELECT SERVERPROPERTY('servername') AS ServerName;SELECT srvname AS ServerName FROM sys.syss 阅读全文

MS SQL 数据库状态为SUSPECT的处理方法

2013-06-10 22:57 by 潇湘隐者, 10055 阅读, 收藏, 编辑
摘要:当SQL SERVER数据库状态为质疑(SUSPECT)状态时,我们可以用以下方法来处理:1. 修改数据库为紧急模式:ALTER DATABASE DBName SET EMERGENCY .2. 检查数据库的完整性:DBCC CHECKDB(‘DBName’)3. 检查没有错误则恢复数据库为正常模式:ALTER DATABASE DBName SET ONLINE;4 如检查数据库有错误则修改数据库为单用户模式,依情况选择以下命令行进行修复数据;Code SnippetDBCC CHECKDB('DBName',REPAIR_FAST);DBCC CHECKDB('D 阅读全文

MS SQL 完全卸载数据库

2013-06-10 20:24 by 潇湘隐者, 16777 阅读, 收藏, 编辑
摘要:卸载SQL SERVER 数据库可能很多人都做过,但是我们需要注意,有时候可能没有完全卸载干净。当然SQL SERVER不像ORACLE数据库,卸载不干净也完全可以重新安装,可能会出现安装不成功的情况,那么如何完全卸载数据库呢?下面的操作环境以WIN2008 + SQL SERVER 2008 R2为例来实验一下:步骤1: 关闭SQL SERVER的所有服务。步骤2: 若要开始卸载过程,请从“开始”菜单单击“控制面板”,然后双击“程序和功能”。选择要卸载的 SQL Server 组件,然后单击“卸载”。步骤3: 此时将启动 SQL Server 安装向导,点击Remove按钮,即可开始卸载SQ 阅读全文

[翻译]为什么你不要收缩数据库文件

2013-06-04 00:43 by 潇湘隐者, 5870 阅读, 收藏, 编辑
摘要:前言,这几天查看了很多关于SQL SERVER收缩数据文件方面的文章,准备写一篇关于收缩日志方面的文章,但是突然有种冲动将看过经典的文章翻译出来,下面这篇文章是翻译的是Paul Randal – “Why You Should Not Shrink Your Data Files”。有些比较难以翻译、清晰的地方,我会贴上原文。好了,不啰嗦了,直接看下面的翻译吧。 我最大的一个热点问题是关于收缩数据文件,虽然在微软的时候,我自己写了相关收缩数据文件代码,我再也没有机会去重写它,让它操作起来更方便。我真的不喜欢收缩。 现在,不要混淆了收缩事务日志文件和收缩数据文件,当事务日志文件的增长失控或为了. 阅读全文

MS SQL 日志记录管理

2013-05-28 18:54 by 潇湘隐者, 33157 阅读, 收藏, 编辑
摘要:MS SQL的日志信息/日志记录,可能对你来说,既熟悉又陌生,熟悉是因为你可能一直都在使用,查看、关注一些日志信息/记录,例如,作业历史记录;陌生是因为你可能从不关注日志信息/记录的管理,这里我一直用日志信息/记录这个词,而没有用日志文件这个词来阐述,是想让大家把它和事务日志文件(ldf)区分开来,网上你用日志文件做搜索关键词,可能搜出来的都是事务日志相关的信息。其实它真的也叫日志文件,这篇文章我大概从日志记录分类、如何查看日志记录、日志记录的位置、日志记录的设置、为什么错误日志会暴增、如何清除日志记录等方面来讲述。日志记录分类按日志文件查看器,习惯将错误日志归为SQL SERVER、 SQ. 阅读全文

MS SQL 事物日志传送能否跨数据库版本吗?

2013-05-22 12:13 by 潇湘隐者, 1489 阅读, 收藏, 编辑
摘要:SQL SERVER的事物日志传送(log shipping)功能,相信很多人都使用过或正在应用,这是MS SQL提供的一个非常强大的功能,一般需要一个主数据库服务器(primary/production database server)和辅助数据库服务器(standby server)来完成这个配置,默认情况下,主数据库和辅助数据库的版本应该是一致的,那么如果这两个数据库版本不一致,会不会有什么问题?还能做log shipping配置吗?那么数据库版本不一致分两种情况: 1: 类似于MS SQL 2005 64 bit SP4 与MS SQL 2005 SP3 32 bit这样的版本差别 . 阅读全文

MS SQL 模仿ORACLE的DESC

2013-05-21 23:15 by 潇湘隐者, 1255 阅读, 收藏, 编辑
摘要:前言: 在ORACLE数据库的SQL*PLUS里面有个DES(DESCRIBE)命令,它可以返回数据库所存储对象的描述,如下所示 SQL> DESC STUDENT_SCORE Name Type Nullable Default Comments ---------------- -------... 阅读全文

SSMS 2005 连接 SQL SERVER 2008问题

2013-05-21 11:28 by 潇湘隐者, 1650 阅读, 收藏, 编辑
摘要:用本机的 Microsoft SQL Server Management Studio 2005 客户端连接数据库服务器时报错:“This version of Microsoft SQL Server Management Studio can only be used to connect to SQL Server 2000 and SQL Server 2005 servers. (ConnectionDlg)”,截图如下:具体环境:本机安装的是Microsoft SQL Server Management Studio 2005 客户端工具, 具体版本号为9.00.1399.00,服 阅读全文

MS SQL 批量给存储过程/函数授权

2013-05-14 23:38 by 潇湘隐者, 2761 阅读, 收藏, 编辑
摘要:在工作当中遇到一个类似这样的问题:要对数据库账户的权限进行清理、设置,其中有一个用户Test,只能拥有数据库MyAssistant的DML(更新、插入、删除等)操作权限,另外拥有执行数据库存储过程、函数的权限,但是不能进行DDL操作(包括新建、修改表、存储过程等...),于是需要设置登录名Test的相关权限:1:右键单击登录名Test的属性.2: 在服务器角色里面选择"public"服务器角色。3:在用户映射选项当中,选择"db_datareader"、"db_datawriter"、"public"三个数据库角色 阅读全文

MS SQL 监控数据/日志文件增长

2013-05-12 22:08 by 潇湘隐者, 1411 阅读, 收藏, 编辑
摘要:前几天,在所有数据库服务器部署了监控磁盘空间的存储过程和作业后(MS SQL 监控磁盘空间告警),今天突然收到了两封告警邮件,好吧,存储规划是一方面,但是,是不是要分析一下是什么原因造成磁盘空间不足的呢?会不会是因为突然暴增的日志文件,抑或是系统业务猛增导致数据量暴增,还是历史数据累计原因....分析总得有数据来支撑吧,但是现在只有那些数据文件的当前大小信息,没有数据文件的历史增长变化信息,所以,今天就想实现这么一个功能,每天(频率可以调整)去收集一下数据文件的信息,放到一个表里面,这样方便我们分析数据文件的增长演变例程,甚至你可以将数据文件的增长幅度和业务变化关联起来分析....那么接下来. 阅读全文

SQL 2005/2008 连接SQL 2000报18456错误

2013-05-09 11:17 by 潇湘隐者, 458 阅读, 收藏, 编辑
摘要:在看文章前,你先看看下面这两个问题,考考你对MSSMS工具的掌握情况:1: SQL 2005/2008 能连接 SQL 2000数据库服务器吗?2: SQL 2000 能连接SQL 2005/2008数据库服务器吗?答案是都可以。实验环境:本机Windows 7 专业版,安装有SQL 2005客户端和 SQL 2008客户端工具,采用Windows 身份认证方式连接公司一台数据库服务器(SQL 操作系统:Windows 2000 服务器,数据库版本:SQL2000 STD),报如下错误,原因是:折腾了许久,参考了网上很多资料,结果最后悲剧性发现这个错误,不是网上所说的原因引起的,而是由于use 阅读全文

MS SQL 监控磁盘空间告警

2013-05-07 23:01 by 潇湘隐者, 2120 阅读, 收藏, 编辑
摘要:这几天突然有个想法:希望能够自动监控、收集数据库服务器的磁盘容量信息,当达到一个阀值后,自动发送告警邮件给DBA,将数据库磁盘详细信息告知DBA,提醒DBA做好存储规划计划,初步的想法是通过作业调用存储过程来实现(每天调用一次),这样避免了我每天每台数据库服务器都上去检查一下,尤其是手头的数据库服务器N多的情况,这样可以避免我每天浪费无谓的时间。如果大家有更好的建议和方法,欢迎指点... 阅读全文

YourSQLDba介绍

2013-05-02 23:22 by 潇湘隐者, 1941 阅读, 收藏, 编辑
摘要:YourSQLDba介绍YourSQLDba是一个法国人写的程序,它是由一系列T-SQL存储过程构成的脚本文件。可以理解成一个组件或安装包,从而简化了在Mircorsoft SQL Server 2005/2008 数据库的安装,部署。它可以提供自动、复杂,非常容易定制的数据库维护管理,从而可以极大的让DBA从繁杂的维护工作中释放出来。这是一个优秀的工具,可以减轻你的工作。也是每个DBA应该努力的方向,可以编写自己的数据库管理维护工具,让你从繁杂的工作中解脱出来。YourSQLDba的官方网站:http://www.grics.qc.ca/yoursqldba/index_en.shtml主要 阅读全文

MS SQL 能否修改实例名称

2013-04-28 18:56 by 潇湘隐者, 3776 阅读, 收藏, 编辑
摘要:前几天研究了了一下修改数据库名称的方式后,今天突然冒出一个问题,MS SQL的命名实例是否也可以修改呢?例如下图,我在本机上安装了一个命名实例GSP,如果我想将其改为GSPS,能行吗? 如果可以,那么该怎么做呢?该如何下手呢,真的不知道怎么做,毕竟以前都没有做过修改命令实例(当然修改计算机名称是另外一回事),先从网上搜索资料吧,结果,搜索到一堆不相关的资料,其实都不是真正的修改命名实例名称,只是修改计算机名称。不过最后搜索到一点有用的信息http://www.itpub.net/thread-1047040-1-1.html, 不过呢,我按照其操作去实现的时候,发现根本行不通。修改sysser 阅读全文

MS SQL监控数据库的DDL操作

2013-04-27 23:35 by 潇湘隐者, 2396 阅读, 收藏, 编辑
摘要:前言: 有时候,一个数据库有多个帐号,包括数据库管理员,开发人员,运维支撑人员等,可能有很多帐号都有比较大的权限,例如DDL操作权限(创建,修改,删除存储过程,创建,修改,删除表等),账户多了,管理起来就会相当麻烦,容易产生混乱,如果数据库管理员不监控数据库架构变更的话,就不知道谁对数据库架构做了啥改动(此处改动仅仅只DDL操作),尤其有时候,有些开发人员可能不按规章制度办事,绕过或忘了通知发布人员或DBA,直接去生产机做一些DDL操作,那么我们就需要对数据库架构某些更改的事件进行监控,如果能够监控并留下证据,这样既可以让DBA或相关管理人员知晓这些变更,有效管理数据库,也可以避免出现问题,. 阅读全文

MS SQL修改数据库名称

2013-04-25 23:13 by 潇湘隐者, 20032 阅读, 收藏, 编辑
摘要:在MS SQL中,如果你想修改某一个数据库的名称,你可以通过下面几种方法实现。 方法一:使用SP_RENAMEDB系统存储过程实现。 语法: sp_renamedb [ @dbname = ] 'old_name' , [ @newname = ] 'new_name' 例子: 我需要将数据库Test_1的名称修改为Test use mastergoexec sp_rename... 阅读全文

MS SQL 迁移数据库文件

2013-04-24 22:56 by 潇湘隐者, 4064 阅读, 收藏, 编辑
摘要:MS SQL 数据库迁移文件,这里说的不是将数据库迁移到另外一台服务器,只是在服务器不同磁盘目录内做迁移。移动数据库文件的情况大致有下面一些: 1: 事先没有规划好,数据库文件或日志文件增长过快,导致某个盘或整个磁盘空间不足,需要移动数据文件或日志文件 2: 纯粹由于业务需求,数据增长过快。 3: 为了更好的IO的性能,需要将数据文件、日志文件分布到不同磁盘,减轻IO压力,提供IO性能。 4:故障恢复。例如,数据库处于可疑模式或因硬件故障而关闭。案例:现在我在数据库实例中有数据库MyAssistant,(假设)由于事先没有规划好,导致数据文件位于E:\DataBase目录下, 我们需要... 阅读全文

MS SQL数据库服务介绍

2013-04-21 20:14 by 潇湘隐者, 2141 阅读, 收藏, 编辑
摘要:服务类型服务是一种在系统后台运行的应用程序。服务通常提供一些核心操作系统功能,MS SQL有下面一些服务。服务类型服务描述SQL Server提供数据的存储、处理和受控访问,并提供快速的事务处理Analysis Server为商业智能应用程序提供联机分析处理(OLAP)和数据挖掘功能。SQL Browser将 SQL Server 连接信息提供给客户端计算机FullText Search 快速创建结构化和半结构化数据的内容和属性ReportServer管理、执行、呈现、计划和传递报表。SQL Agent执行作业、监视 SQL Server、激发警报,以及允许自动执行某些管理任务。SSIS Se 阅读全文

MS SQL 挑战问题

2013-03-28 10:56 by 潇湘隐者, 2472 阅读, 收藏, 编辑
摘要:群里面有位网友提出了这样一个SQL挑战问题(原话不是这样,为了说明问题,我略做调整些): 问题说明如下 有一条个销售报表TEST : 商品 金额 A 1400 B 800 C 790 ... ... 现在有这样一个需求(要写一个SQL取出如下数据):先按销售金额倒叙排序,然后从这个报表取出前N条记录,并且这N条记录的销售金额之和是总金额的80%(<= 80%), 80%将作为... 阅读全文

SQL SERVER 表最小行的一个纠结问题

2011-05-19 00:37 by 潇湘隐者, 2318 阅读, 收藏, 编辑
摘要:昨天一个同事突然问我,说他在SQL 2000数据库创建如下表的时候,突然碰到了下面一条警告信息。SQL脚本和警告信息如下:IFOBJECT_ID(N'Log')ISNULLBEGINCREATETABLELog([Date]DATETIME,[Thread]NVARCHAR(255),[Level]NVARCHAR(50),[Logger]NVARCHAR(255),[Message]NVARCHAR(4000),[Exception]NVARCHAR(4000))ENDELSEPRINT('该表已经存在,请检查数据库');GOWarning:Thetable& 阅读全文

三大数据库对比研究系列——数据类型

2011-04-20 22:10 by 潇湘隐者, 1933 阅读, 收藏, 编辑
摘要:如果你经常在不同类型数据库做开发或学习时,切换数据库写脚本时,不同数据库的数据类型可能会让你有点“晕”。下面我将对Oracle、SQL Server 、MySql三种数据库的数据类型做下例举、比较SQL SERVER数据库暂且以SQL Server 2005为参考SQL SERVER 数据类型分的比较细: 整数数据、 字符数据、 货币数据、日期和时间数据、二进制字符串等 数据类型 所属类型 所占字节 范围 tinyint 精确数字类型 1字节 0 ~ 255 smallint 精确数字类型 2字节 -215(-32768)~215-1(32767) int 精确数字类型 4字节 -231 (- 阅读全文

SQL 2000自定义函数调用GETDATE()报错

2011-03-23 22:38 by 潇湘隐者, 1833 阅读, 收藏, 编辑
摘要:在SQL 2000数据库里的自定义函数中调用GETDATE()时,结果编译时报错,提示错误如下:Invalid use of 'getdate' within a function我给个测试例子如下所示,--================================================================================================-- Author : Kerry-- CreateDate : 2011-03-23-- Description : ... 阅读全文

Access数据库问题锦集

2011-03-13 19:07 by 潇湘隐者, 606 阅读, 收藏, 编辑
摘要:很少采用Access做数据库开发,前段时间,朋友接了一个小单,让我帮忙做后台开发,采用Access + Asp.Net开发,结果在开发过程使用Access碰到不少问题,所以把这些问题总结一下,希望对其它人有些帮助1: Access分页脚本问题使用Access作为数据库开发系统时,页面数据分页的方案有好几种: 1.1 使用DataGridView自带的分页功能. 1.2. 使用SELECTTOP NOT IN 来实现。类似如下所示:SELECT TOP 100 [ID] , [Message] , [CreateDate]FROM ScrollMessageWHERE ID NOT IN ( S 阅读全文

ROW_NUMBER () 与 PARTITION 组合妙用

2010-12-27 18:32 by 潇湘隐者, 670 阅读, 收藏, 编辑
摘要:前几天在一个群里面,有位网友问:在一个Book表里面里有字段AuthorID与Author表关联,现在要求按PublishDate字段倒序排列,列出每个作者的前五本书。要求有没有一条语句搞定的. 当时有个网友说不能一条语句解决问题,说只能用游标或临时表来解决。恰好我前阵子在整报表时遇到过类似的问题,当时解决过这个问题。当时我就告诉他用ROW_NUMBER与PARTITION来解决(前提是SQL SERVER 05或以上版本)。恰好现在有时间。正好把这个整理一下,即是对知识的梳理、巩固、总结,也希望能给其他人一些帮助建表脚本代码代码下面就是解决问题的脚本代码 阅读全文

SQL Server 复制需要有实际的服务器名称才能连接到服务器

2010-12-27 17:21 by 潇湘隐者, 3075 阅读, 收藏, 编辑
摘要:机子由于在捣鼓DAC连接方式时,计算机名被修改了,被改成了kerry,直到最近几天由于计算机改名了,这个潜在的问题(本机数据库只是偶尔那里做实验)终于爆发了:我用连接服务器从其它服务器拷贝数据时报错,错误如下:SQL Server 复制需要有实际的服务器名称才能连接到服务器。不支持通过服务器别名、IP 地址或任何其他备用名称进行连接。请指定实际的服务器名称“xxxx”。 (Replication.Utilities):具体情况如图所示解决方法:从sys.sysservers 查看列 svrname 可以发现不是新的计算机名,问题就出在此处(如图所示)。先用 sp_dropserver 删除服务 阅读全文

T-SQL 编码标准【转帖】

2010-11-21 23:23 by 潇湘隐者, 546 阅读, 收藏, 编辑
摘要:本文转自:http://www.microsoft.com/china/msdn/library/data/sqlserver/sp04l9.mspx?mfr=true可能让人觉得很奇怪,但好像的确没有什么“正式的”T-SQL 编码标准。早在 1999 年末的时候,我惊喜地发现 John Hindmarsh 提出的 SQL Server 7.0 标准,我在 2000 年 2 月的社论中对他的某些建议进行了总结。(2000 年 2 月以及本月的“下载”中都包括了 John 原来的标准。)后来,Ron Talmage 撰写了一系列专栏文章,提出了他对各种“最佳方法”的建议,当然,SQL Serve 阅读全文

SQL SERVER 的模糊查询 LIKE

2010-10-14 17:00 by 潇湘隐者, 4435 阅读, 收藏, 编辑
摘要:今天写个动态脚本,需要把数据库里面包含“USER_"的表删除掉,突然想不起来如何搜索通配字符了,赶紧查查MSDN,整理了下模糊查询的知识点,留着以后查阅用。LIKE模糊查询的通配符 通配符 说明 示例 % 包含零个或多个字符的任意字符串。 WHERE title LIKE '%computer%'将查找在书名中任意位置包含单词"computer"的所有书名。 _(下划线) 任何单个字... 阅读全文

慎用SELECT INTO复制表

2010-10-12 12:18 by 潇湘隐者, 6886 阅读, 收藏, 编辑
摘要:很多时候我们习惯于用SELECT INTO复制一个表或表结构,因为它方便,快捷,而且在某些情况下效率比INSERT INTO 效率要高一些。但是要注意: SELECT INTO 复制表或表结构的时候,只是得到了一个“外壳”,就像克隆人一样,只是得到了一个躯体,个人的意识、回忆都不会克隆的。像原表的主键、外键、约束、触发器、索引都不会被复制过来。这点要注意哦,在某些情况下,没... 阅读全文

SQL Server 2008 打SP1 补丁遇到的问题

2010-09-21 17:05 by 潇湘隐者, 4681 阅读, 收藏, 编辑
摘要:今天在我机器上给SQL Server 2008 打上SP1补丁时,错误不断,郁闷死了。我的机器是XP Server Pack 3, SQL Server 2008 版本:SQL Server 2008 版本Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--... 阅读全文

SQL Server 2008 筛选器报错Microsoft.SqlServer.Management.Sdk.Sfc

2010-09-21 14:53 by 潇湘隐者, 2100 阅读, 收藏, 编辑
摘要:在Microsoft SQL Server 数据库中有时候经常需要筛选表,因为数据中表比较多时,不仅从一堆表里面找一个表比较麻烦,而且客户端从服务器加载这些信息需要一些时间。前两天安装了SQL Server 2008,结果在筛选表时,报如下错误:点击确定后,然后“表(已筛选)”,弹出如下错误提示。这个是因为没有打上SQL Server 2008 Service Pack 1... 阅读全文

SQL Server数据库专用管理员DAC连接方式

2010-09-18 11:38 by 潇湘隐者, 2251 阅读, 收藏, 编辑
摘要:SQL Server 提供了专用管理员链接(DAC)。DAC允许管理员访问运行的服务器以执行诊断函数或Transact—SQL语句,或对服务器上的问题进行故障排除,即使服务器以锁定或在非正常状态下运行。DAC默认情况下只有服务器上可以使用DAC,但是你可以通过 SQLServer 2005 外围应用配置器设置允许远程计算机上的客户端应用程序使用 DAC,如下图所示你也可以通过下面的SP... 阅读全文

查看数据库、表、索引的物理存储情况

2010-09-13 08:18 by 潇湘隐者, 1846 阅读, 收藏, 编辑
摘要:在管理、维护数据库时,经常需要查看数据库文件、日志文件所占用的磁盘空间,以及磁盘还剩下的磁盘空间,你可以通过下面几种方面查看数据库文件详细情况:1: 是通过远程连接(或VPN)连接到数据库服务器,直接去查看。2: 你连接到数据库后,可以通过mssms管理器,选择要查看的数据库,单击右键选择属性。然后选择文件选项,如下图所示。3: 通过SQL命令、脚本查看。3.1: sys.database_files 视图中保存着数据库文件(数据文件、日志文件)等的详细信息SELECT*FROMsys.database_files--通过下面命令,查看系统各磁盘可使用空间。EXECmaster..xp_fix 阅读全文

Microsoft OLE DB Provider for ODBC 组件

2010-09-09 14:51 by 潇湘隐者, 1601 阅读, 收藏, 编辑
摘要:Microsoft OLE DB Provider for ODBC (MSDASQL) 一项允许在 OLEDB 和 ADO(它在内部使用 OLEDB)上构建的应用程序通过 ODBC 驱动程序访问数据源的技术。 MSDASQL 是用于连接到 ODBC(而不是数据库)的 OLEDB 访问接口。 MSDASQL 随 Windows 操作系统提供,Windows Server 2008 和 Window... 阅读全文

数据库表的基本信息,你知道吗?

2010-09-03 12:15 by 潇湘隐者, 4279 阅读, 收藏, 编辑
摘要:用SQL Doc生成数据库字典文档的时候,突然发现有字段描叙(Description)这项内容,以前一直没有注意过,故特意研究了一下,结果越挖越深,就写了这篇文章。以前在做数据库脚本开发时,新建表时,对各个字段的描叙要么是记录在文档里面,要么自己建一个表,来保存这些内容,以便日后开发、维护的方便。其实这些信息完全可以放在数据库自己的系统视图里面。对字段的说明、描述一般都放在系统视图sys.exte... 阅读全文

SQL模板资源管理器,你用了吗?

2010-08-21 21:30 by 潇湘隐者, 1371 阅读, 收藏, 编辑
摘要:SQL Server Management Studio 有个模板资源管理器,不知你用过没有?使用模板创建脚本、自定义模板等功能能大大提高你的工作效率,如果没有尝试过,赶紧去试试吧。很多时候,我们习惯了手写脚本,而不愿意花费精力去研究陌生的工具。你可以在通过下面方式打开模板资源管理器 视图->模板资源管理器; 也可以通过快捷键CTRL + ALT + T打开它。如图所示,你可以看见里面已经包... 阅读全文

如何书写优雅、漂亮的SQL脚本?

2010-08-16 08:40 by 潇湘隐者, 30873 阅读, 收藏, 编辑
摘要:本篇来聊聊如何书写漂亮、整洁、优雅的SQL脚本,下面这些是我个人总结、整理出来的。姑且做个抛砖引玉吧,呵呵,欢迎大家一起来讨论。我们首先来看看一段创建数据表的脚本(如下所示),你是否觉得有什么不妥或是不足呢?如果是你,你怎样书写呢?代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHig... 阅读全文

SQL Server——存储过程

2010-08-14 01:10 by 潇湘隐者, 6034 阅读, 收藏, 编辑
摘要:我想从下面几个方面大概的讲述下存储过程,可能有些知识点是你没有注意的,也可能有些知识点我不知道,欢迎大家指点指点。如有不足,欢迎指教!存储过程概念存储过程优点存储过程的接口存储过程的解析、编译过程存储过程安全性查看存储过程加密、解密存储过程存储过程概念存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(带参... 阅读全文

SQL Server ——动态SQL

2010-08-05 00:06 by 潇湘隐者, 17889 阅读, 收藏, 编辑
摘要:动态SQL:code that is executed dynamically。它一般是根据用户输入或外部条件动态组合的SQL语句块。动态SQL能灵活的发挥SQL强大的功能、方便的解决一些其它方法难以解决的问题。相信使用过动态SQL的人都能体会到它带来的便利,然而动态SQL有时候在执行性能(效率)上面不如静态SQL,而且使用不恰当,往往会在安全方面存在隐患(SQL 注入式攻击)。动态SQL可以通过... 阅读全文

重温SQL——行转列,列转行

2010-07-28 08:40 by 潇湘隐者, 103128 阅读, 收藏, 编辑
摘要:行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单、更具可读性。下面我们通过几个简单的例子来介绍一下列转行、行转列问题。 我们首先先通过一个老生常谈的例子,学生成绩表(下面简化了些)来形象了解下行转列CREATE TABLE [StudentScores]( [UserName] NVARCHAR(... 阅读全文

DATEDIFF函数小问题

2010-07-27 08:20 by 潇湘隐者, 1001 阅读, 收藏, 编辑
摘要:DATEDIFF函数语法如下DATEDIFF( datepart , startdate , enddate ),返回指定的 startdate 和 enddate 之间所跨的指定 datepart 边界的计数(带符号的整数)。下面来说说我碰到的这个问题。用户表里user里面有个字段Create_Time记录用户注册日期,Last_Login_Time 记录用户最后登录的时间,要统计注册用户在注册... 阅读全文

动态SQL应用小列子

2010-07-21 11:40 by 潇湘隐者, 766 阅读, 收藏, 编辑
摘要:呵呵,几乎成标题党了,今天要写个脚本查询7天内所有有登录玩家的数据,要求按注册日期统计,虽然是个简单的问题,但是关键是用户表有30个,分别是user0, user1......到user29 ,光是把它们UNION ALL起来,我都够郁闷了,你想象下脚本有多长吧,一大堆堆在那儿,光是复制都让你难以忍受。[代码]呵呵,下面是我用动态SQL 改写的,呵呵,简洁多了[代码]这里得提提CHAR(10)这个... 阅读全文

SQL性能调优实践——SELECT COUNT

2010-07-16 10:34 by 潇湘隐者, 25996 阅读, 收藏, 编辑
摘要:最近想深入学习SQL,在网上搜索到一些SQL 优化的资料要么是张冠李戴,Oracle 优化的资料硬是弄成啦MS SQL 优化的资料,而且被很多人转载,收藏,有些要么有些含糊不清,好像是那么回事,也没经过验证,实践出真知!下面是我对SELECT COUNT(*), SELECT COUNT(1),SELECT COUNT (0), SELECT COUNT(Field)等孰优孰劣的测试结果,如果测试... 阅读全文

MS SQL开发命名规则

2010-07-13 17:25 by 潇湘隐者, 1918 阅读, 收藏, 编辑
摘要:下面的SQL开发命名规则是我自己开发时总结、整理出来的,以后的开发过程中将不断完善、修改。也希望各位网友指点、批判。 纲领: SQL 语句关键字全部大写, 命名规则建议使用Pascal Case 或 每个单词使用下划线_隔开,不建议全部使用小写。尽量少使用特殊字符比如数字、空格等 使用英文或英文缩写,不建议使用拼音。尽量见名知意。 1: 数据库名命... 阅读全文

XP系统无法运行SQL Server 2005企业版

2010-04-12 21:59 by 潇湘隐者, 2280 阅读, 收藏, 编辑
摘要:一直都是在Windows 2003上面做开发的,直到最近换了XP系统,装了个SQL Server 2005 企业版本,装的时候就觉得比较怪异,发现有些组件都安装不了,印象中在Windows 2003上面安装没有这个现象,安装完后,打开SQL Server Management器,发现打开服务器名称也找不到对应的实例 于是我打开SQL Server 2005外围应用配置器,点击“服务和连接的外围应用配置器”出现如下图错误。刚开始我以为是SQL Server 2005有些组件安装不成功或是配置引起的错误,于是在网上查找这个错误的原因,结果发现有位网友在这篇帖子里有提及和我比较类似的情况, htt. 阅读全文

数据查询表,列名对比

2010-01-19 09:28 by 潇湘隐者, 952 阅读, 收藏, 编辑
摘要:在数据库里创建、删除表时,往往需要判断这个表是否存在; 有时候在修改表字段,比如添加、删除字段时也需要事先判断该字段是否存在,这往往有对应的脚本或操作,不同的数据库有不同的相关的对象、脚本。下面我们拿Access 2003 , SQL Server 2005 , Oracle 10i来分析对比一下吧。 一:在SQL Server 2005 里查询某个表是否存在以及查询某个表有哪些字段的... 阅读全文

MS SQL 建表SQL的脚本

2009-08-29 03:22 by 潇湘隐者, 4200 阅读, 收藏, 编辑
摘要:数据库里新建一个表的方式比较多,可以在对象资源管理器手动新建一个表,这样的建表方式比较方便、直观。但是如果该表要在几个数据库(开发环境数据库,测试环境数据库、正式系统数据库等)里新建的话,这时反而不如用脚本处理,这样会方便得多。尤其是在创建数据库时要新建上百个表时,那种手工建表方式想都不敢想。这里主要讨论、收集使用脚本来新建表的写法。如有不妥或不对的地方,希望大家多多指教,更正我的错误。下面来看看第一种SQL写法Code SnippetCREATE TABLE UserContactPerson(IDINT PRIMARY KEY,UserIDINT,ContactPersonIDINT)这. 阅读全文