Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • 在Recordset对象中..
  • 使用代码刷新ODBC链接表
  • 在 Access 中使用 ..
  • 用ADO列出某个表的所有字..
  • Access中ADO和DA..
  • 如何在Select语句中动..

最新文章

  • 实验报告 --DAO与AD..
  • 用代码创建mdb格式的Ac..
  • 连接后台数据库提示 无法启..
  • 64位windows系统如..
  • Access的DAO准确获..
  • 利用代码自动创建ODBC源

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > DAO/链接表/ADO/ADP
DAO/链接表/ADO/ADP

把Access数据库移植到Microsoft SQL SERVER7.0

 2002/03/25 网易 chedong 

  当对企业级的高性能的数据库的要求和需求增加时,客户有时需要从文件?服务器环境的Microsoft Access Jet引擎迁移到客户?服务器环境的Microsoft SQL Server。随同微软Office 2000发行的Access 2000 Upsizing Wizard(升级向导)可以把Access表格和查询迁移到SQL Server 7.0。如果你使用Access的早期版本,你也可以通过升级到access 2000,并使用升级向导把你的应用程序移植到SQL SERVER。

  如果你不喜欢使用Access 2000和升级向导进行移植,那么这篇文章作为向迁移一个Access应用程序到SQL Server。要迁移Access应用程序,你需要首先把数据迁移到SQL Server 7.0,然后把access查询移植到数据库或SQL文件,最后是移植应用程序。

  移植中使用的SQL Server工具

  SQL Server中的一些工具可以帮助你移植access数据和应用程序

  SQL Server企业管理器

  SQL Server企业管理器允许对SQL Server和SQL Server对象的企业范围的设置和管理。SQL Server企业管理器提供了一个强大的任务安排引擎、管理警告能力、以及内建的复制管理界面。你还可以用SQL Server企业管理器来:

  管理登录和用户权限 创建脚本 管理SQL SERVER对象的备份 备份数据库和事务日志 管理表、视图、存储过程、触发器、索引、规则、缺省设定和自定义数据类型

  创建全文索引、数据库图表和数据库维护方案 输入输出数据 转换数据 执行不同的Web网络管理任务 缺省情况下,SQL Server企业管理器被SQL Server作为服务器软件的一部分安装在运行Windows NT操作系统的计算机上,同时作为客户软件的一部分安装在运行Windows NT和Windows 95操作系统的计算机上。你很可能要从SQL Server企业管理器的图形用户界面启动数据转换服务(Data Transformation Services,DTS)。

  

  数据转换服务(DTS)

  数据转换服务允许你在使用一个OLE DB结构的多个数据源之间输入和输出数据,这样的数据源有Microsoft Excel电子表格,以及在运行SQL Server 7.0的多台计算机之间执行数据库和数据库对象的传输。你还可以用DTS来执行数据转换,以便用它来通过一个在线事务处理系统建立数据仓库和数据商场。

  DTS向导允许你交互的创建使用OLE DB和ODBC来进行输入、输出、确认和不同数据的转换的DTS包。向导还允许你在相关数据库之间拷贝计划和数据。

  SQL SERVER查询分析器(Server Query Analyzer)

  SQL SERVER查询分析器是一个图形化查询工具,它允许你可视化的分析一个查询方案,同时执行多重查询、查看数据、获得索引建议。SQL Server查询分析器提供显示方案(showplan)选项,可以用它来报告SQL Server查询优化器选择的数据获取方案。

  SQL Server轮廓(Server Profiler)

  SQL SERVER轮廓实时捕捉服务器活动的连续的记录。SQL Server轮廓允许你监控通过SQL Server产生的事件,过滤基于用户指定准则的事件和直接跟踪到显示器、文件或者表的输出。使用SQL Server轮廓,你可以重放先前的捕捉记录。这个工具帮助应用程序开发人员鉴别可能使应用程序性能恶化的事务。当从一个基于文件的体系结构移植一个应用程序到一个基于客户/服务器的体系结构时,它是很有帮助的,因为最后的步骤包含针对应用程序的新客户/服务器环境优化该应用程序的操作。

  移动表格和数据

  使用DTS向导迁移你的access数据到SQL Server,你可以使用这些步骤:

  在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation

  Services(数据转换服务),然后选择Import Data(导入数据)。

  在Choose a Data Source(选择数据源)对话框中选择Microsoft access as th e Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。

  在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。

  在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。

  在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。

  移植Microsoft access查询

  你必须以这些格式之一迁移你现有的access查询到SQL Server:

  

  Transact-SQL脚本 Transact-SQL语句通常从数据库程序被调用,但是你可以使用包含在SQL Server

  7.0中的SQL Server查询分析器在数据库中直接运行它们。SQL Server查询分析器帮助开发者针对开发数据库测试Transact-SQL语句,或运行Transact-SQL语句执行查询、数据操作(INSERT、UPDATE、DELETE)或数据定义(CREATE TABLE)。

  存储过程 开发者可以把大多数源于access查询(SELECT、INSERT、UPDATE和DELETE)的Tr ansact-SQL语句转换为存储过程。用Transact-SQL写的存储过程可以用来封装和标准化你的数据访问,存储过程实际上存储在数据库内。存储过程能带或者不带参数运行,可以从数据库程序调用,也可以从SQL Server查询分析器手动执行。

  视图 视图作为虚拟的表格从一个或更多的表格显露指定的行和列。它们允许用户创建查询而不用直接实现那些复杂的底层查询。视图不支持参数。向视图加入一个更多的表格不能使用INSERT、UPDATE、或DELETE语句修改。视图可以用Transact-S QL语句调用,并且也可以在SQL Server查询分析器中的*.scripts中使用。SQL S erver视图和SQL-92标准不支持视图中的ORDER BY子句。

  更多关于Transact-SQL、存储过程或者视图的信息,见SQL Server Books Onlin e。

  access查询类型

  SQL Server移植选项和注释

  

  一个SELECT语句可以被存储在Transact-SQL文件、存储过程或者视图中。

  创建存储过程是实现把数据库应用程序开发同数据库设计的物理实现分离的最好方法。存储过程在一个地方创建,并且被应用程序调用。

  如果底层数据库改变了,并且存储过程被仔细的修改以反映这些变化,则对存储过程的调用不会被“中断”。

  CROSSTAB 交叉表经常用于摘要报告。

  access交叉表可以在SQL脚本中作为Transact-SQL SELECT语句实现,也可以作为存储过程或者一个视图实现。每次一个查询被列举的时候,数据节点将会重执行,请确保使用最新的数据。

  根据不同的数据库需要,也许把交叉表中的数据存储为临时表比较合适(请参看下一行的MAKE TABLE)。临时表只需要很少的资源,但是只提供了创建临时表的时刻,数据的一个照相。

  MAKE TABLE

  access的MAKE TABLE可以在Transact-SQL脚本或者存储过程中作为Transact-SQ L的CREATE TABLE语句实现。语法如下:

  SELECT [ ALL | DISTINCT ]

  [ {TOP integer | TOP integer PERCENT} [ WITH TIES] ]

  [ INTO new_table ]

  [ FROM {} [,…n] ]

  [ WHERE ]

  [ GROUP BY [ALL] group_by_expression [,…n]

  [ WITH { CUBE | ROLLUP } ]

  CREATE TABLE mytable (low int, high int)

  UPDATE

  UPDATE语句可以被存储在Transact-SQL脚本中;但是,实现UPDATE语句的推荐方法是创建一个存储过程。

  APPEND

  APPEND语句可以被存储在Transact-SQL脚本中;但是,实现APPEND语句的推荐方法是创建一个存储过程。

  DELETE

  DELETE语句可以被存储在Transact-SQL脚本中;但是,实现DELETE语句的推荐方法是创建一个存储过程。

  把微软access查询迁移到存储过程和视图

  每个access查询必须被置入这集合语句的集合:

  CREATE PROCEDURE AS

  < SELECT, UPDATE, DELETE, INSERT, CREATE TABLE statement from Microsof t access >

  GO

  CREATE VIEW AS

  GO

  对每个access查询:

  打开access,然后在SQL Server上打开SQL Server查询分析器。

  在access中,在数据库窗口,单击Queries(查询)标签,然后单击Design(设计)。

  

  在View(视图)菜单上,单击SQL。

  粘贴整个查询到SQL Server查询分析器。

  测试语法和并且为以后使用保存Transact-SQL语句,或者在数据库中运行语句。

  你可以有选择的保存Transact-SQL为脚本。

  移植微软access查询到Transact-SQL脚本

  大多数access查询应该被翻译成存储过程和视图。然而,应用程序开发人员很少运行一些语句可以作为一个Transact-SQL脚本存储,这是一个文件扩展名为.sql 的文本文件。这些文件可以从SQL Server查询分析器中运行。

  如果你计划把你的一些access查询转换为.sql文件,考虑把Transact-SQL语句分成几个脚本,具体操作要根据如何使用这些语句而定。例如,你可以把那些必须以同一频率运行的Transact-SQL语句组合到一个脚本中。另一个脚本可能包含那些只能在特定条件下运行的Transact-SQL语句。另外,那些必须按一定的顺序执行的Transact-SQL语句应该组合在一个离散脚本中。

  要把一个access语句转换为Transact-SQL文件:

  复制该语句到SQL Server查询分析器。

  使用蓝色的检查标记图标解析语句。

  如果合适就执行语句。

  MAKE TABLE 语句在SQL Server中有几种转换方式。开发人员可以创建下面任意一种:

  视图 视图创建一个动态的、提供最新信息的虚拟临时表格的效果。这是I/O密集的,因为每次列举一个查询时就要重新加入数据表。

  临时表。

  临时表为一个连接用户会话创建一个数据快照。你可以创建局部和全局临时表。

  局部临时表只能在当前会话中是可视的;全局临时表对所有会话都是可视的。局部临时表的前缀用单一的数字符号命名(#table_name),全局临时表的前缀用两个数字符号命名(##table_name)。对临时表的查询运行得很快,因为它们通常只使用一个表格而不是动态的连接几个表来获得一个结果集。

  关于临时表的更多信息,见SQL Server Books Online。


  在SQL SERVER7.0中数据变换服务(DTS)允许你通过创建包实现临时表创建的标准化、自动化和定期计划执行。

  例如,当你移植access 2.0 Northwind示例数据库时,为季度数据报告而创建的交叉表被转换为一个视图或者是在常规基础上创建临时表的数据转换。关于DTS的更多信息,参见SQL Server Books Online。

  附加设计考虑

  下面是一些当你把你的access应用程序移植到SQL Server时应该考虑的问题。

  使用参数

  带参数的SQL Server存储过程需要一种来自access查询的不同的语法,例如:

  access 2.0:

  查询名称:Employee Sales By Country, in NWIND.mdb:

  PARAMETERS [Beginning Date] DateTime, [Ending Date] DateTime; SELECT Orders.[Order ID], [Last Name] & ", " & [First Name] AS Salespe rson, Employees.Country, Orders.[Shipped Date], [Order Subtotals].Subt otal AS [Sale Amount]

  FROM Employees INNER JOIN (Orders INNER JOIN [Order Subtotals] ON Orde rs.[Order ID] = [Order Subtotals].[Order ID]) ON Employees.access数据库 = Orders.access数据库

  WHERE (((Orders.[Shipped Date]) Between [Beginning Date] And [Ending D ate]))

  ORDER BY [Last Name] & ", " & [First Name], Employees.Country, Orders. [Shipped Date];

  SQL Server 7.0:

  CREATE PROCEDURE EMP_SALES_BY_COUNTRY @BeginningDate datetime,

  @EndingDate datetime

  AS

  SELECT Orders.[Order ID], [Last Name] + ", " + [First Name] AS Salespe rson, Employees.Country,

  Orders.[Shipped Date], [Order Subtotals].Subtotal AS [Sale Amount]

  FROM Employees INNER JOIN (Orders INNER JOIN [Order Subtotals] ON Orde rs.[Order ID] = [Order Subtotals].[Order ID]) ON Employees.access数据库 = Orders.access数据库

  WHERE (((Orders.[Shipped Date]) Between @BeginningDate And @EndingDate ))

  ORDER BY [Last Name] + ", " + [First Name], Employees.Country, Orders. [Shipped Date]

  GO

  更多信息,请参看SQL Server Book Online

  嵌套查询(Nested Queries)

  在嵌套形式中,某些Access查询是在别的查询的顶层上创建的。Access中的嵌套查询在SQL Server中变成为嵌套视图。而ORDER BY不能作为视图定义的一部分,可以用附加一个查询视图的SELECT语句来代替它。如果你有嵌套的access查询,你需要创建一系列视图,然后创建那些在视图上执行SELECT语句的存储过程,并且把ORDER BY子句粘贴到SELECT语句上。

  例如,下面的access查询:

  SELECT * FROM STUDENTS

  WHERE COUNTRY = "USA"

  ORDER BY LAST_NAME

  变成一个SQL Server视图和存储过程

  CREATE VIEW US_STUDENTS AS SELECT * FROM STUDENTS

  WHERE COUNTRY = "USA"

  CREATE PROCEDURE US_STUDENTS_ORDER AS

  SELECT * FROM US_STUDENTS ORDER BY LAST NAME

  检查SQL Server

  你可以使用SQL Server查询分析器的查询菜单上的Parse命令检查SQL Server中的视图或存储过程函数。在下面的例子中,Access查询使用DISTINCTROW。SQL Ser ver使用Transact-SQL DISTINCT命令执行相同的操作。Parse命令允许开发人员孤立并且修改他们的access查询中的语法问题。

  连接你的应用程序

  许多Access应用程序是用Microsoft Visual Basic for Applications或Visual Basic for Applications access用户接口写成的。

  使用Visual Basic for Applications作为应用程序开发环境的应用程序能在SQL

  Server下运行,用Jet ODBC驱动程序。

  使用access用户接口中的窗体和报表的应用程序能使用连接表访问SQL Server。

  如果你的应用程序要使用连接表,确保所有Access表转移到SQL Server以增强性能。对access (Jet)和SQL Server的混合体使用连接表创建查询是资源密集的。

  移植你的文件-服务器应用程序到客户/服务器模型第一步是确保应用程序能在新数据库上工作。下一步是通过下面的方法为客户/服务器环境优化应用程序:

  监听传送到服务器的Transact-SQL语句。

  SQL SERVER轮廓是监听Transact-SQL语句怎样被送到数据库的一个有用的工具。

  如果你在SQL Server上运行没有修改的access应用程序,你可能会通过使用DAO和Jet/ODBC驱动程序向数据库传送未经优化的Transact-SQL。例如,使用Jet/ODBC 驱动程序的DELETE语句来删除1000行将产生1000次到数据库的调用,这将会严重的影响产品数据库的性能。在这个例子中,SQL SERVER轮廓展示了1000个删除语句,允许你使用有Microsoft OLE DB Provider for SQL Server和Microsoft Ac tiveX Data Objects (ADO)修改应用程序,从而改进应用程序的效率。

  实现高效索引。

  在你确定传送到数据库的Transact-SQL语句的效率以后,你可以使用索引更有效的调整那些语句。索引调整向导(Index Tuning Wizard)允许你查找瓶颈,并且向你提出建议。你的语句并没有被修改,但是由于正确使用索引而使它们的性能提高了。

  SQL SERVER和access查询语法

  下列的表格显示SQL SERVER和access查询语法之间对应的区别。

  access查询语法

  SQL Server查询语法

  查询中的ORDER BY 在视图中不支持ORDER BY

  DISTINCTROW

  DISTINCT

  用"&"做字符串联用"+"做字符串联

  支持的子句/操作符:

  SELECT SELECT TOP N INTO FROM WHERE GROUP BY HAVING UNION (ALL) ORDER BY WITH OWNERaccess 支持的子句/操作符:

  SELECT SELECT TOP N INTO FROM WHERE GROUP BY HAVING UNION (ALL) ORDER BY COMPUTE FOR BROWSE OPTION

  不支持: COMPUTE, FOR BROWSE, OPTION 不支持: WITH OWNERaccess

  统计函数:

  AVG

  COUNT(column)

  COUNT(*)

  MIN

  MAX

  FIRST

  LAST

  STDEV, STDEVP

  SUM

  VAR, VARP 统计函数:

  AVG([ALL | DISTINCT] expression)

  COUNT([ALL | DISTINCT] expression)

  COUNT(*)

  GROUPING (column_name)

  MAX(expression)

  MIN(expression)

  STDEV, STDEVP

  SUM([ALL | DISTINCT] expression)

  VAR, VARP

  不支持: FIRST, LAST

  TRANSFORM

  (SELECT statement)

  PIVOT

  WITH ROLLUP, WITH CUBE on SELECT statements

  MAKE TABLE, ALTER TABLE

  支持的子句:

  CONSTRAINT

  ADD COLUMN

  DROP COLUMN

  DROP INDEX

  Also, stand-alone statement: DROP INDEX

  CREATE TABLE, ALTER TABLE

  支持的子句:

  CONSTRAINT

  ADD COLUMN

  DROP COLUMN

  Stand-alone statement: DROP INDEX
 
发布人:chedong-现代教育技术支持  
分享到:
点击次数:  更新时间:2003-12-21 09:17:10  【打印此页】  【关闭】
上一条:ACCESS中使用SQL语句应注意的地方及几点技巧  下一条:用CELL组件显示Access数据库的图片对象



相关文章

  • • 实验报告 --DAO与ADO效率之比较
  • • 用代码创建mdb格式的Access文件
  • • 连接后台数据库提示 无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开 的解决办法
  • • 64位windows系统如何使用64位的ADO连接Accesss accdb数据库(ACE.OLEDB)
  • • Access的DAO准确获取记录集Recordset的记录数Recordcount
  • • 利用代码自动创建ODBC源
  • • 在打开Ado记录集之前尽量先判断记录集有否打开,如打开则先关闭之
  • • 快速获取Excel文件所有工作表表名

热门文章

  • [2009-04-17] ADP禁止SHIFT键access数据库
  • [2009-07-22] 谈ADO访问不同数据库的差别access数据库
  • [2005-02-06] 如何更改Access表的字段名access数据库
  • [2016-11-26] [Microsoft][ODBC Microsoft Access 驱动程序] Microsoft Jet 数据库引擎打不开文件'(未知的)'access数据库
  • [2013-10-06] access中ADO与DAO格式的区别和写法【总结】access数据库
  • [2009-05-04] ADO打开带密码的ACCESS数据库access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn