返回
中国计算机报1999年第75期

结合SQL Server 7.0使用Visual Studio 6.0数据库工具

李奇威

  本文介绍了如何使用Microsoft SQL Server 7.0和Visual Studio 6.0数据库工具分析来自不同数据库系统的数据。在查询设计中可以通过链接服务器属性访问外界OLE DB数据资源;使用Top语句来限制要返回的数据;通过文件组来提高数据库的执行和有效性;用Guid数据类型来生成惟一标识符。

  如果有一个跨国公司,它包括五个大的辅助部门和北美的总部,其辅助部门负责研究不同的产品,要你分析此公司的前50个收入来源。但是这六个部门(包括总部)使用了六种不同的数据库管理系统。例如,东京的部门将数据保存在一个Microsoft Visual Foxpro数据库里;伦敦的用Oracle数据库;布宜诺斯艾利斯将数据存储在Sybase系统中;总部和Johannesburg用Microsoft SQL Server数据库;堪培拉用第三方OLE DB系统。你怎样才能在总部把这些信息收集到一个报告里呢?

  这似乎是一件很辛苦的工作。但是用新的Microsoft SQL server 7.0和Visual Studio 6.0数据库工具,在查询设计中用链接服务器和Top属性,你就可以很轻松地完成此项任务。

  当然不止这几步,但关键是用Visual Studio 6.0数据库工具,你可以享用一些SQL Server 7.0的优点使你的企业数据工作更简单有效。

  准备工作

  如果你有以下这两种工具之一,你就可以应用本文介绍的方法:

  ● Microsoft SQL server 7.0和Visual studio 6.0数据库工具;

  ● 具有最新的客户工具的Microsoft SQL Server 7.0和Visual Studio 6.0数据库工具。

  如果SQL Server 7.0被安装在一台服务器上,并且你的客户机上装有Visual Studio 6.0数据库工具,请在客户机上运行SQL Server 7.0安装程序选择客户工具安装。如果你的机器上既安装了Visual Studio 6.0数据库工具又安装了SQL Server 7.0,那么安装向导将会自动更新你的数据库工具。



  访问外部OLE DB数据资源

  要访问异种OLE DB数据资源处理企业数据工作,那么链接服务器特性就是个灵活有力的解决方法。

  链接服务器是用SQL Server 7.0对外部数据对象和需要访问的那些数据信息的一种定义方法。这种定义包括四部分名称:外部数据对象服务器名称;包含对象的目录或数据库;对象或所有者的模式;对象名称(表或数据库的浏览)。这四部分的名称用的结构格式为:链接的服务器名称、目录、模式、对象名称。

  定义了链接服务器后,就能够以Transact-SQL语句用这四部分名称在链接服务器上查阅数据对象了。我们可以用Select、Insert、Update和Delete transact-SQL语句直接查阅外部数据源的表和浏览。

  这样,一个简单的Select语句就能用于刚才的跨国公司情况。可以这样访问数据:

  SELECT *FROM johann_sa.svs.dbo.products

  其中:johann_sa是位于Johannesburg辅助部门的服务器的名称、svs是数据库名称、dbo是对象所有者、products是表的名称。

  当客户请求执行一个分布式查询时,SQL Server对这个命令进行解析,并以基本的行集合表格发送请求,每行包含OLE DB数据列的行的集合。因为OLE DB提供者以行来组织它们的数据,因此它们知道当收到来SQL Server自行集合请求时该做什么工作。在数据库工具里可以SQL Pane方式来运用链接服务器特性。

  以跨国公司为例,为了访问来自辅助部门的服务数据库的产品表里的净收入信息, Select语句可以这样写:

  SELECT Prod.name, Prod.net

  FROM johann_sa.svs.dbo.products AS Prod

  WHERE date between '07/01/97' and '06/30/98'

  AND Prod.net > 1

  ORDER BY Prod.net desc

  结果集合将列出由Johannesburg辅助部门在1998年6月30日财政年度的所有产品交易中价值高于1000000美元的净收入。产品将按照净收入从高到低的降序排列。

  限制结果集合

  继续以上述情况为例。因为Johannesburg辅助部门覆盖非洲和中东,应当如何限定得到的数据列表呢?

  这也简单:利用TOP语句就可以实现。TOP语句用于限定你可能得到一个大的结果集合的列数的工具。用TOP关键字可以指定只想得到的结果集合中的前n个记录。用PERCENT关键字和TOP组合也可以得到想要的结果集合中的前百分之n条记录。这样你在SELECT语句中使用TOP就有两种方式:

  SELECT TOP n *

  SELECT TOP n PERCENT *

  接着,回到Johannesburg的查询,用TOP语句限制你的列表只有50行。查询语句如下:

  SELECT TOP 50 Prod.name, Prod.net

  FROM johann_sa.svs.dbo.products AS Prod

  WHERE date between '07/01/97' and '06/30/98'

  AND Prod.net > 1



  在有限的结果集合中排列行

  如果在用了TOP语句的SELECT表达式中指定ORDER BY,那么SQL Server首先按照指定排序建立整个查询结果,然后从建立的集合中取出前n行或前百分之n的结果。

  这样Johannesburg查询表达式:

  SELECT TOP 50 Prod.name, Prod.net

  FROM johann_sa.svs.dbo.products AS Prod

  WHERE date between '07/01/97' and '06/30/98

  AND Prod.net > 1

  ORDER BY Prod.net desc

  SQL Server首先得到净收入大于1000000美元的所有产品,然后将它们按从大到小的顺序排列。当列表被排列之后,前50个被取出并返回到结果集合中。

  使数据库操作更有效

  当查询大型数据库时,执行性能很重要。SQL Server 7.0在数据库工具中有两个新特性可以用来提高数据库操作。文件组可以加速数据库操作,GUID数据类型用于全局惟一数据库对象(在像跨国公司这样的企业项目中很有用)。

  改进对数据库的访问

  文件组是一个数据库文件存储管理机制,它允许在多个磁盘上创建数据库。

  当创建一个SQL Server 7.0数据库时,程序自动指定所有文件到缺省文件组,除非你指定另外文件组为缺省文件组。但是,即使指定了一个不同的文件组为缺省的,所有数据库系统文件也必须保留在主文件组中。

  指向数据库文件的文件组属性记录这些文件,即使它们位于不同的磁盘。

  例如,把一个表指向一个文件组,但把表的索引文件存在另一个磁盘上。当访问数据表时,查询将涉及两个磁盘。因此,关于表的不同文件的几个查询将会同时发生,这样将加速查询结果集合的返回。

  用数据库工具,可以在Tables Property Page(属性页)中指定Table(表)和Text(文本)文件组,在Indexes/Keys Property Page (索引/键值属性页)中指定索引文件组。

  当开始计划数据库文件组属性时,务必记住:

  ● 文件组不能独立于数据库文件而创建;

  ● 一个文件组不能用于多于一个数据库上;

  ● 任何时候只有一个文件组能成为一个数据库缺省文件组;

  ● 一个文件只能成为一个文件组的成员;

  ● 一旦某个文件被加到数据库并指向一个文件组,你就不能把这个文件移向另一个文件组;

  ● 系统对象和文件永远指向主文件组。

  确保数据对象的惟一性

  当处理被多地点使用的大型数据库时,就像跨国公司的情景。也许会遇上确保表对象惟一性的问题。在此情况下,Uniqueidentifier也许正是解决方法。Uniqueidentifier是一个GUID数据类型,它存储了全局惟一标识符。一个GUID是一个为确保惟一的二进制数,因此其它的计算机不能生成同样的数值。

  GUID的惟一值是由计算机网卡的识别数字加一个来自CPU时钟的惟一数值生成。

  Uniqueidentifier的值并不像Identit属性那样自动生成。为了给表对象生成一个Uniqueidentifier值,必须指定Newid功能为列的缺省值。

  例如,如果想生成一个表,它列出所有跨国公司辅助部门的最前面的产品的净收入。如果要指定一个GUID数据类型,可以这样表示:

  CREATE TABLE NetRevenueTable

   (UniqueColumn Uniqueidentifier DEFAULT NEWID(),

  Characters VARCHAR(10))

  在数据库工具中,可以在数据库图表或设计一个表时这样做。

  如果用到Uniqueidentifier,请记住下面数据类型的特征:

  ● 值是长的,模糊的;

  ● 值是随机的,并且下一个模式对用户是没意义的;

  ● 值在依靠连续增加的申请中是很难利用的;

  ● 值为16位,因此用这些值来建立的索引会很慢。

  总而言之,使用的数据库工具的新SQL Server7.0特性将使企业数据库任务(像跨国公司)更有效、更可行。

  用链接服务器和TOP语句,我们就能够访问外部OLE DB数据资源,并且限制实际很长的结果列表,得到想要和能简单使用的结果。另外,如果能正确地在数据库文件上执行文件组和GUID数据类型,操作就能更有效、更容易地完成。