代码改变世界

随笔分类 -  00.SQL Server

SQL Server 错误日志收缩(ERRORLOG)

2013-06-24 15:15 by 听风吹雨, 5457 阅读, 收藏, 编辑
摘要: 一、基础知识默认情况下,错误日志位于 :C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG和ERRORLOG.n 文件中。默认保留有7个 SQL Server 错误日志文件,分别是:ErrorLog,Errorlog.1~Errorlog.6 ,当前的错误日志(文件ErrorLog)没有扩展名。每当启动 SQL Server 实例时,将创建新的错误日志ErrorLog,并将之前的ErrorLog更名为ErrorLog.1,之前的ErrorLog.1更名为ErrorLog.2,依次类推,原先的ErroLog.6被删除。 阅读全文

SQL Server 限制IP登陆(登陆触发器运用)

2013-05-23 16:51 by 听风吹雨, 30907 阅读, 收藏, 编辑
摘要: 一、背景在MySQL的mysql.User表保存了登陆用户的权限信息,Host和User字段则是关于登陆IP的限制。但是在SQL Server没有这样一个表,那SQL Server有什么办法可以实现类似的安全控制的功能呢?SQL Server 包括三种常规类型的触发器:DML触发器、DDL触发器和登录触发器。DML触发器是比较常使用的,它通常在表或视图中修改数据(INSERT、UPDATE和DELETE 等)为了保证业务数据的完整性和一致性,可以对事务进行回滚等操作;如果你对DDL触发器感兴趣,可以参考:SQL Server DDL触发器运用 阅读全文

SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database)

2013-05-08 15:32 by 听风吹雨, 7213 阅读, 收藏, 编辑
摘要: 之前写了篇关于:SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database)的文章,它罗列出某个数据所有表的信息,这些信息包括:表的记录数、数据记录占用空间、索引占用空间、没使用的空间等(如Figure1所示),现在我来讲述如何获取整个数据库实例中所有数据库所有表的信息(如Figure2所示)。 下面内容讲述了在实现Figure2过程中遇到的一些问题,如果你对这些问题不感兴趣可以直接看最后实现的SQL脚本。下面讲述了4种实现方法: 阅读全文

SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database)

2013-05-07 12:09 by 听风吹雨, 4217 阅读, 收藏, 编辑
摘要: 一、背景在性能调优或者需要了解某数据库表信息的时候,最直观的方式就是罗列出这个数据所有表的信息,这些信息包括:表的记录数、数据记录占用空间、索引占用空间、未使用的空间等(如Figure1所示),有了这些信息你可以简单的判断这个数据库来自数据上的压力可能是某个表造成的。因为表数据越大,对数据库性能的影响越大。要实现某个数据库所有表的信息,可以通过游标的形式获取相应的数据,下图Figure1返回某数据库中所有表的信息:(Figure1:某数据库所有表信息)也许你并不满足于Figure1的信息,你希望获取整个数据库实例中所有数据库所有表的信息(如Figure2所示) 阅读全文

SQL Server 重置Identity标识列的值(INT爆了)

2013-04-23 17:45 by 听风吹雨, 27819 阅读, 收藏, 编辑
摘要: 一、背景 SQL Server数据库中表A中Id字段的定义是:[Id] [int] IDENTITY(1,1),随着数据的不断增长,Id值已经接近2147483647(int的取值范围为:-2 147 483 648 到 2 147 483 647)了,虽然已经对旧数据进行归档,但是这个表需要保留最近的1亿数据,有什么方法解决Id值就快爆的问题呢? 解决上面的问题有两个办法:一个是修改表结构,把Id的int数据类型修改为bigint;第二个是重置Id(Identity标识列)的值,使它重新增长。 当前标识值:current identity value,用于记录和保存最后一次系统分配的I... 阅读全文

SQL Server 磁盘空间告急(磁盘扩容)

2012-11-27 10:00 by 听风吹雨, 16840 阅读, 收藏, 编辑
摘要: 一、背景在线上系统中,如果我们发现存放数据库文件的磁盘空间不够,我们应该怎么办呢?新买一个硬盘挂载上去可以嘛?(linux下可以直接挂载硬盘进行扩容),但是我们的SQL Server是运行在Windows下的,有什么办法可以解决这燃眉之急呢?有两种方法可以解决上面的问题:第一种就是把数据库磁盘转换为【动态磁盘】,新增新的磁盘就可以解决了;第二种就是我今天要讲述的,使用SQL Server在其它磁盘(或者逻辑分区)中添加新的文件,添加完成后,SQL Server马上就能进新的数据了 阅读全文

SQL Server 数据库帐号密码生成

2012-03-23 16:35 by 听风吹雨, 6041 阅读, 收藏, 编辑
摘要: 一、背景作为一个DBA,或许你有很多的系统需要管理,而且不同的系统使用了不同的数据库,通常的情况下,我们都是通过sa进行设置密码的,而且在config文件里面明文的写上我们的帐号和密码,这样的设计我们是否太大方了呢?或许你会说,我们的数据库是安全的,因为我们的数据库是只有内网可以访问的,但是那台机器的安全性呢?因为能进入操作系统就能看到我们的帐号密码了。再加上有些时候我们不希望客户能看到数据库密码的。那么应该如何保证我们的数据库账号密码的安全性呢? 二、架构设计针对上面的安全性问题,我设计了下面的方案,主要是运用加密算法进行加密,再通过分离一些职 阅读全文

SQL Server 当表分区遇上唯一约束

2012-02-23 18:58 by 听风吹雨, 6110 阅读, 收藏, 编辑
摘要: 一、前言我已经在高兴对服务器创建了表分区并且获得良好性能和自动化管理分区切换的时候,某一天,开发人员告诉我,某表的两个字段的数据不唯一,需要为这两个字段创建唯一索引的时候,这一切就变得不完美了。列的唯一,这个实际上是一个唯一索引。使用关键字unique建立。二、背景我有一个表TestUnique,这个表使用分区方案[Sch_TestUnique_Id],它是以Id做为分区依据列的,这个Id也是一个聚集索引,表中其它索引是跟分区对齐的(创建其它非聚集索引的时候使用了分区方案或者不指定-默认就是分区方案),而且我我这个表很大,我需要定时的进行交换分区(SWITCH PARTITION、滑动窗口、切 阅读全文

SQL Server 性能优化实战系列(文章索引)

2012-01-20 14:54 by 听风吹雨, 9980 阅读, 收藏, 编辑
摘要: 二.前言(Introduction) 性能优化是数据库方向一个很重要的技能,这也是快速提供企业级应用性能最快捷的方式,所以性能优化的高低很大程度上表现了个人技能的高低。 下面的文章是我在实际项目中性能优化的一些经验,希望对那些需要实战帮助的童鞋有一点提示和帮助。希望大家拍砖。 三.调优流程图(Process) 下图是一个关于SQL Server性能调优步骤的流程图:(Figure1:调优基本流程图) 四.系列文章索引(Catalog) 阅读全文

SQL Server 游标运用:批量创建、删除链接服务器

2012-01-20 10:47 by 听风吹雨, 3473 阅读, 收藏, 编辑
摘要: 一、背景我们的数据库比较多,它们提供了外网的访问,我现在想对这些数据库进行一些管理,获取这些数据库的一些信息,我们可以通过什么方式实现呢?在SQL Server2005版本之后有一个叫做链接服务器的新功能,基本的操作可以参考:SQL Server 2005链接服务器,我们就通过这个链接服务器来获取我们需要的数据,但是我们的服务器比较多,这个批量创建链接服务器和批量删除链接服务器就呼之欲出了。二、设计过程设计简述:创建如下图的表结构,LinkName保存远程链接的别名,LinkName2是创建链接方式2的一个补充字段,LinkIP代表远程服务器的地址,如果有端口的还需要加上端口 阅读全文

SQL Server 置疑、可疑、正在恢复

2011-12-19 20:59 by 听风吹雨, 9380 阅读, 收藏, 编辑
摘要: 一、出错情况有些时候当你重启了数据库服务,会发现有些数据库变成了正在恢复、置疑、可疑等情况,这个时候DBA就会很紧张了,下面是一些在实践中得到证明的方法。在一次重启数据库服务后,数据库显示正在恢复,过了很久还是这个状态,离线时间不能太长,所以就想起了一个方法,就是把数据库服务停止了,把数据文件mdf和ldf拷贝出来,删除了ldf文件,按照之前的经验,好像是在没有ldf的情况下可以使用mdf来恢复数据库。创建了一个同名的数据库,停止数据库服务,覆盖mdf文件,再启动数据库服务,这个时候还是处于可疑的状态。其中使用mdf来附加数据库是附加不了的,一直报错。二、解决步骤方法一:使用脚本进行数据库恢复 阅读全文

SQL Server 维护计划实现数据库备份(Step by Step)

2011-11-18 17:51 by 听风吹雨, 11994 阅读, 收藏, 编辑
摘要: 一、前言SQL Server 备份和还原全攻略,里面包括了通过SSMS操作还原各种备份文件的图形指导,SQL Server 数据库最小宕机迁移方案,里面使用SQL脚本(T-SQL)完成完全备份、差异备份、完全还原、差异还原等; 有了上面的基础,我们加入了数据库的备份元素,通过维护计划来生成数据库的备份文件,这包括两种文件,数据库的完全备份与差异备份,有了这两个文件,我们可以通过SQL Server 备份和还原全攻略(图形操作)或者SQL Server 数据库最小宕机迁移方案(代码操作)的方法来还原我们的数据; 阅读全文

SQL Server 维护计划备份主分区

2011-10-09 11:52 by 听风吹雨, 13115 阅读, 收藏, 编辑
摘要: 经过一段时间表分区的实践,我们先对表进行分区(形成表分区模板);表数据搬迁模板(迁移数据到新的分区表);分区管理自动化(自动化进行交换分区);详情请见:SQL Server 表分区实战系列(文章索引) 再进一步延伸,我们就需要对这些做了表分区的库进行备份了,之前写过一篇博文:SQL Server 备份和还原全攻略,这里描述了MSSQL的一些备份概念,今天这里虽然没有用到,但是像差异备份在备份比较大的情况下使用就会有很好的效果。 阅读全文

SQL Server 重复执行作业中某个步骤

2011-09-14 14:58 by 听风吹雨, 5353 阅读, 收藏, 编辑
摘要: 一、说明在SQL Server 的作业中,有些时候我们希望步骤在执行失败后可以重复执行多几次,而我产生这个念头的是因为我在执行某个步骤(这个步骤对分区表进行修改分区方案、分区函数)的时候出现死锁了,如下面描述:消息1205,级别13,状态55,第1 行事务(进程ID 115)与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品。请重新运行该事务。我想到解决这个问题的方法是重复执行多几次这个步骤(经测试执行几次可行),所以这里就讲讲如果让数据库作业完成这一动作。二、测试实验(一)测试方案:我们在作业中设置了简单的两个步骤,步骤1往表中插入一条数据 阅读全文

SQL Server 设计开发系列(文章索引)

2011-08-29 15:47 by 听风吹雨, 3775 阅读, 收藏, 编辑
摘要: 一.前言(Introduction)数据库的设计与开发包括了很多东西,也许就是一个设计思想:比如空间换时间方案,读写分离,水平切分表,HA群集等;开发方面就包括脚本的开发、扩展函数,涉及到一些SQL的使用。 该系列还在完善中,欢迎大家指出还缺少些什么内容的维护,我会在后面的文章中陆续补充的。二.系列文章索引(Catalog)SQL Server数据库帐号密码安全设计简单实用SQL脚本简单实用SQL脚本Part2:日期和时间函数简单实用SQL脚本Part:游标模板简单实用SQL脚本Part:查找SQL Server 自增ID值不连续记录简单实用SQL脚本Part:生成站点导航树形结构简单实用SQ 阅读全文

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

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

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

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

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

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

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

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

SQL Server 备份和还原全攻略

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