技术开发 频道

SQL编辑器的使用方法

ITPUB 专稿


 

   假设你工作的项目有多个发布版本,每个版本在本地硬盘上都有自己的文件夹。在你的服务器工程中选择当前版本的文件夹。Sql Builder会在工作目录里创建两个子文件夹:DatabaseBackup和Scripts
 




   Sql Builder将服务器设置(服务器名、用户名密码等)保存在工作目录里的一个XML文件中。如果你在多个SQL服务器上工作,给每个服务器建立一个工作目录。

   强烈推荐通常额外添加一个临时文件夹,在这里可以测试一些SQL而不将它们保存到Subversion或CVS上。

下一步是添加SQL文件或系统对象:
 
 

 

主窗口中的工具条提供了以下功能(从左到右):

1. 添加一个新的或者已经存在的过程、方法、视图、触发器、表、文件到文件列表里
2. 从文件列表里删除一项。
3. 在一个或多个数据库里的过程、视图和列等中搜索文本(如下)。
4. 给文件列表排序
5. 在表编辑器里打开选择的表(如下)
6. 在表编辑器里打开选择表的前十行。
7. 构建复合脚本(如下)
8. 创建一个数据库备份(如下)

点击最左边的工具栏按钮,下面这个窗口会打开:
 




 你可以:输入一个新SQL文件名或从下拉列表里选择一个已存在的过程或 输入一个新函数的名字

Sql Builder会将其添加到主窗口的文件列表中
 





这里有个很大的不同点

   添加一个文件或一个表(使用蓝色)和
   添加一个过程、函数、视图或触发器(使用绿色)

理解下面这些非常重要:

   添加一个过程、函数、视图或触发器
   添加一个系统对象比如一个*.PROC、*.FUNC、*.VIEW或*.TRIG文件意味着所有对SQL代码的更改都保存到SQL Server.SQLBuilder会在你的工作目录创建一个不包括任何SQL代码的哑元的文件(比如fn_GetUserById.func)!

 

添加一个文件或表

   如果你添加一个*.SQL或*.TABL文件(比如上面的Test.sql),所有对SQL代码的更改会保存在本地。
开发时除了运行测试,几乎都不使用*.sql类型的文件。不要滥用*.sql类型的文件保存过程、方法的定义和表的更改等。

   使用Ctrl+TAB快捷键你可以在文件列表里刚选择过的文件之间快速的切换。对于文件列表中的每一项,Sql Builder都会在Scripts文件夹里一个子文件中创建恰当的文件。每个数据库在Scripts中都会有一个子文件夹。
 




如何与CVS/Subversion一起工作

   你和你的所有同事都可以签入Scripts文件夹中的内容到Subversion或CVS。如果新的发布版本准备好的时候,你只要点击”Builder Script”,Sql Builder会创建一个极大的综合SQL脚本。

这个脚本包括:

   1.所有*.sql和*tabl文件的内容(不做任何更改)
   2.从你的SQL Server直接加载的实际版本的过程、函数、视图和触发器。然后你将这个综合脚本发给你的客户,他们可以更新SQL Server数据库到最新版本了。

SQL编辑器





注意:

   要使用SQL编辑器你必须知道键盘快捷键。点击”Keyboard help”按钮查看。
   SQL编辑器保存你所有更改的撤销缓冲区,甚至在你操作其他文件同时,也原封不动的保存着。使用Ctrl+Z快捷键你可以回到最后一个工作状态。

执行代码

   在一个文件或表中你可以选择任何一段SQL代码,然后使用Ctrl+E快捷键执行它。如果没有选择任何代码,全部代码将被执行。按Ctrl+E快捷键时,过程、函数、视图和触发器永远会被全部执行,他们会被保存到服务器。推荐你在你的临时工作目录里至少有一个临时文件以执行SQL代码做测试。使用Ctrl+TAB快捷键你可以在文件列表里你刚选择的项中快速的切换。

   如果这个SQL查询的结果是一个标量的值,或者这个查询没有任何结果,在主窗口里会如下显示:
 




   如果结构是一个或多个表格,它们会显示在ResultView窗口:
 



通常会看到精确到1毫秒执行时间 (性能计数器)

   如果你希望看到在清除服务器缓存后的执行时间,使用Ctrl+B代替Ctrl+E。Ctrl+B关闭所有服务器优化,比如缓存查询结果,这样你就可以看到最坏情况下的执行时间。

ResultView窗口的工具栏提供了以下功能(从左到右)

1. 从查询结果数据表格里查找文本
2. 比较两个查询结果的内容(如下)
3. 导出结果数据集里的表到一个Excel表格
4. 将结果数据集里的所有表和SQL查询导出到一个HTML文档。
5. 将当前选择的表导出到XML文件
6. 显示对当前窗口快捷键帮助
 

比较查询结果的内容

   在ResultView窗口里,你可以比较两个表的内容,要干这个,你必须同时发送两条SQL命令到服务器

示例:

   EXEC proc_GetUserData 877, 1
   EXEC proc_GetUserData_New 877, 1
   Sql Server会返回一个含有两个表的数据集。如果proc_GetUserData是一个存储过程,proc_GetUserData_New是你修改后的过程,你可以测试你的修改对返回数据的影响。

表编辑器


 

   表编辑器是Sql Builder里的一个非常强大的工具。可以使用它像操作Excel表格那样在Sql Server上编辑表格。你可以将光标定位到一个单元格上修改它的值。当做完所有更改后保存这些更改。关闭表编辑器后你会发现在主窗口中的*.tabl文件里显示了所有执行过的SQL代码。如果你没有删除它们,这些更改会自动的包含进综合脚本里面。

   如果某一列是唯一键或主键,它的背景颜色会改变。列的文本颜色依赖于数据类型(字符串、整型等)

表编辑器的工具栏里包含有以下功能(从左到右):

1. 在表里查找文本
2. 生成所有对服务器的更改的SQL命令
3. 从数据库重新加载表
4. 从数据库重新加载该表的前10条数据
5. 添加新行
6. 删除光标所在的行
7. 添加新列
8. 删除光标所在的列
9. 打开表设计器(如下)
10. 构建创建表以及其所有列和内容的SQL命令
11. 将表的内容导出为HTML文档
12. 将表的内容导出为Excel表格
13. 将表的内容以及列的定义和它们的约束导出到一个XML文件
14. 从XML文件导入表的内容(附加到当前内容或替换当前内容)
15. 显示该窗口的快捷键帮助

表设计器





表设计器是一个功能非常强大的工具,允许你浏览或修改:

1. 列的数据类型(比如:将varchar(10)修改为varchar(50))
2. 标识(种子或递增大小)
3. 默认值
4. 列索引
5. 该表到其它表的外键
6. 别的表到该表的外键
7. 该列是否为空
8. 添加或移除主键
9. 添加或移除唯一键

   因为微软的SQL是如此的原始,表设计器的工作非常复杂。你将会看到这样的SQL命令,修改一个已存在的主键,这个主键又被其他外键引用,然后执行SQL命令

自动生成代码示例:





就如你所看到的,Sql Builder尝试生成通用的SQL脚本:

   如果ID为56196的用户已经存在,那么就更新他的数据
   如果该用户不存在,那么就新添加一行
   微软的SQL如此原始,所以这里没有更简单的方法。(用一行命令解决他)
   你可以将一个表数据升级到管理员的脚本给你的客户,这个脚本永远都不会出错,就算它执行两次。
   但是如果你修改了约束那就不一定了,因为各个数据库服务器的约束是不同的

再次强调:微软的SQL是如此的原始,这里没有通用的方式删除一个未知名字的约束

如下的命令Microsoft SQL Server将不能处理:

 

ALTER TABLE [TableName] DROP UNIQUE (ColumnName)
ALTER TABLE [TableName] DROP PRIMARY KEY


 

使用开发者注释

   为过程、函数、视图和触发器写的开发者注释只能在你和你的同事之间内部使用,他们永远不会写入到综合脚本中和保存到服务器中。在点击“Build Script”按钮之前,你需要通过拖拉主窗口中的文件列表来重新对文件列表排序。所构建的综合脚本的顺序与你在文件列表里看到的顺序一样。

   如果综合脚本创建了一个过程,这个过程依赖于一个函数,你必须首先创建这个函数,这样该脚本才能在你客户的SQL Server上避免错误。使用开发者注释以免遗忘这个细节:





数据库搜索
 


   Sql Builder可以在所有数据库中的过程、函数和列等里面搜索文本。结果会显示成一个系统对象列表,在它们的旁边是它们的内容。你可以从主窗口的工具栏上打开数据库搜索。

数据库备份

 



   建议最少一个星期使用一次”Database Backup”按钮(在主窗口的工具栏里),并且将atabaseBackup文件夹签入到CVS/Subversion以备份你的过程等。

   即使你的SQL Server数据库有备份系统,而且你完全信任它,这里也有个优点:你可以通过CVS或Subversion内置的比较工具(或其它比较工具,比如Araxis Merge)比较过程、函数和视图与它们的老版本,这样你可以检查哪个过程被修改了以及与旧版本的不同。

在备份文件夹下的文件包含有它们在Sql Server里创建的时间。遗憾的是,Microsoft SQL Server不保存最后一次修改的时间。

 

0
相关文章