原点互联旗下门户资讯平台!

MSSQL转换ACCESS图文和转换后常见问题

1.打开SQLserverenterprisemanangerquot;企业管理器quot;在你要导出的SQL数据库上鼠标右键菜单:所有任务-》导出数据2.回出现一个导出向导窗口。选择被导出的数据源,为你刚才所选择的数据库,如果发现不对应自行修改。3.进入导出

1.打开SQL server enterprise mananger "企业管理器"
在你要导出的SQL数据库上鼠标右键菜单:所有任务-》导出数据



2.回出现一个导出向导窗口。
选择被导出的数据源,为你刚才所选择的数据库,如果发现不对应自行修改。



3.进入导出到目标数据源的选择,这里我们要转成ACCESS的数据库。注意选择数据源类型为“Microsoft Access。点 “文件名(F)” 后面的按钮选择目标.MDB文件。



4.选择“从数据库复制表和视图”。



5.我们注意这里选表的时候右边有一个“转换”列。SQL导出只转换数据类型并不考虑其他脚本所以我们遇到的自动编号问题也就出在这里。有自动编号的一定要点选“转换”。



6.我们回看到一个“列映射和转换”对话框。有注意到自增的employeeid int 自增这里变成了Access里的long这肯定不对,long并不是自动编号,只好修改建表脚本,图片上那个红圈里的按钮“编辑SQL”。



开一个小窗create talbe



红圈中的脚本就是employeeid 的 Access建表脚本,在 "NOT NULL" 前面加上 "IDENTITY (1, 1)"。



7.立即执行。



下图表示建表复制已成功



8.我们打开MDB文件看看是不是如我们所愿?



OK完成,恭喜你操作成功。

转换成ACCESS之后程序常见问题:

1、自动编号

参见上面操作6,导出数据以后要把自动编号的起始编号修改,不然会乱掉

 Alter TABLE 表格名
  Alter COLUMN id COUNTER (10, 1)

 10为起始编号 
 1为步进

(access要输入运行语句:查询-->在设计视图中创建查询-->取消添加-->点左上角的sql 切换到 sql视图 就可以输入上面的命令了)

2、sql语句

数值型 不带单引号 如(Select * from table where id='1')
sql server 可以
access 不可以

3、时间函数

sql_server

sql="DATEADD(dd,fulltime-0,addtime)"
sql="datediff(day,getdate(),addtime)"

access

sql="datediff('d',DATE(),addtime)"
sql="addtime<#2006-12-10#"

asp

<%DateDiff("d",formatdatetime(now(),2),rs("addtime"))%>
<%dateadd("d",rs("fulltime"),rs("addtime"))%>

4、 如(Select top 1 * from table where id=1)
sql可以没top
access不可以

5、
sql "addtime='"&now()&"'"
access "addtime=now()"

6、

sql
delete table where id="&id&"

access
delete from table where id="&id&"


附:access转mssql 以后 asp程序需要修改的几个地方

1、原来属性为"是/否"的字段将被转换成非空的"bit"
所以需要把 字段=true 改成 字段=1
字段=false 改成 字段=0

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

3、 所有的sql语句中的“now()”必须换成“getdate()”

4、时间查询
access Select * from table where time >#2008-1-8# and time <#2008-1-30#
mssql Select * from table Where (time BETWEEN '2008-1-8' AND '2008-1-30' )

5、日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对
SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。
所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
所有datediff('ww', time1, time2)要改成datediff(week, time1, time2)
所有datediff('d', time1, time2)要改成datediff(day, time1, time2)

6、nvarchar字段求和时
错误提示“sum or average aggregate 运算不能以 nvarchar 数据类型作为参数。”

sum(字段) 改成 sum(cast(字段 as float))

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

标签MSSQL转换ACCESS图文和转换后常见问题

相关推荐

频道推荐

点击排行

最新信息