代码改变世界

SQL Server 自动化管理分区设计方案(图解)

2011-07-21 14:49 by 听风吹雨, 5179 阅读, 7 推荐, 收藏, 编辑
摘要: 一、设计说明设计这个自动化的目的是想要交替、重复地使用固定的几个分区(分区编号01~05)来保存数据,当最后一个分区就是快满的时候,我们会把最旧数据的分区的数据清空出分区,新数据就可以使用老分区空间了。应用这个自动化管理分区的环境是有些限制的,其一:分区的数据是呈现递增的,比如分区字段是自增Id值,或者是以日期作为分区;其二:可以接受历史数据被移除分区表带来的问题。其三:一天进库的数量不应大于分区管理表 阅读全文

SQL Server 维护管理系列(文章索引)

2011-07-15 14:52 by 听风吹雨, 3106 阅读, 6 推荐, 收藏, 编辑
摘要:一.前言(Introduction)数据库的维护其实包括很多方面,用户权限、数据备份等,这方面的积累也是必不可少的,所以这里把一些常用的的维护进行一些总结,这些文章的特点就是我会使用比较多的图片进行说明,大家看起来会比较直观。 该系列还在完善中,欢迎大家指出还缺少些什么内容的维护,我会在后面的文章中陆续补充的。二.系列文章索引(Catalog)SQL Server 数据库帐号密码生成SQL Server 维护计划实现数据库备份SQL Server 备份和还原全攻略SQL Server 数据库迁移偏方SQL Server 数据库最小宕机迁移方案SQL Server 数据库服务器高性能设置SQL 阅读全文

SQL Server 2005 控制用户权限访问表

2011-07-14 18:11 by 听风吹雨, 37930 阅读, 14 推荐, 收藏, 编辑
摘要: 一、需求在管理数据库过程中,我们经常需要控制某个用户访问数据库的权限,比如只需要给这个用户访问某个表的权限,甚至是CRUD的权限,更小粒度的还可以去到某几个字段的访问权限。写这篇文章就是说明下这个操作过程。其实这只是SQL Server权限管理很简单的一小块,有些地方并没有深入理解和讲述,只是希望对一些刚入门的童鞋有帮助,其它大侠就当是:我当堂吓一跳,然后得啖笑。(赌圣)二、操作步骤1. 首先进入数据库级别的【安全性】-【登录名】-【新建登录名】(图1:新建登录名)2. 在【常规】选项卡中,如下图所示,创建登陆名 阅读全文

SQL Server 表分区实战系列(文章索引)

2011-07-01 15:45 by 听风吹雨, 20886 阅读, 22 推荐, 收藏, 编辑
摘要: 前段时间在忙数据库的表分区,经常会去上网找资料,但是在找到都是测试表分区的文章,没有实战经验的,所以在我把表分区运用到实际项目中的时候遇到了很多问题。 比如:如何确认分区字段?分区字段与聚集索引的区别与联系?如何存储分区索引?MSDN说交换分区是以秒计算,但执行40G交换分区超时?如何解决分区不断增长的问题?自动化交换分区的陷阱? 这些问题都只能自己在实战中摸索答案,后来我写了几篇关于这些问题的博文,希望对那些需要实战帮助的童鞋有一点提示和帮助。希望大家拍砖。 阅读全文

SQL Server 备份和还原全攻略

2011-06-29 17:03 by 听风吹雨, 70532 阅读, 19 推荐, 收藏, 编辑
摘要:一、知识点完全备份: 备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件。(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份,换言之,清除存档属性)。完全备份也叫完整备份。差异备份: 差异备份是针对完全备份:备份上一次的完全备份后发生变化的所有文件。(差异备份过程中,只备份有标记的那些选中的文件和文件夹。它不清除标记,即:备份后不标记为已备份文件,换言之,不清除存档属性)。增量备份: 增量备份是针对于上一次备份(无论是哪种备份):备份上一次备份后,所有发生变化的文件。(增量备份过程中,只备份有标记的选中的文件和文件夹,它清除标记,即:备份后标记文件,换言之,清除存档属 阅读全文

SQL Server 表分区注意事项

2011-05-31 17:51 by 听风吹雨, 9603 阅读, 12 推荐, 收藏, 编辑
摘要: 一、表分区文章索引SQL Server 合并(删除)分区解惑SQL Server 2005 分区模板与实例SQL Server 动态生成分区脚本SQL Server 2005 自动化删除表分区设计方案二、目的这段时间,在SQL Server的生产环境中尝试了不同方式的表分区,积累了一些这方面的经验,这里就表分区的一些注意事项做些记录。三、注意事项1. 表分区的边界值问题,在使用Left和Right的时候需要注意,特别是在时间分割上需要特别注意,通常情况下,以00:00:00.000是最可靠的 阅读全文

SQL Server 数据库迁移偏方

2011-04-28 17:51 by 听风吹雨, 10245 阅读, 2 推荐, 收藏, 编辑
摘要:一、目的之前在博文SQL Server 数据库最小宕机迁移方案中提到了使用了完全备份+差异备份的功能完成了数据库的转移,但是这个方法在遇到了700多G的数据时显然不适用,所以这篇中我是如何迁移700G的数据库到新的服务器的。二、分析与设计思路(一)环境描述我们的数据库使用了SQL Server 2005的,部署在Windows Server 2003 x86位操作系统上,有一个表占了这个数据库大部分的空间。面对上面的情况,我们的数据库压力比较大了,所以我们打算在同一个集群中找另外一台机器,转移这个数据库的数据过去,通过设置新服务器的一些参数来达到优化这个数据库的目的。(二)数据分析在拿到一个数 阅读全文

SQL Server 数据库最小宕机迁移方案

2011-03-30 17:44 by 听风吹雨, 8596 阅读, 9 推荐, 收藏, 编辑
摘要:一、目的在做SQL Server数据库维护的时候,当上司要求我们把几十G的数据文件搬动到其它服务器,并且要求最小宕机时间的时候,我们有没什么方案可以做到这些要求呢?在这里我们假设这两台机器并不是在一个机房上,这样看起来我们的解决方案才更有意义,如果你那么好运这两台机器在同一个局域网,那么恭喜你,你可以多很多的方案可以做到。二、分析与设计思路其实我们假设的环境有两个特点:第一个是数据库文件比较大;第二个就是我们的传送文件的速度可能会比较慢。也许这传送速度我们是没有办法了,但是我们可以就从文件的大小这个问题出发,结合SQL Server的特性,这样就有了下面的解决方案了。为了使宕机时间最短,我们这 阅读全文

SQL Server 2005 自动化删除表分区设计方案

2011-02-25 17:31 by 听风吹雨, 6949 阅读, 5 推荐, 收藏, 编辑
摘要: 一、目的在前面的文章中我已经介绍了SQL Server合并(删除)分区解惑 和SQL Server 2005 分区模板与实例 和SQL Server 动态生成分区脚本,这篇文章就是在上面3篇文章衍生出来的。我们的服务器的数据已经有了800G,并且每天进数据大概有120W条记录(数据空间大概为7G),而服务器现在已经没有太多的磁盘空间了,面对这样的问题,一般都是使用交换表分区来快速删除数据,并使用之前的分区来存放新进的数据,如果每次都人工的话就太麻烦了 阅读全文

SQL Server 动态生成分区脚本

2011-01-14 14:48 by 听风吹雨, 12837 阅读, 10 推荐, 收藏, 编辑
摘要: 一、前言前段时间使用表分区比较多,虽然已经写了SQL Server 合并(删除)分区解惑、SQL Server 2005 分区模板与实例,但是在实践中一直感觉修改SQL脚本的时间比较多,一直想抽个时间来把分区脚本进行动态化,今天终于付之于行动了。需要说明的一点,下面的脚本并不能满足所有情况,用户可以根据自己的需要进行相应的调整,应该可以满足你的需求的。在SQL Server 2005中只能通过SQL脚本来创建表分区,而在SQL Server 2008的SSMS中已经提供了操作界面进行表分区 阅读全文

SQL Server 2005 分区模板与实例

2010-12-31 16:23 by 听风吹雨, 8156 阅读, 14 推荐, 收藏, 编辑
摘要: 一、场景这一段时间使用SQL Server 2005 对几个系统进行表分区,这几个系统都有一些特点,比如数据库某张表持续增长,给数据库带来了很大的压力。现在假如提供一台新的服务器,那么我们应该如何规划这个数据库呢?应该如何进行最小宕机时间的数据库转移呢?如果规划数据库呢?二、环境准备要搭建一个好的系统,首先要从硬件和操作系统出发,好的设置和好的规划是高性能的前提,下面我就来说说自己的一些看法,欢迎大家提出异议;1) 对磁盘做RAID0(比如3*300G) 阅读全文

SQL Server datetime数据类型设计、优化误区

2010-11-26 10:58 by 听风吹雨, 19112 阅读, 10 推荐, 收藏, 编辑
摘要:一、场景在SQL Server 2005中,有一个表TestDatetime,其中Dates这个字段的数据类型是datetime,如果你看到表的记录如下图所示,你最先想到的是什么呢?(图1:数据列表)你看到这些数据,是不是觉得这样的设计既浪费了存储空间,又使得这个列的索引增大,查询起来更慢,你也想使用一些其它的数据类型来代替这个datetime吧? 其实大家都是这么想的,这个方向是100%正确的,但是在写这篇文章以前,我进入了两个误区:(如果你中了下面的两个误区,那么请你看看这篇文章吧。)误区一: 把Dates字段的datetime数据类型换成smalldatetime,这样数据就由:‘200 阅读全文

SQL Server数据库服务器高性能设置

2010-11-16 11:38 by 听风吹雨, 11150 阅读, 7 推荐, 收藏, 编辑
摘要:数据库服务器主要用于存储、查询、检索企业内部的信息,因此需要搭配专用的数据库系统,对服务器的兼容性、可靠性和稳定性等方面都有很高的要求。 下面是进行笼统的技术点说明,为的是让大家有一个整体的概念,如果想深入可以逐个击破; 希望大家能一起补充完善。一、服务器规划:1. 使用64位的操作系统,最好是2008的;(Windows Server 2008 64位)2. 使用64位的数据库程序,最好是2008的;(SQL Server 2008 64位)3. 使用千兆网卡;4. 使用硬RAID5;5. 使用64K的簇大小;6. LUN0用作系统盘,LUN1用作程序(主要是数据库程序)安装盘,LUN2.. 阅读全文

远程桌面连接保存为rdp文件

2010-11-16 11:24 by 听风吹雨, 4474 阅读, 1 推荐, 收藏, 编辑
摘要:一、作用在做远程服务器维护中如果我们需要维护很多的服务器,而且每个服务器的密码有可能都不一样,那么我们就需要为每个服务器都记住登陆名和密码吗?虽然这是最安全的办法,但是我们也有偷懒的办法,那就是把登陆信息保存为一个rdp文件,只要简简单单双击鼠标就能进入服务器了。(如果是在维护公司局域网的服务器,rdp更是必不可少) 下面就来讲讲如何把远程桌面连接保存为一个rdp文件。二、步骤步骤1:打开远程桌面... 阅读全文

SQL Server 合并(删除)分区解惑

2010-11-05 16:33 by 听风吹雨, 14586 阅读, 13 推荐, 收藏, 编辑
摘要: 一、准备在SQL Server 2005版本之后就有了表分区的概念与应用,在分区操作里面有一个叫做合并分区的功能,也被称为删除分区。分区所处的文件组和文件是不会被删除的,只会对数据进行转移合并。合并分区时需要注意所带来的IO问题。合并分区常见情景:发现某个分区的数据很少,为了方便管理可以考虑合并分区。需要进行统计、四则运算的时候也可以考虑合并分区,这种情形下并没有对比合并与分区之间的性能,如果某位童鞋有兴趣和环境的话可以提供这方面的数据 阅读全文

简单实用SQL脚本Part:sql多行转为一列的合并问题

2010-10-20 09:41 by 听风吹雨, 7346 阅读, 4 推荐, 收藏, 编辑
摘要:一、数据库SQL Server列值链式合并需求:原始表的数据的结构如图1所示,把相同guid的code值生成一个链式字符串。(图1)目标:我们希望达到的效果如图2所示,这里的guid变成唯一的了,这行的记录中包含了这个guid所对应的code字段值的链式字符串。(图2)分析与实现:要实现图1到图2的转变,这使用SQL Server 2005的新功能:XML,下面我们来讲讲具体的实现:1. 首先我们先创建一个测试表,方便后面的效果展现;Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHi 阅读全文

简单实用SQL脚本Part:生成站点导航树形结构

2010-09-16 22:30 by 听风吹雨, 4217 阅读, 4 推荐, 收藏, 编辑
摘要: 一、需求我们通常的时候,都是先有站点地图,之后对URL的地址进行判断和导航的,那么我们是否可以根据所有收集到的URL来进行分解,从而生成出所有可能的地址,最主要的是要有一个层级的关系。我们的数据一般都是如下图1所示的格式,那么我们如何在页面上展现出图2的效果呢?(图1:原始表)(图2:页面效果图) 其实就普通树形来说,ID与ParentID这两个字段是少不了的。(图3:数据效果图)二、逻辑分析1. 使用字符串分割法 阅读全文

SQL Server 创建链接服务器

2010-09-09 14:43 by 听风吹雨, 65899 阅读, 8 推荐, 收藏, 编辑
摘要:适用场景:对远程的DB进行操作。2000与2005对比:在SQL Server 2000版本中也有链接远程DB的SQL,但是功能比较弱,扩展性差,支持的查询比较简单。而SQL Server 2005版本的SSMS中已经有了 服务器对象->链接服务器 的功能点,用户首先创建一个远程DB的链接对象,之后就可以像本地表一样执行表的DML了。创建步骤:在SQL Server 2005版本打开SSMS,服务器对象->链接服务器->右击 新建链接服务器,在图2中是一种设置方式,也有其它的设置方式,比如:[图解]sqlserver中创建链接服务器,图3是安全性选项中设置远程数据库的账号和密 阅读全文

SQL Server 游标运用:游标模板

2010-09-08 17:22 by 听风吹雨, 2117 阅读, 1 推荐, 收藏, 编辑
摘要:一、 背景 游标在我维护SQL Server的过程中经常被使用到,如果游标使用得好,在很多时候可以给予我们开发过程带来很多的便利,所以这里提供一个游标模板;二、 游标模板 在正式解决问题之前我先提供一个游标的模板,它简单的实现了找出数据库中所有的数据库名,其实这个模板的目的是为了提供一个规范化的游标SQL代码模板,下面SQL脚本实现了通过游标打印出用户数据库:-- =============================================-- Author: -- Blog: -- Create date: -- Description: -- ==... 阅读全文

简单实用SQL脚本Part9:纵向回填信息

2010-09-06 14:35 by 听风吹雨, 2932 阅读, 4 推荐, 收藏, 编辑
摘要:需求:我们的一个系统有这样一个功能:记录用户访问网站页面的轨迹,比如A->B->C->D(A、B、C、D表示不同的页面URL),在系统的业务上用户可以使用帐号访问网站,也可以使用匿名访问网站,而用户使用的机器已经被标识为一个GUID,所以当用户使用了匿名访问A、B页面后在C页面使用帐号登陆了系统,那么为了对用户进行分析,我们需要把A、B页面的登录名设置登陆的账号,这样用户的访问过程就有了一个完整的一条线。(如图1所示) 注意1:的是一台机器(GUID)有可能使用了多个帐号进行登陆,那么同一个GUID就有可能包含了匿名、帐号a、帐号b的交替记录。(如图1所示) 注意2:这个表中 阅读全文