者常常以Access作为原型或者用Access来开发不是很关键的应用程序。但是,随着公司业务的增长,要解决的问题会变得越来越复杂,Access环境可能无法满足需要。目前,Access 2002的.mdb和.adp文件都将一个 数据 库的长度限制在2 GB以内。这意味着几乎每个Access
者常常以Access作为原型或者用Access来开发不是很关键的应用程序。但是,随着公司业务的增长,要解决的问题会变得越来越复杂,Access环境可能无法满足需要。目前,Access 2002的.mdb和.adp文件都将一个
数据库的长度限制在2 GB以内。这意味着几乎每个Access和SQL Server开发者最终都要将一个Access
数据库
升迁成一个SQL Server
数据库。
由于
升迁已成为极为常见的一个任务,所以Access配套提供了一个“
升迁向导”。它虽然能完成这个工作,但操作过程并不简单。SQL Server与Access的几处不兼容的地方是该向导无法处理的。你或许不知道,SQL Server的“
数据转换服务”(Data Transformation Services,DTS)也能
升迁一个Access
数据库。下面让我们比较这两个向导,并体验如何使用DTS来
升迁一个实际Access
数据库。这样一来,你在遇到一个
升迁任务时,就能选择最有效的方式。
比较Access升迁向导和DTSAccess
升迁向导(AUW)在Access内部工作,能将
数据拷贝到SQL Server表。相反,DTS将来自一个Access
数据库的
数据拷贝到SQL Server表中。注意,你可将
数据从一个文本文件或者一个OLE DB
数据源(其中自然包括Access
数据库)导入SQL Server。导入文件的同时,还能对
数据进行
转换。
DTS的功能非常齐全,有的开发者认为它比AUW强得多,理由是:
可在导入
数据时更改列(字段)属性。
在导入期间创建查询,限制实际导入的
数据。
但AUW也有DTS不具备的一个优点,那就是它能将一个Access前端链接到SQL Server
数据。DTS则不然,它只能导入
数据,你不能将导入的
数据链接到一个现有的前端。
使用DTS导入/导出向导可采取几种方式来执行DTS:
在Windows【开始】菜单中,选择【Microsoft SQL Server】,再选择【导入和导出
数据】。
运行企业管理器,连接到想导入
数据的一个特定的
服务器和
数据库,然后从【工具】菜单中选择【
数据转换服务】|【导入
数据】。在一个现有的
数据库中导入
数据时,可使用这个选项。
在企业管理器中,连接到要导入
数据的
服务器,再右击【
数据转换服务】节点。选择【所有任务】|【导入
数据】。向导最开始会显示一个提示性屏幕。请单击【下一步】开始操作。
指定数据源升迁Access的第一步是指定
数据源以及包含了待导入
数据的实际文件。在本例中,请选择Microsoft Access作为
数据源,再找到Northwind.mdb
数据库(Access配套提供的示范
数据库)。它通常在以下文件夹中:
LocalDrive:Program FilesMicrosoft OfficeOffice10Samples
注意,你可对任意Access
数据库进行
升迁。
升迁不会对实际的.mdb文件及其
数据产生任何影响。
如图A所示,本例不要求你输入密码和用户名。但是,在操作一个安全
数据库时,则可能必须管理管理员用户名和密码。换言之,在操作这种
数据库之前,你必须获得管理权限。请单击【下一步】继续。
图A
指定
数据源和文件。如果操作的是安全
数据库,还需要输入管理员用户名和密码
相反,如果使用的是AUW,它首先会要求你选择新建一个SQL Server
数据库,或者选择将SQL Server
数据链接到一个Access前端。如前所述,DTS没有提供链接选项。
选择目的在下一个屏幕中,要为导入的
数据选择一个目的(地)。你可选择当前
服务器上的任何
数据库,也可以新建一个
数据库(本例采取的是第二种做法)。不要更改“目的”设置,虽然有几个选项可供选择,但本例的“目的”就是【用于SQL Server的Microsoft OLE DB提供程序】。
虽然能更改
服务器,但本例不要求你这样做。除此之外,还应该保留【使用Windows身份验证】设置。只有SQL Server 2000才支持Windows身份验证。当然,如果你的安全设置有所区别,那么也可以相应地修改那个选项。
从【
数据库】下拉列表中选择【<新建>】。随后会出现【创建
数据库】对话框。请输入新
数据库的名称,Northwind的
数据将导入这个
数据库中,如图B所示。命名一个工作
数据库时,务必遵循你的公司的命名规范。单击【确定】后,DTS会自动更新【
数据库】下拉列表中的名称。单击【确定】继续。
图B
指定新的
数据库名称
限制要导入的
数据指定了Access
数据源,并新建了一个SQL Server
数据库之后,就可开始将
数据从
数据源导入新的SQL Server
数据库(NorthwindonlocalSS)。但是,也许不能在一个会话中完成全部工作。虽然每次都能拷贝任意数量的表。但假如你需要用一个查询来限制
数据,每次就只能操作那一个表。幸运的是,额外的工作并不需要花多少时间。
首先,让我们创建一个查询来限制“产品”表中的
数据,从而开始我们的拷贝过程。具体地说,我们只想拷贝那些活动的(而不是中止的)的产品。为此,请选择【用一条查询指定要传输的
数据】,如图C所示,再单击【下一步】。
图C
可拷贝几个表,或者拷贝一个查询的结果
图D的SQL语句将要导入的记录限制为那些没有中止的产品。使用查询生成器来显示你要包括的表和列。对于像这样的简单语句来说,查询生成器可能有点儿大材小用,但对于较复杂的语句来说,如果指定了几个列的名称,查询生成器就能有效地防止你犯错。单击【分析】来验证语句的有效性。输入了正确的SQL语句后,请单击【下一步】。
图D
输入对数据进行限制的SQL语句在下一个屏幕,单击【预览】按钮,以便核实查询结果。特别要注意的是,“中止”列中的每一个值都应该为False。预览完成后,单击【确定】以关闭【查看
数据】屏幕。如果想更改一个列的属性,可以单击【
转换】列中的省略号按钮,但本例不要求你那样做。相反,我们准备在拷贝整个表时
转换数据。此时,你可能要考虑重命名即将生成的目的表。默认情况下,向导会使用“结果”这个名称。请在【目的】列中单击“结果”,把它更改为“产品”。单击【下一步】继续。
下一个屏幕显示了用于调度导入任务的选项:
立即运行――这个选项立即执行导入任务(在DTS中称为“包”)。如果选择这个选项,那么不会保存任务,相反只是运行它。
升迁时请选择这个选项。
用复制方法发布目的
数据――将目的表用于复制。使用这个选项,DTS 导入/导出向导结束运行后将启动创建发布向导。
调度DTS包以便以后执行――如果想推迟到以后执行,就用这个选项来创建任务。
升迁一个
数据库时,你可能不需要保存任何导入任务。单击这个选项旁边的省略号按钮,会显示一系列调度选项,本文不再赘述。
保存DTS包――将导入的任务保存到以下任何位置之一:SQL Server、SQL Server Meta Data Services、结构化存储文件或者Visual Basic文件。
就本例来说,请选择【立即运行】,如图E所示,然后单击【下一步】。
图E
可选择立即运行导入任务。进行
升迁时,一般要选择这个选项
为了执行这个包,请在最后一个屏幕上单击【完成】。之后,向导会用一个对话框来显示进度。在状态列表中,显示了每一项单独的任务,并随时指出它们是否完成。所有任务完成后,单击【完成】关闭向导。
现在,DTS已经将一个表成功
升迁为一个新的SQL Server
数据库(即NorthwindonlocalSS)。你还需要拷贝剩余的表,所以请重新启动DTS。最开始,还是将
数据源指定为Northwind
数据库。接着,从【
数据库】下拉列表中选择【NorthwindonlocalSS】,单击【下一步】。
在下一个屏幕中,选择【从源
数据库复制表和视图】,再单击【下一步】。选择想要拷贝的每一个表,如图F所示。记住,你现在可以跳过“产品”表,因为刚才已经
升迁了那个表。因此,请在此屏幕中选择除“产品”之外的其他所有表(和查询)。
图F
勾选你想导入的表和查询(视图)
转换数据在如图F所示的屏幕中,你可更改
数据源中的列属性。下面来进行一次简单的示范
转换。请单击“客户”表右侧的省略号按钮。在随后出现的屏幕中,请选择“公司名称”行,将“大小”从40改为60,如图G所示。
图G
更改一个列的“大小”属性
单击【编辑SQL】按钮,查看向导在SQL Server上创建“客户”表时会实际运行的CREATE TABLE语句。你可在此窗口中直接修改SQL语句,但最好还是在上一个屏幕中,通过图形用户界面来进行修改。
你也许会注意到,“客户ID”列没有标记成“客户”表的主键。通过修改语句,你可快速进行修改。在本例中,你需要在第二行中插入关键字PRIMARY KEY NOT,如图H所示。然后,单击【确定】返回上一个屏幕。还要注意,“公司名称”列的“大小”属性确实为60。
图H
检查SQL CREATE TABLE语句在【
转换】卡片