仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 802|回复: 7
打印 上一主题 下一主题

[学习教程] MYSQL编程:将Access数据库移植到SQL Server 7.0

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:46:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL。然而,如果你的项目不是在GPL协议下的话,你必须为使用MySQL来支付许可费用,或者你可能因为这个因素而将你的项目改为遵循GPL。access|server|数据|数据库
跟着用户关于企业级高功能数据库的需求的增加,用户经常要从MicrosoftAccessJet引擎的文件-服务器情况下转换到
MicrosoftSQLServer的客户-服务器情况。MicrosoftOffice2000中的Access2000UpsizingWizard可完成将数据表和
查询转移到SQLServer7.0中。假如您用的是Access的较早的版本,您能够先将它晋级为Access2000,然后再利用个中的
UpsizingWizard,从而将您的使用移植到SQLServer中。

假如您其实不太乐意接纳Access2000和UpsizingWizard来完成移植,本文能够作为将Access2000移植到SQLServer的一
个指南。转移一个Access上的使用起首必要将数据转移到SQLServer,然后将查询转移进数据库,或是转移为SQL文件以备
稍后实行。最初要接纳的步骤是移植使用程序。

数据库移植顶用到的SQLServer工具

SQLServer办理器(SQLServerEnterpriseManager)

SQLServer办理器同意对SQLServer和SQLServer中的工具举行企业级的设置和办理。SQLServer办理器供应一个强有
力的scheduling引擎,高度的容错力和一个嵌进式的复制办理界面。利用SQLServer办理器能够完成以下功效:

办理毗连和用户允许

创立剧本程序

办理SQLServer工具的备份

备份数据和事件处置日记

办理表、视图、存储历程、触发器、索引、划定规矩、默许值和用户界说的数据范例

创建全文本索引、数据库图表和数据库保护企图

输出和输入数据

转换数据

实行各类收集办理义务

在以MicrosoftWindowsNT为操纵体系的盘算机中,SQLServerManager由SQLServerSetup举行安装,并被默许为服务
器组件,而在运转着WindowsNT和MicrosoftWindows95的呆板上,它将被默许为客户方组件。您将从SQLServer
Manager的图形用户界面中启动数据转移服务(DTS,DataTransformationServices)。

数据转移服务(DataTransformationServices,DTS)

数据转移服务同意您在多种异构数据源之间输出和输入数据,这些数据源接纳基于数据库的OLE系统布局;或在利用SQL
Server7.0的多个盘算机之间转移数据库和数据库工具;您还能够经由过程使用数据转移服务,更便利地在一个在线事件处置
体系(OLTP)中创建数据堆栈和数据中央。

DTSWizard同意您交互地创立DTS包,经由过程OLEDB和ODBC来输出、输入、考证和转移数据。DTSWizard还同意您在干系型数
据库之间拷贝图解(schema)和数据。

SQLServer查询剖析器(QueryAnalyzer)

SQLServer查询剖析器是一种图形化的查询工具,经由过程它您能够剖析一个查询,同时实行多个查询,检察数据和猎取索引
倡议。SQLServer查询剖析器供应了showplan选项,可用来显现SQLServer查询优化器所选择的数据提取办法。

SQLServerProfiler

SQLServerProfiler能够及时地捕捉数据库服务器举动的一连纪录。SQLServerProfiler同意您监控SQLServer发生的
事务,过滤基于用户指定尺度的事务,或将操纵步骤输入到屏幕、文件或数据表。使用SQLServerProfiler,您能够从头
实行所捕捉的上一次操纵。这类工具能够匡助使用程序开辟者辨认那些大概会下降使用程序功能的事件处置。在将一个基
于文件系统布局的使用程序移植到客户/服务器布局中时该特征是很有效的,由于它的最初一步包含劈面向新的客户/服务
器情况的使用程序举行优化。

转移表和数据

利用DTSWizard将您的Access数据转移到SQLServer,可接纳以下步骤:

在SQLServerManager(EnterpriseManager)的工具菜单中,鼠标指向“DataTransformationServices”,然后点击
“ImportData.”

在“选择数据源”(ChooseaDataSource)的对话窗口中,选择MicrosoftAccess为数据源,然后输出您的.mdb文件
名(mdb为文件扩大名)大概选择扫瞄文件。

在“选择数据方针”(ChooseaDestination)的对话窗口中,选择“MicrosoftOLEDBProviderforSQLServer”,
再选择好数据库服务器,然后点击所需的认证形式。

在“指定表备份或查询”(SpecifyTableCopyorQuery)的对话窗口中,点击“拷贝表”(Copytables)。

在“选择数据源”的对话窗口中,点击“选择一切项”(SelectAll)。

移植MicrosoftAccess查询

您能够将Access的查询以上面的格局之一转移至SQLServer中:

事件处置SQL剧本程序(Transact-SQLscripts)

事件处置SQL语句一般是由数据库程序挪用的,可是您也能够利用SQLServer7.0中包括的SQLServer查询剖析器间接运
行它们。SQLServer查询剖析器可匡助开辟者测试事件处置SQL语句,或运转那些实行查询处置、数据操纵(拔出,修
改,删除)和数据界说(创立表)的事件处置SQL语句。

存储历程(Storedprocedures)

开辟者能够将年夜部分发生自Access查询(查找,拔出,修正,删除)的事件处置SQL语句转移至存储历程。用事件处置SQL
语句誊写的存储历程能够用来对您的数据存取打包,并使之尺度化,并且存储历程实践上是存储在数据库中的。存储历程
能够带参数,也可不带参数,能够由数据库程序挪用大概由SQLServer查询剖析器手动实行。

视图(Views)

视图是从一个或多个表中显现特定的行和列的假造表。它们同意用户能够不间接实行组成查询基本的庞大毗连而创建查
询。视图不撑持参数的利用。毗连多个数据表的视图不克不及用INSERT,UPDATE或DELETE语句来修正。视图由事件处置SQL语
句挪用,也可用于SQLServer查询剖析器中运转的程序段。SQLServer视图和SQL-92尺度不撑持视图中的ORDERBY排序子
句。如欲懂得事件处置SQL,存储历程和视图的其他信息,请参阅SQLServer在线参考书。

Access查询范例的SQLServer移植选择与倡议

一个SELECT语句能够存储在事件处置SQL文件、存储历程或是视图中。创建存储历程是将数据库使用开辟与数据库计划的物
理实行分隔的最好办法。存储历程可在一处创立而由使用程序挪用。

假如存储历程所基于的数据库变更了,而存储历程经由细心的修正以反响这些变更,则对存储历程的挪用将不会遭到破
坏。

交织表(CROSSTAB)

交织表常常用于总结报表。

一个Access的交织表能够经由过程SQL程序段、存储历程或视图中的事件处置SQL语句来实行。每当收回一个查询时,数据毗连
被重现实行以确保比来的数据失掉利用。

依据实践使用情形,对照符合的办法是将交织表中的数据存储为一个一时表(参考上面的MAKETABLE),一时表对资本的
需求对照少,可是一时表在创建的同时只供应对数据的一个快照(snapshot)。

创立表(MAKETABLE)

Access中的“MAKETABLE”(创立表)能够经由过程事件处置SQL剧本程序或存储过程当中的事件处置SQL言语的建表语句
“CREATETABLE”来实行。语法以下所示:

SELECT[ALL|DISTINCT]

[{TOPinteger|TOPintegerPERCENT}[WITHTIES]]

<select_list>

[INTOnew_table]

[FROM{<table_source>}[,…n]]

[WHERE<search_condition>]

[GROUPBY[ALL]group_by_expression[,…n]

[WITH{CUBE|ROLLUP}]

CREATETABLEmytable(lowint,highint)

UPDATE(修正)

UPDATE语句能够存储在事件_SQL剧本程序中,但是对照好地实行UPDATE语句的办法是创立一个存储历程。

APPEND(增加)

ALLEND语句能够存储在事件_SQL剧本程序中,但是对照好地实行APPEND语句的办法是创立一个存储历程。

移植MicrosoftAccess的查询到存储历程和视图

每一个Access查询都必需用以下的一系列语句交换:

CREATEPROCEDURE<NAME_HERE>AS

<SELECT,UPDATE,DELETE,INSERT,CREATETABLEstatementfromMicrosoftAccess>

GO

CREATEVIEW<NAME_HERE>AS

<Place(SELECTonly,withnoparameters)MicrosoftAccessQuery>

GO

对每一个Access查询应实行:

翻开Access,然后在SQLServer中,翻开SQLServer查询剖析器。

在Access的数据库窗口中点击“Queries”tab键,然后点击“Design”按钮。

在“View”菜单上点击“SQL”按钮。

将全部查询粘贴到SQLServer查询剖析器中。

测试语法,保留事件处置SQL语句以备后用,大概在数据库中实行这些语句。您能够选择将事件处置SQL语句保留到一段脚
本程序中。

移植MicrosoftAccess查询到事件处置SQL语句

年夜部分的Access查询应当转换成存储历程和视图。但是,有一些使用程序开辟者不太经常使用的语句能够存储为事件处置SQL脚
本,一种以sql为文件扩大名的文本文件。这些文件能够在SQLServer查询剖析器中运转。

假如您盘算将一些Access查询转换为sql文件的话,能够思索依据它们利用的体例有区分地将这些事件处置SQL语句分离放
在几个剧本程序中。比方,您能够将必需以一样频次运转的事件处置SQL语句回类到统一个剧本中。另外一个剧本中则应包括
一切只在某些前提下运转的事件处置SQL语句。别的,必需以必定按次实行的事件处置SQL语句应该回类到一个不一连的脚
本中。

将Access语句转移到事件处置SQL文件

将语句拷贝到SQLServer查询剖析器中

利用蓝色的多选项图标剖析语句

在得当时分实行该语句

要实行Access中的创立表(MAKETABLE)的查询义务的开辟者在SQLServer中有几种选择。开辟者可创立以下工具之一:

一个视图

视图具有静态的假造表的效果,可供应比来的信息。这是一个输出/输入强化器,由于每当收回一个查询时它都请求对数据
表重现创建毗连。

一个一时表

一时表为已毗连的用户会话创建一个快照。您能够创建部分的或全局的一时表。部分一时表只在以后会话中可见,而全局
一时表则在一切会话都是可见的。在部分一时表的名字前加上单个数字的前缀((#table_name)),而在全局一时表的名字
前加上两位数字的前缀(##table_name)。对一时表的查询实行起来十分快,由于它们获得一个了局集的时分一般只用一个
表,而不是将多个表静态地毗连在一同来。

如欲懂得一时表的其他信息,请参阅SQLServer在线参考书。

SQLServer7.0中的数据转换服务(DTS)同意您经由过程创立包来完成一时表创建的尺度化、主动化和进度布置。比方,当您
移植Access2.0中的Northwind典范数据库时,用于季度数据报表的交织表可变化为一个视图大概一个可在标准基本上建
立一时表的数据转换。如欲懂得关于DTS的其他信息,请参阅SQLServer在线参考书。

其他计划上的思索

上面是当您将您的Access使用移植到SQLServer时必需思索的一些其他成绩:

利用参数

带参数的SQLServer存储历程必要一种分歧于Access查询的语法格局,比方:

Access2.0格局:

查询名:EmployeeSalesByCountry,inNWIND.mdb:

PARAMETERS[BeginningDate]DateTime,[EndingDate]DateTime;

SELECTOrders.[OrderID],[LastName]&","&[FirstName]ASSalesperson,Employees.Country,Orders.
[ShippedDate],[OrderSubtotals].SubtotalAS[SaleAmount]

FROMEmployeesINNERJOIN(OrdersINNERJOIN[OrderSubtotals]ONOrders.[OrderID]=[OrderSubtotals].
[OrderID])ONEmployees.[EmployeeID]=Orders.[EmployeeID]

WHERE(((Orders.[ShippedDate])Between[BeginningDate]And[EndingDate]))

ORDERBY[LastName]&","&[FirstName],Employees.Country,Orders.[ShippedDate];

SQLServer7.0格局:

CREATEPROCEDUREEMP_SALES_BY_COUNTRY

@BeginningDatedatetime,

@EndingDatedatetime

AS

SELECTOrders.[OrderID],[LastName]+","+[FirstName]ASSalesperson,Employees.Country,

Orders.[ShippedDate],[OrderSubtotals].SubtotalAS[SaleAmount]

FROMEmployeesINNERJOIN(OrdersINNERJ

也许最好的策略是以不变应万变:给客户他们所需要的,不多也不少。如果MySQL学习教程适合他们,他们就不应该买别的工具。事实上,云计算产业一直推崇自助服务,但提供这些服务的公司已经开始认识到解决方案提供商推销他们商品的价值。
老尸 该用户已被删除
沙发
发表于 2015-1-19 23:10:20 来自手机 | 只看该作者
对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。
兰色精灵 该用户已被删除
板凳
发表于 2015-1-26 10:00:44 | 只看该作者
大家注意一点。如下面的例子:
admin 该用户已被删除
地板
发表于 2015-2-4 13:53:20 | 只看该作者
理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识
乐观 该用户已被删除
5#
发表于 2015-2-10 01:11:40 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
不帅 该用户已被删除
6#
发表于 2015-2-28 12:05:36 | 只看该作者
还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。
山那边是海 该用户已被删除
7#
发表于 2015-3-9 23:03:36 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
蒙在股里 该用户已被删除
8#
 楼主| 发表于 2015-3-17 03:08:54 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-27 21:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表