怎样将ACC数据库转换为SQL数据库?需要哪些辅助软件?

怎样将ACC数据库转换为SQL数据库?需要哪些辅助软件?,第1张

1、必须先安装Microsoft Office Access 2003,和SQL Server数据库

2、用Access 2003打开动数据库,打开后按工具栏——数据库实用工具——转换数据库——转换为2002-2003格式,把数据库转换成2003格式。

3、转换完成后再用Access 2003打开,打开后按工具栏——数据库实用工具——升迁向导——新建数据库——填写SQL数据库登陆名称、密码和要新建的数据库(准备转成新的数据库),按下一步,按“ 》”键,再按下一步,选取所有选项,再按下一步,选择“不对应用程序作任何改动”,再按完成。

4、打开SQL企业管理器——数据库---选中相应的数据库---右键所有任务-----生成SQL脚本——常规——全部显示——编写全部对象脚本——确定(记住存放的位置)。

5、用记事本打开刚才生成的SQL脚本,在编辑栏——替换——查找内容为“smalldatetime”替换为“datetime”——替换全部;完成后再在编辑栏——替换——查找内容为“nvarchar”替换为“varcha”——替换全部,完成后保存退出。

6、打开SQL企业管理器——数据库——点击新建的数据库,然后在工具栏——SQL查询分析器——文件——打开——“刚才生成的SQL脚本”——查询——执行,然后关闭窗口。

7、再回到SQL企业管理器——数据库——点击新建的数据库,然后打开工具栏——数据库转换服务——导入数据——下一步——数据源“Microsoft Access”文件名“为旧的acc数据库”——下一步——再下一步——从源数据复制表和视图——下一步——全选——下一步——立即运行——下一步——完成。

8、最后补充:

(1)由于SQL2000里面没有"自动编号",所以你的以"自动编号"设置的字段都会变成非空的字段,这就必须手工修改这些字段,并把他的"标示"选择"是",种子为"1",增量为"1",

(2)另外,ACCESS2000转换成SQL2000后,原来属性为"是/否"的字段将被转换成非空的"bit",这时候你必须修改成自己想要的属性了

(3)另外,大家要注意对时间函数的把握.ACCESS与SQL是有很多不同的.

根据以上3点,再回到SQL企业管理器——数据库——点击这个数据库下新建的数据库,将所有表的字段属性根据以上3点进行修改

补充说明:

自动增加字段需要重写。在access中经常使用的自动编号字段,导入到mssql后,他并不是自增型的int,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号

所有的默认值都丢失了。主要是数字类型和日期类型

所有now(),time(),date()要改成getdate()

所有datediff(‘d‘, time1, time2)要改成datediff(day, time1, time2)

所有datediff(‘ww‘, time1, time2)要改成datediff(week, time1, time2)

所有datediff(‘d‘, time1, time2)要改成datediff(day, time1, time2)

在mssql server中,有许多保留字,在access中是没有的,当你把数据导入到mssql的时候,问题就出来了。mssql在导入的时候,会自动给这些字段(包括数据库中的表名)加上“[字段名]”,因此,你必须修改你的脚本,把相应的字段名字(或者表名字)加上中括号,或改变字段名字为不是mssql的保留字

在用access关于时间的使用,大家喜欢使用“select * from aaaa while time="&now()”这样的sql语句,然而,在mssql中没有“now()”这个函数,而是使用“getdate()”,所以,所有的sql语句中的“now()”必须换成“getdate()”。

日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对

SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。

转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功

isnull(rowname)要改成rowname = null

CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能

显示不完整

备注类型要通过cast(column as varchar)来使用

true/false类型不能使用,要变为1/0

对此两种数据库进行 *** 作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10".

在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用

在access的sql语句中的时间使用变量查询的时候,大家一般使用"select * from aaaa while time=#"&变量名&"#",在mssql中是不行的,他的语法是“select * from aaaa while time=‘"&变量名&"‘"”。(意思是让你把日期时间变量当成字符串来使用,呵呵~~~)

原来ASP里的“DELETE * FROM ……”要改为“DELETE FROM ……”

有可能rs.update失败,修改成update 表名 set 字段=‘值’ 这样通过(遇到的情况,提示为:

Microsoft OLE DB Provider for SQL Server 错误 ‘80040e38‘

乐观并发检查失败。已在此游标之外修改了该行。

/Admin_ClassOrder.asp,行 164 )

access里面除法可以使用"\"或者"/",MSSQL里面只能使用"/"

第二份收集的

1.数据库导入以后,自动增加字段需要重写,所有的数字类型需要增加长度,最好用bigint。

2.所有的默认值都丢失了。主要是数字类型和日期类型。

3.所有sql语句中的now(),time(),date()要改成getdate()。

4.所有sql语句中的datediff(‘d‘, time1, time2)要改成datediff(day, time1, time2),相应的其他日期属性也需要更改。

5.有可能一些true/false的判断语句不能正常使用了,这里是指用整数型来表达bool的情况,要变为1/0。

6.备注类型要通过cast(column as varchar)来使用。

7.CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能

显示不完整。也就是说,一般要写成rs.open sql, conn, 1。

8.isnull(rowname)要改成rowname = null

9.程序里如果有直接对整型变量的判断,也需要进行显示的转换,如:

if rs("id") = 0 then

要变为

if clng(rs("id")) = 0 then

我觉得比较好的方法有二:

- 用Excel VBA的方法,代码如下(其中SQL的部分你要根据实际来修改):

Sub QueryTest()

MyMainFile = ThisWorkbook.Name

MyPath = ThisWorkbook.Path &"\" &ThisWorkbook.Name

strSQL = "Select [SupplierPartNo],[Corporation],[CustomerName],[CustomerPartNo],[AgingDays],[InventoryQty],[StockStatus] from [AgingReport-RawData$A1:AG10000]"

Workbooks.Add

ActiveSheet.Name = "Jackson"

With ActiveSheet.QueryTables.Add(Connection:="ODBCDSN=Excel FilesDBQ=" &MyPath &"", Destination:=Range("B15"), Sql:=strSQL)

.FieldNames = True

.Refresh BackgroundQuery:=False

End With

End Sub

在我的博客中有很多具体的例子,你可以找找看,有问题联系我:http://hi.baidu.com/ohmyidea/home

- 另外是用“高级筛选的”的方式,如果要用宏执行,请过几天看我的博客,我会把一个例子的VBA代码放到我的博客上,


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9958928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存