我的SQL Server2000辅助工具
SQL Server2000数据库的易用性已经给我们留下了深刻的印象,但近一年的时间里,我始终被数据库脚本的更新所烦恼。每一次脚本的更新,我都需要小心翼翼的,花大半天的时间来产生数据库的更新脚本。对于产生数据库更新脚本而言,尽管SQL Server2000已经提供了类似的功能,但在某些方面并不能满足我的需求,比如:表字段的添加,修改等等,以及如果我的生产库有多个,这就迫使我不得不产生多个脚本,然后再合并。这些工作看起来很简单,但如果你的数据库更新脚本足够的多,繁,杂的话,相信你会与我有同样的感受,那种感觉就是痛苦和无聊。有一段时间,我一直在寻找这样的一个数据库脚本产生工具:你可以依照数据库更新记录(我目前采用word记录数据库修改记录)来选择你要更新的内容,然后一次性的生成数据库的更新脚本,保存脚本,最后把它交给系统维护人员,直接在查询分析器里运行即可。
可能是我运气不佳,始终没有找到合适的工具,可能像我这样的需求量太少了吧。这也就促成了这个小工具的产生。其实,为了使脚本更新足够的简单,我的这个辅助工具对脚本的执行也提供了支持,理由是,我们的数据库服务器不止一台,每次更新脚本时,我们的系统维护人员就不得不一台一台的连接数据库服务器去执行脚本。如果生成的脚本有一点差错,那么他们又需要重新连一遍数据库服务器,这项工作无疑是无聊、机械和耗费体力的。与其这样痛苦着,倒不如把这项工作变成一件有乐趣的事情。
这个小工具已经给我带来了快乐,在最近的一次系统更新中它已经减轻了我的工作。如果你在工作中也拥有同样的烦恼,那么从现在开始,你就可以告别这些烦恼了,如果你还没有遇到这些烦恼,那么也不妨了解一下,相信以后会对你有所帮助。
有什么用处
当你需要在多个数据库里产生更新脚本时,当你需要产生表的字段的添加,修改,删除脚本时,当你需要把编码表的数据导成insert语句时,当你需要在多台数据库服务器上执行相同的脚本时,当你已为脚本的产生和更新所累时,使用这个小工具,这些问题都将变得如儿戏一般的简单。简单的说,它可以让你从脚本生成和执行这些繁琐的事情中解脱出来。
提供的功能
工具虽然简单,但我觉得还是有必要叙述一下该工具的功能。从整体上看,该工具主要提供了两部分功能:产生脚本和执行脚本。
A. 产生脚本
l 表
1. 创建表:包括表的定义、表的主键约束、默认值约束、索引以及触发器
2. 增加主键:增加表的主键约束
3. 增加索引:增加表的所有索引
4. 增加触发器:表触发器的创建
5. 修改触发器:表触发器的修改
6. 导出数据:把表的数据导成insert语句(适合基础编码表的更新,不适合大量数据的导出)
l 字段
1. 增加列:表添加字段的脚本
2. 修改列:表修改字段的脚本
3. 删除列:表删除字段的脚本
l 视图
1. 增加视图
2. 修改视图
l 存储过程
1. 增加存储过程
2. 修改存储过程
l 函数
1. 增加函数
2. 修改函数
B. 执行脚本
l 执行脚本的服务器
1. 添加:添加执行脚本的服务器
2. 删除:删除执行脚本的服务器
3. 导出服务器列表:保存服务器列表,供以后使用
4. 导入服务器列表:导入之前的服务器列表
l 执行的结果
由于脚本的执行只是封装了osql工具,所以,会把执行的结果显示出来,供查阅脚本执行的情况。
其实,除了单独的脚本产生外,还有一个问题会影响我们脚本的执行效果,即脚本的执行顺序,在这里,我简单的列举一下脚本的产生顺序。
操作 |
顺序 |
创建表 |
1 |
增加列 |
2 |
修改列 |
3 |
删除列 |
4 |
增加主键 |
5 |
增加索引 |
5 |
导出数据 |
6 |
增加触发器 |
7 |
修改触发器 |
7 |
增加视图 |
8 |
修改视图 |
8 |
增加函数 |
9 |
修改函数 |
9 |
增加存储过程 |
9 |
修改存储过程 |
9 |
你可能注意到了,有些操作的顺序是一样的,如果顺序一样,则依赖于它们之间的依赖性,被依赖者将排在依赖者的前面,如果彼此没有依赖性,则它们的顺序保持不变,与你选择对象的操作时的顺序一样。
这些功能都是基于我个人经验封装的,如果你有什么建议,非常欢迎提出来,我会尽快地改进。
如何使用
我相信,这个脚本辅助工具已经使事情变得足够的简单,所以它的使用方法,也同样很简单,尽管如此,我还是很乐意简单的介绍一下工具的使用步骤。
还是先看一下该工具的截图吧,如下所示。
图一
图二
图三
产生脚本的步骤:
l 输入数据库服务器连接信息
l 点击连接按钮
l 选择数据库
l 选择选项卡:表、字段、视图、存储过程、自定义函数(触发器包含在表选项卡内)
l 选择你要更新的对象以及应用于该对象上的操作(对象可以多选,操作是单选)
l 点击添加按钮(你更新的内容添加到[结果]选项卡里)
l 到[结果]选项卡里,选择你要产生脚本的对象,点击产生脚本按钮(如图二所示)
l [生成的脚本]选项卡里即为你选择的更新对象的脚本
l 可以复制脚本到剪贴板或者保存脚本
执行脚本的步骤:
l 添加执行脚本的服务器信息
l 选择脚本的路径
l 选择执行脚本的服务器
l 点击执行脚本按钮
当然,如果你是使用该工具产生的脚本,那么不必保存即可直接执行,点击执行生成的脚本按钮即可。
另外,对于这些服务器列表信息,你可以把它导出成xml文件,在需要的时候,不必重新输入这些信息,直接导入即可。
不足之处
关于此工具的不足之处体现在两方面:第一,功能仍需要进一步完善,这跟大家的需求非常有关系,我不希望闭门造车,我只是希望,它可以减轻我的工作,同样也希望它能够减轻你的工作;第二,有关脚本的产生和执行的性能改进,由于现在还是单线程,所以如果你的这两个步骤比较耗时,可能会让你的机器处于短暂的停顿状态。
后续开发
首先,针对耗时的操作,会引入多线程,添加操作的进度提醒。(已添加)
其次,跟进一些需求以及改正发现的bug。
最后,引入其它数据库管理系统脚本的产生与执行,如:oracle。由于此工具是通过SQL Server2000公开的接口访问数据库的,所以应该同样支持SQL Server2005(通常2005应该向后兼容这些早些版本公开的接口。由于缺少环境,有待验证)。
使用须知
如果你想使用该工具,那么你需要知道以下几点:
1) 由于该工具在.net Framework1.1基础上开发的,所以,你必须安装必要的运行环境所需要的软件包。
2) 该工具的执行脚本的功能,其实只是简单封装了osql工具,所以你如果需要执行脚本,那么务必安装此工具。(osql工具是sql server2000客户端自带的实用工具)。
3) 选择脚本的路径时,脚本文件的路径中不能含有空格,否则会报错。(目前还没有解决这个问题,可能是osql自己的问题吧)。(已纠正)
4) 该工具不支持同时产生多台数据库服务器上的脚本(关于这一点,不知道是否有这样的需求,即你的开发数据库是否部署在多台服务器上?)。
最后,如果你决定使用该工具,那将是对我最大的安慰,我想它肯定会减轻你的工作,给你的工作带来乐趣。在使用的过程中,如果遇到bug或者有什么建议,请不要吝啬你的CPU和Memory给我发信(rijing2008@hotmail.com),或者给我留言。我会非常感谢你的反馈,并及时做出改进,谢谢!
备注:已经添加了新功能,详细请查看SQLServer2000辅助工具版本更新了
工具下载