自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zjcxc(邹建)的Blog - SQL Server

引用或者转载本BLOG的文章请注明原作者和出处,并保留原文章中的版权信息。谢谢!

原创 说说阿里云RDS MySQL的一些缺点

RDS MySQL用了有一小段时间了,来说一说它的缺点(优点是不用我提的,它的文档、客服、技术支持人员都会告诉您) 首先说说它对比原版所做的优化改进,说到这方面的时候,应该会有很多人说,阿里的技术牛,他在这方面肯定做了很多优化,用RDS一定比官方的跑得快,但事实上,如果你真正看过它与官方版本的功能对比,你会发现,RDS所列出来的功能优势,是体现在外部功能扩展上,核心的优化并没有提(也许你会认为它是谦虚),但事实上,我们拿了一些常见的操作,在RDS与官方版本之间做对比,我们并...

2020-07-25 16:38:14 103 1

原创 通用性能指标监控系统打造完工

服务器性能指标监控通常由IT负责,所以之前并没有打造自己的性能指标监控的考虑,最近需要做MongoDB的性能指标监控,也考虑到直接使用IT的监控系统的诸多不使得的地方,所以在这次花了些时间,直接打造了一款通用的性能指标监控系统。 整个监控系统分成三部分:数据采集、监控报表、监控报警数据采集: 数据采集使用集中采集方式,在一台服务器上采集所有需要监控的服务器信息,使用自己开发的程序,调用标准的命令(Powershell、sqlcmd、mongo、mysql、plink)做数据采...

2020-07-22 20:58:55 39

原创 记录一下这个有点绕的数据分配查询

在论坛上看到这样一个需求,有两个表,数据分别如下 表A (id, name, value ) (1, ‘A’, 2000), (2, ‘A’, 2000) 表B (id, a_name, name, value) (1, ‘A’, ‘A1’, 1000), (2, ‘A’, ‘A2’, 2000), (3, ‘A’, ‘A3’, 3000) 要求根据表A的 value 值,查询...

2018-08-25 13:20:35 909 3

原创 忘记 SQL Server 管理员密码的处理

如果忘记 SQL Server 管理员密码,可以使用下面的方式处理 1. 使用 SQL Server 服务器计算机本地 Administrators 组的任何成员登录到 SQL Server 服务器 2. 确定忘记管理员密码的 SQL Server 服务 可以在服务(services.msc)里面查看,或者使用下面的 Powershell 命令 Get-Service | ? Displ

2017-12-23 11:56:23 8797

原创 MySQL中单句实现无限层次父子关系查询

在 SQL Server 中,使用 CTE 表达式很容易做到无限层次父子关系查询;在不支持CTE表达式的版本中,借助函数递归也可以轻松实现。 在 MySQL 中,这个需求的实例稍显复杂, MySQL 中没有支持递归的查询,没有表值函数,函数不支持递归,所以通常都是用循环实现,显得比较别扭。今天看到一个用单条语句实现的递归查询,想法独特,分享一下。表结构和数据CREATE TABLE table1(

2017-12-16 14:08:28 14930 15

原创 一个子查询引发的血案

最近再次看到一个帖子,说使用类似如下子查询删除数据,结果发现所有的数据都被删除了 DELETE FROM a WHERE id in (  SELECT id  FROM b  ) 粗看这是一个没有任何毛病的删除操作,只会删除 a,b 表 id 匹配的记录。但实际上这个查询暗藏杀机,如果 b 表恰好有数据,并且b表没有字段id,这个操作的结棍是什么? 很显然,如果b表没有id字段,并且有

2017-12-16 13:54:34 1510

原创 带进度的SQL Server FileStream存取

SQL Server FileStream 功能的详细参考联机帮助设计和实现 FILESTREAM 存储 这里只是把使用 Win32 管理 FILESTREAM 数据的代码调整了一下,实现带进度的存取,这对于存取较大的文件比较有意义 要使用FileStream,首先要在 SQL Server配置管理器中打开FileStream选项:SQL Server配置管理器–SQL Server服务

2015-12-08 13:42:17 7650 2

原创 也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强 (续)

在上一篇文章也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强 中,我提到了隐式数据类型转换增加对于数据分布很不平均的表,评估的数据行数与实际值有很大出入的问题,进一步测试之后,我发现这种评估不准确性应该确实与猜测的一样,它使用了变量的评估方式

2015-07-03 16:58:57 6489

原创 也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强

在 SQL Server 查询中,不经意思的隐匿数据类型转换可能导致极大的查询性能问题,在 SQL Server 2008 及之后的版本中,这种操作做了增强,但还是经常遇到有问题的时候

2015-07-02 17:49:32 6737

原创 Error: 7884, Severity: 20, State: 1

背景:         程序异常中断“TCPProvider, error: 0 - An existing connection was forcibly closed by the remotehost.”,手工执行查询没有问题,不过执行时间要几十秒。Trace程序的执行,发现要数十分钟,经了解,原因在于程序使用了SqlDataReader读取数据,并且在读取的过程中进行了一系列数据处理,

2014-11-21 16:31:57 9045

原创 初步了解更新锁(U)与排它锁(X)

一直没有认真觉察UPDATE操作的锁,最近在MSDN上看到一个问题,询问堆表更新的死锁问题,问题很简单,有类似这样的表及数据:CREATE TABLE dbo.tb(     c1 int,     c2 char(10),     c3 varchar(10));GODECLARE @id int;SET @id = 0;WHILE @id 5BEGIN;     SET

2014-05-28 17:13:46 18208 8

原创 无语,遭遇: Error: 605, Severity: 21, State: 3

最近遇到一个严重错误Error: 605, Severity: 21, State: 3.Attempt to fetch logical page (1:xxxxx) in database 2 failed. It belongs to allocation unit xxxxxnot to xxxxx.严重级别 21, 看起来非常吓人,根据联机帮助对该错误的描述说明http://techne

2013-12-09 17:10:42 10010 2

原创 如何使 SQL Server高效 -- 疑难(ITPUT 讨论汇总)

4、     在您的SQL Server使用过程中,有哪些令您非常困惑的性能问题 ?讨论汇总——综合l  Tempdb方面的问题a)  行级和事务级的快照都存储在TEMPDB中 (不知架构为什么设计成这样),UNDO \ REDO 自然不太方便b)  tempdb放了太多的功能,带来性能瓶颈个人观点: tempdb感觉确实是个瓶颈。每个版本几乎都会往tempdb里面多放一些东西,tempdb所承担

2013-05-27 16:03:16 7189 1

原创 如何使 SQL Server高效 -- 程序设计(ITPUT 讨论汇总)

3、     在设计数据库操作程序上,您认为应该注意哪些事项,以确保能够有效地使用数据库? 讨论汇总l  尽量缩小读写操作范围和可重复性, 可采用临时表或表变量等中间过程过渡l  缓存。在程序端缓存常用数据l  )静态化。对应较稳定的数据,可以将它静态化存放,避免数据库访问l  )参数化,将访问语句参数化或改为存储过程l  连接池,控制访问并并发数l  批量处理。将数据修改缓存一段时间后再一起写入

2013-05-27 15:53:48 9313

原创 如何使 SQL Server高效 --T-SQL(ITPUT 讨论汇总)

2、      您认为在T-SQL编写(包括存储过程、函数和视图)上,哪些因素会影响SQL Server效率?讨论汇总——索引使用l  没有索引或者没有用到索引、I/O吞吐量小、没有创建计算列导致查询不优化、锁或者死锁、查询语句不够优化等l  对大表而言。那些不走索引的语句,错误scan的语句,还有那些强制使用HINT的语句,可能会因为时间的推移,影响了SQL Server对最优计划的生成l  避

2013-05-27 15:47:54 12671 1

原创 如何使 SQL Server高效 -- 设计(ITPUT 讨论汇总)

1、     您认为在设计SQL Server对象时,主要会考虑哪些因素来避免出现性能问题? 讨论汇总——总体设计l  应该根据系统架构类型或主要操作进行有针对性的设计: 如 OLTP 、OLAP 、ETL 等l  逻辑清晰,使应用程序更便于开发。有良好的扩展性和维护性,减少数据冗余等l  在DB管理上,得从CPU、HDD配置着手,在DB开发上,从业务流程、逻辑、功能、DB结构、SQL指令准确设计

2013-05-27 15:41:22 11085

原创 为SSRS配置SMTP服务器身份验证

在SQL Server Reporting Services中,可以通过“Reporting Services 配置管理器”配置发送邮件的SMTP服务器,但无法显式配置登录SMTP服务器的用户名和密码,登录SMTP服务器使用的是启动Reporting Services服务的帐号。所以如果Reporting Services与SMTP在同一个域,那么可以把登录SMTP的域用户设置为Reporting

2013-03-20 16:46:57 8722 1

原创 扩展 sp_helpindex, 增加 INCLUDE 和筛选索引的筛选条件

SQL Server的系统存储过程似乎没有被重视,新版本的一些特性似乎没有在系统存储过程中体现出来,着实是一件比较郁闷的事。         下面的这个存储过程是对sp_helpindex的扩展,扩展增加两个索引的新特性信息:包含列和列筛选。使用方法和 sp_helpindex 一样,感兴趣的可以试一下。USE master;GO/*-- sp_helpindex 扩展--------------

2013-02-19 13:38:53 6778

原创 在 xml.value 中, XPath中使用 text() 函数的重要性

被多次问到,为什么在DBA的规范中,会要求在解析xml值时,value 方法的 XPath 中要加 text() 函数,看起来似乎加与不加得到的结果都是一样的。    下面的测试脚本说明使用 text() 的区别,以及为什么要求使用它。DECLARE    @xml xmlSET @xml = N'b    c';SELECT  @xml.value('(/a)[1]', 'varchar(10)

2012-11-20 17:38:12 10514 1

原创 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题

复制存储过程执行应用于事务复制中,当在发布服务器上执行配置的存储过程时,存储过程导致的数据变更不会做为多步骤事务发送到订阅服务器,而仅仅是把执行存储过程的命令发送到订阅服务器。         比如,如果你为一个100万条记录的表增加了一个字段,并且初始化为一个值,如果不使用复制存储过程执行的话,那么这个操作就会形成100万个更新操作发送到订阅服务器,订阅服务器将将进行100万次更新,这个操作通常

2012-11-02 18:06:54 6802

原创 XSL中实现用户筛选

在 XSL 中实现用户筛选,折腾了好久,总算是搞定了功能需求:有如下 xml ,拟做一个 XSL 文件做解析,解析的效果是在解析后的页面下,有个DropdownList ,它列出所有的Group/@name值,允许用户通过选择来筛选XSL最终展示出来的数据xml-stylesheettype="text/xsl" href="filter.xsl"?>root>groupname="group1"

2012-09-06 13:23:24 6788

原创 在 SQL Server 中使用 Windows 用户组的一些诡异问题

最近,在SQLServer中使用Windows用户组时,发现了一些比较诡异的问题。SQL Server版本:SQL Server 2008 R2问题1:Login failed for user 'xx\xx'操作描述:         在SQL Server中添加一个Windows用户,并且使用该用户连接SQLServer(Windows身份验证),登录失败,日志中出现如

2012-04-17 17:40:09 10618 4

原创 配置 SharePoint 2010 使用本机默认 SQL Server 实例

         SharePoint 2010的安裝向导,仅具有极为有限的定制功能,里面有两种模式:n  “独立”模式,会安装SQL Server 2008 Express做为数据库服务。不具有任何定制选项;n  “服务器场”模式可以定制安装目录,里面的“独立”项和“独立”模式一样;“完整”模式不安装SQL Server Express,可以在安装完成后的配置向导中配置数据库服务

2011-06-08 15:53:00 14710 6

原创 锁不住的查询

环境: SQL Server 2005 or 2008最近在处理一个锁的问题时,发现一个比较郁闷的事,使用X锁居然无法锁住查询,模拟这个问题,可以使用如下T-SQL脚本来建立测试环境。USE master;GO IF @@TRANCOUNT > 0    ROLLBACK TRAN;GO -- ================================

2009-07-27 10:27:00 15038 51

原创 处理SQL 2008/08 中的OUTPUT与CHECK约束冲突的问题

         在SQL Server 2005中,新增的OUTPUT子句极大地提高了数据转移的方便性,不过很遗憾的是, OUTPUT子句的输出表不能包含启用状态的CHECK约束。这未免让人觉得很不爽。不过,在实际使用过程中,却发现了一个很奇怪的问题,某些具有启用状态的CHECK约束的表确实无法用于OUTPUT子句,而某些表却是可以的,经过对比,发现了这个很奇怪现象的原因,使得可以把有启用状态的

2009-04-22 05:06:00 10096 4

原创 初探 SQL Server 2008 中的更改跟踪与变更数据捕获

1                概述1.1        更改跟踪1.2        变更数据捕获1.3        比较更改跟踪和变更数据捕获2                使用2.1        更改跟踪2.2        变更数据捕获 1         概述“更改跟踪”和“变更数据捕获”捕获和记录用户表的DML更改(插入、更新和删除操作),为

2009-03-10 11:02:00 14709 5

原创 使用更改跟踪实现数据同步

 SQL Server 2008 引入了更改跟踪,这是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制。通常,若要使应用程序能够查询对数据库中的数据所做的更改和访问与这些更改相关的信息,应用程序开发人员必须实现自定义更改跟踪机制。创建这些机制通常涉及多项工作,并且常常涉及使用触发器、timestamp 列和新表组合来存储跟踪信息,同时还会涉及使用自定义清除过程。通过更改跟踪,可

2009-02-23 06:59:00 9249 6

原创 误删除SSIS中的“Maintenance Plans”文件夹的恢复

在SQL Server 2005/2008中,维护计划的功能通过SSIS包来完成。如果不小心在SSIS管理中删除了"Maintenance Plans"文件夹,则在SQL Server中建立维护计划的时候会出现问题,如下图所示。 在Management studio中创建误删除的"Maintenance Plans"文件夹,如下图所示。 建立好"Maintenance Plan

2009-02-14 05:09:00 6751

原创 令人郁闷的“事务中的变量赋值错误”

           事务中的变量(包括表变量)的操作是不受事务控制的。但是反过来,事务中的变量操作失败,却会导致事务提交失败,这个有点让人郁闷。         下面的脚本演示这个问题。示例演示分拆以逗号分隔的 @ids 中的每个 id, 如果这个 id 是数字(int型),则做后面的处理;如果不是数字(赋值失败,进入CATCH块),则跳过这个id,处理下一个。整个处理在一个事务中进行。

2008-12-28 02:56:00 8985 2

原创 在 SQL Server 2005/2008 中,使用 Gmail 帐号配置数据库邮件功能

下面的脚本演示,在 SQL Server 2005/2008 中,使用 Gmail 帐号配置数据库邮件功能 -- =================================================-- 启用数据库邮件功能-- =================================================EXEC sys.sp_config

2008-12-13 14:12:00 8095 11

原创 将指定的表/视图中的数据导出为 html 文件

IF OBJECT_ID(Ndbo.p_ExportHtml) IS NOT NULL    DROP PROC dbo.p_ExportHtml;GO /*-- == 导出表/视图中的数据为html 文件====================== 此存储过程用于将指定的表/视图中的数据导出为 html 文件由于是使用存储过程, 因此文件目录基于 sql se

2008-11-10 03:45:00 9127 18

原创 将当前数据库中所有表的smalldatetime 列改为nvarchar(20)

-- 将当前数据库中, 所有表的smalldatetime 列改为nvarchar(20)-- 如果列上有索引/默认值之类的依赖项, 则无法修改EXEC sp_msforeachtable    @command1 = NDECLARE CUR CURSOR LOCALFORSELECT     NALTER TABLE ? ALTER COLUMN   

2008-11-07 11:30:00 6347 2

原创 如何在不提升用户权限的情况下,使普通用户执行xp_cmdshell存储过程

 环境需求:SQL Server 2005 及之后的版本 背景xp_cmdshell是一个很危险的存储过程,通过它,可以访问操作系统的资源,但有时候我们也需要使用它来实现一些特殊的处理。从安全的角度来考虑,禁用xp_cmdsehll是最保险的,即使为了特殊目的而要求使用它,也最好能够编写一些实现这个特殊目的的用户存储过程,只在这个用户存储过程中使用xp_cmdshell,而

2008-09-19 11:15:00 11383 7

原创 如何在不提升用户权限的情况下,使普通用户执行sp_OACreate存储过程

环境需求:SQL Server 2005 及之后的版本 背景在论坛上遇到一个问题,询问如何使用一个普通用户调用一个存储过程,这个存储过程使用了sp_OACreate这一系列存储过程来执行一些非常规的任务。当然,前提是普通用户只有调用这个存储过程的时候才能获得执行sp_OACreate的权限。最初的时候也没有仔细考虑,心想,sp_OACreate需要具有sysadmin固定服务器角色

2008-09-16 11:07:00 9764 2

原创 安装SQL Server 2008 及 VS 2008

SQL Server 2008 正式发布了,在中文系统下安装中文版时,始终有些问题,今天狠心把操作系统一齐重新装了,结合之前安装时碰到的问题的解决经验,这次总算是一次性安装成功。环境:64位环境(32位环境不一定有问题,英文Windows XP下安装英文版没有本文中提到的问题)Windows 2008 SQL Server 2008Visual Studio 2008 +

2008-08-31 11:09:00 19993 10

原创 在 VMWare 中配置 SQL Server 2005 N + 1 群集 (五) SQL Server 群集维护

5.        SQL Server群集维护对于SQL Server群集,其维护主要在于调整SQL Server配置及添加或删除群集结点方面。5.1      调整SQL Server配置对于SQL Server配置的调整,应该通过SQL Server的配置管理器来完成(StartàProgramsà Microsoft SQL Server 2005à Configurati

2008-06-25 13:22:00 10243 12

原创 在 VMWare 中配置 SQL Server 2005 N + 1 群集 (四) SQL Server 安装

4.        SQL Server安装一台服务器上,只能安装一个SQL Server默认实例,在群集中安装SQL Server也有此限制。本示例需要提供两个SQL Server实例,故不考虑安装默认实例。两个实例都安装为命名实例。4.1      安装第一个SQL Server实例(SQL01)SQL Server安装可以在任何一个群集中的结点上进行安装。示例中选择“SQLS

2008-06-25 13:00:00 16471 4

原创 在 VMWare 中配置 SQL Server 2005 N + 1 群集 (三) 群集安装

3.        群集安装群集的安装包括Domain的安装(DNS和域的创建)、群集的创建及群集结点添加三部分。3.1      DomainDomain具有DNS和域两大角色。3.1.1        安装和配置DNS3.1.1.1安装DNS打开添加/删除程序(Control PanelàAdd  or Remove Programs),在随后出现的“Add  or

2008-06-25 12:42:00 18361 2

原创 在 VMWare 中配置 SQL Server 2005 N + 1 群集 (二) 在Vmware配置虚拟机

2.        在Vmware配置虚拟机所以的OS均使用Windows Server 2003企业版,故可以创建一台虚拟机,完成基本的配置和安装,最后使用Sysprep工具抽取SID后关机并做一个快照,然后克隆出另外4台虚拟机(也可以不使用Sysprep工具,直接克隆,然后使用newsid这个小工具重新生成SID并修改计算机名)。2.1      创建第一台虚拟机(模板机)VM

2008-06-25 11:50:00 22574 2

原创 在 VMWare 中配置 SQL Server 2005 N + 1 群集 (一) 环境

 1.        实验环境Vmware Server 1.0.6SQL Server 2005 企业版Host OS: Windows Server 2003 企业版Guest OS:Windows Server 2003 企业版1.1      背景所谓N+1的SQL Server群集,主要是以节约成本为出发点的一种群集方案。一般的SQL Server群集,每个S

2008-06-25 11:08:00 15780 13

提示
确定要删除当前文章?
取消 删除