解析用SSMA移植Acceses到SQL几点问题
日期:2007年12月17日 作者: 查看:[大字体 中字体 小字体]-
这些年来,Access数据库一直在PC平台占据主导地位,使用它建立了大量的部门数据库。随着这些数据库的应用,它们中的大多数已经慢慢地具有应急使命,现在需要的是加固成为一个安全的客户端—服务器引擎。
在微软想要统治世界的伟大计划中,更希望这种引擎是SQL Server。随着这种想法,微软针对Access提供了免费的SQL Server移植工具——SSMA。
对于开发者来说,移植工具已有很大的实惠。但期望这种工具能够移植整个应用程序是不现实的,因为Access有一些SQL Server所没有的简单工具(例如窗体和报表性能)。但是我们有理由相信这种工具能做大部分工作,比如建立适当的表,转移数据,把查询转换成视图等。
SSMA的运行需要在.NET Framework2.0版本以上,J#2.0可重组包以及至少1GB RAM。
SSMA具有一个清晰的图形用户界面,分成四个面板。在建立一个新工程之后,首先添加一个或多个Access数据库,然后连接到适当的SQL Server数据库,下一步就是把架构(schema)转换成SQL Server。
注意,这个过程并不是运行依靠SQL Server引擎的架构,而是简单地生成了一个在SSMA中可见的,可用的SQL Server架构,同时生成一个错误、警告和信息标记的集合。
从这点来看,该工具的能力就显而易见。作为一个开始,这些标记指出转换问题,例如:不支持Access的一些函数如DateDiff,所以不能转换(当然这些函数可以被转换,但SSMA不能实现)。
你可以浏览Access架构,观察正在计划的类型映射等等,当然如果你不喜欢这种缺省映射,也完全可以改变它,或者根据特殊的工程甚至特殊的表来做改变。
查询是一个比较特别的情形。它们被转换成SQL Server视图:你可以编辑Access查询然后产生适当的SQL Server代码。这样的编辑是发生在SSMA的架构中,而不是在Access数据库本身完成。
你可以使用SSMA运行依靠数据库的SQL Server架构,它建立了一种结构来保存数据以便你可以移植数据。理论上听起来很好,但是实际上是怎样的呢?虽说尝试从任意一个数据库引擎移植到另一个都是麻烦的,且这个工具可以免费的为你做90%的工作,但它还存在一些缺陷。
例如,虽然不是SQL标准的一部分,Access需要所有日期来包装到hash记号中。不幸的是,SSMA看起来没有考虑到这点,这个疏忽的结果就是所有涉及到日期的查询结果都不能成功转换。下面是一个错误信息的例子:
/* * SSMA error messages: * A2SS0058: Following SQL statement is not supported and cannot be converted: * * SELECT DISTINCTROW EMPLOYEES.EmployeeNo, EMPLOYEES.FirstName, EMPLOYEES.LastName, EMPLOYEES.DateOfBirth, EMPLOYEES.DateEmployed * FROM EMPLOYEES * WHERE ((EMPLOYEES.DateOfBirth)>#1/1/1970#); * */ PRINT 'ERROR: SSMA failed to convert the previous statement.' 日期在数据库中是很常见的,所以这个疏忽将会影响大多数数据库转换。但要解决并不困难,如下:
SELECT EmployeeNo, FirstName, LastName, DateOfBirth FROM dbo.EMPLOYEES WHERE (DateOfBirth > CONVERT(DATETIME, '1970-01-01')) 从例子中返回正确的数据集。
(我们可以讨论一下是否是这样,例如:CONVERT(DATETIME, '1970-01-01 00:00:00', 102)可能更恰当,但是不管怎么说,我们可以转换数据处理),如果我们可以手动地做,SSMA就应该可以为我们做这件事。
还有更糟糕的问题:Access默认是在文本周围使用双引号,例如:
SELECT EMPLOYEES.EmployeeNo, EMPLOYEES.FirstName FROM EMPLOYEES WHERE ((EMPLOYEES.FirstName="Norma")); SQL Server不是这样,它使用单引号,如下:WHERE EMPLOYEES.FirstName='Norma';然而,SSMA保留了上面这样的双引号代码,没做任何改变。而且在架构产生期间并没有引发错误提示,错误提示只发生在把架构加载到SQL Server数据库的过程中。那时,SSMA抛出一个错误提示说存在一个非法列名Norma,这样视图就不能加载到SQL Server中了。以上显示出SSMA并没有做足够的语法检查。
再强调一下,Access默认使用双引号,而SSMA却不能处理如此简单平常的Access语法。这就像一个法语到英语的翻译者可以处理语言中的大多数词,却为单词“Bonjour”感到束手无策一样。
再一个例子,Access允许为字段添加规则约束,例如一个名为“Title”的字段可以接受的值可能只有Mr., Mrs., Miss., Ms等。但SQL Server不能准确地支持同样的类型约束。非常明显SSMA转换这种约束规则为一个表约束。Brilliant,做的不错,只是在代码中丢失了字段名:
ALTER TABLE [dbo].[NAMES] ADD CONSTRAINT [SSMA_CC$NAMES$Title$validation_rule] CHECK (In ('Mr.','Mrs.','Miss','Ms','Dr.','Prof.'))这不仅不能在架构转载到SQL Server时运行,同时更不能产生一个错误消息。最后一行的正确语法应该是:CHECK (Title In ('Mr.','Mrs.','Miss','Ms','Dr.','Prof.'))
那么,我们是否应该从机器上删除SSMA呢?当然不,因为它确实完全自动地做了大量的工作,也提供了一个合理的环境,在那里可以看到问题区域并做出整理。指出它的缺陷,只是期望SSMA能更好。
(出处:急速软件下载学院)
-
- 解析用SSMA移植Acceses到SQL几点问题 相关文章:
- ·解读身份认证技术现实化
- ·解读防火墙日志记录 防范网络攻击
- ·详解Alexa网站流量排名
- ·Vista防火墙导致网络无法访问解决方法
- ·IDC邮件安全网关解决方案提高带宽效率
- ·Linux系统网络配置详细解析
- ·详解服务器集群系统实现方案
- ·BIOS开机自检的中文解释
- ·Vista系统中CHM文档无法打开解决方法
- ·理解ASP.NET中的三层结构
- 解析用SSMA移植Acceses到SQL几点问题 相关软件
- ·动作解谜《科学试验》游戏试玩
- ·《化解危机4》宣传片
- ·苏联解体亲历记
- ·《周公解梦》V7.85 版 测字算命
- ·中国人民解放军五大主力战史
- ·简明中国人民解放军战史
- ·《微笑娃娃》解密试玩
- ·《死亡暗礁》冒险解谜试玩
- ·解密血腥惊悚的另类职业:《我是法医》
- ·《蒸气军团》冒险解密试玩
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·Transact-SQL语句总汇
- ·无限级分类的非递归实现(存储过程版)
- ·什么是SQL注入法攻击
- ·列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
- ·SQL存储过程的概念,创建,调用,管理,删除,优点
- ·学习SQL语句之SQL语句大全
- ·客户端回调实现gridView无刷新分页
- ·关于SQL语句的优化方式
- ·精妙SQL语句收集
- ·2台服务器数据库如何同步?
- ·Delphi程序执行时实时生成报表
- ·ADO连接数据库字符串大全
- ·VB.NET的数据库基础编程(1)
- ·解决SQL Server常见的七个经典问题
- ·SQL数据库高级教程:学习 SQL 函数
- ·SQL数据库高级教程:学习 SQL IN
- ·如何实现将vsflexgrid中修改的数据反馈到数据库中
- ·直接粘贴剪贴版的位图数据到Image控件
- ·SQL注入的不常见方法
- ·查询及删除重复记录的方法
特别推荐
- ·学习SQL语句之SQL语句大全
- ·数据备份失败的五个原因及解决办法
- ·解决SQL Server常见的七个经典问题
- ·SQL存储过程的概念,创建,调用,管理,删除,优点
- ·带你轻松接触13个数据库术语
- ·如何恢复系统数据库如何恢复系统数据库?
- ·通过实例讲解由浅入深学会存储过程
- ·学会三个范式快速成为数据库设计的高手
- ·SQL数据库应聘人员面试时经常被问的问题
- ·问答:查询分析器不能单步调试的的原因
- ·数据库基础知识:SQL中的IIF语句详解
- ·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
- ·你知道吗?优化数据库前的十大问题
- ·自动备份注意事项让你远离误删数据噩梦
- ·关于MSSQL数据库日志满的快速解决办法
- ·SQL安全设置攻略
- ·SQL注入的不常见方法
- ·关于SQL语句的优化方式
- ·SQL优化34条
- ·查询及删除重复记录的方法
