首先我说的是ACCESS2000和SQL2000之间的转换。我没有尝试过其他方法。希望大家多多尝试,一定有办法的。转换方法1、在“控制面板”下的“管理工具”中打开“数据库源”。2、按“添加”添加新的数据源,在选择栏中选择“DriverdomicrosoftAccess(*.mdb)”,完成后会出现一个框,在“数据库源”中输入你要写入的名称,我这里命名为“ABC”,表示不需要填写。然后按下面的选项找到你的数据库地址并选择(注意,请先备份你自己的ACCESS数据库),然后确定。数据源搭建到这里,剩下的就是转换了。3、打开SQL2000企业管理器,进入数据库,新建一个空数据库“ABC”。4、选中新建的数据库,按下鼠标右键,在“所有任务”下选择“导入数据”,按“下一步”继续。5、在数据库源下拉菜单中选择“DriverdomicrosoftAccess(*.mdb)”,在“用户/系统DSN”中选择刚刚添加的“ABC”,按“下一步”。6、“用途”不需要修改,选择服务器(一般是你本地本地,也可以选择服务器地址或局域网地址来确定你的权限是否可以操作),使用WINDOWS认证使用自己的系统管理用户身份操作,使用SQL身份操作认证可用于网站的操作,推荐后者。7、选择使用SQL身份进行操作认证后,填写你的用户名和密码。我选择系统默认号sa,****,数据库选择新建的ABC,按Next。8.这一步有两个单选项,从数据源复制表和视图,用查询命令指定要传输的数据,选择前者,按下一步继续。9、这里会出现你自己的ACCESS数据库的表。全选后进入下一步。10.在DTSImport/ExportWizard中,看到RunNow被选中,然后按Next。11.按完成继续。12、在这一步,你会看到你的数据已经导入到SQL2000中了。当出现XXX表已成功导入数据库,且所有表前均有绿色勾号时,表示所有数据已导入成功。如果有问题或者表格前面有红叉,说明表格没有导入成功。这时候你就得回头看看你的操作是否正确。最近,我正在升级一个程序以支持多个数据库。原程序数据库是SQLServer,所以用SQLServer的“导入导出数据”功能将一个SQLServer数据库转换成Access数据库,发现了一些问题,也找到了解决办法,记录在这里:1.转换程序会将SQLServer的视图转换成表而不是Access的查询;2、设置字段默认值为空字符时,SQLServer使用“”,Access使用“”;3、Access中没有GetDate()函数,应该用Now()函数代替;4、Access没有SQLServer获取客户端机器名使用的host_name()函数;5、Access中没有CaseWhenThen语句,但是可以用IIF()函数模拟函数的实现;6、发现:Access使用了VisualBasic的语言结构和函数;7、转换程序会正确转换SQLServer字段的ISNULL属性;8、Access也支持多字段索引,但设置方法有点特殊(见帮助);9、SQLServer中的bit-type1和0值在Access中为True和False;10、在Access中使用LEFTJOIN等多条语句时,必须用括号来定义;111、Access的SQL没有注释语句,SQLServer的/**/不能通用;12、一条Insert语句在Access查询中运行正常,但是程序中出现“InsertIntostatementsyntaxerror”,后来发现是语句中的其中一个列名是Access的关键字(以[分隔)]可以解决问题),但是奇怪的是语句放在Access的query中执行却没有报错。转换后的Access数据库需要检查以下几项,以保证与SQLServer的一致性:1.主键。转换后的Access数据库没有主键,需要自己设置;2.自增字段。转换程序会将SQLServer的自增字段转换为数值类型,需要手动修改为Access的“自动编号”类型;3.默认值。转换程序不会转换SQLServer中设置的默认值,需要手动设置;4.Bigint类型字段。转换程序会将SQLServer的bigint转换为decimal,需要手动调整为Accessinteger或longinteger;5.索引。转换程序不会转换索引,需要在Access中手动创建索引。在Delphi下,如果想让程序同时支持Access和SQLServer,需要注意以下几个方面:1、在Access中使用SELECT*FROMBooksWHERERegDate='2007-5-1'时,将出现“标准表达式中的数据类型无效”。Match”(RegDate是日期类型),则必须使用SELECT*FROMBooksWHERERegDate=#2007-5-1#或SELECT*FROMBooksWHERERegDate=CDate('2007-5-1');但在InAccess,Insert,delete,update中使用单引号分隔日期可以正常执行。2.尽量不要使用SQLServer的bigint类型,尤其是字段自增时;3.最大varchar(text)Access的类型只有255,所以如果一个文本类型的字段大于255,最好定义为备注类型(在Access中)或者文本类型(在SQLServer中);4.一般会出现如下错误Access中出现:参数对象定义异常,提供的信息不一致或不完整,将对应Query的ParamCheck设置为False即可;5、Access中逻辑值为-1,库中为0,但为1和0在SQLServer中,所以写BoolField=1这样的语句时存在兼容性问题,应该改为BoolField<>0;6.只有Query机智hAccess中的主键可以更新,但是SQLServer没有这个要求。以上就是Access和SQL数据库相互转换的方法和注意事项。
