Access转成Sql 2008步骤,同时解决机关编号问题,主键,id数值不重置。

1.开头->Microsoft SQL Server 2008->导入和导出数据(32 位)
2.摘数据源,数据源里选择Microsoft Access,浏览选mdb文件,下一致步。

图片 1
3.挑选对象,数据库点新建,名称自定,下一样步。
图片 2

4.复制一个要么多个说明要视图的数额,下一样步。

图片 3
5.取舍源表和源视图,全勾选,选第一个说明,点编辑映射;

图片 4
并发列映射框,点击编辑SQL,

图片 5
弹来SQL语句编辑框

图片 6

在[ID] int NOT NULL,中间在IDENTITY(1,1),后显示为:[ID] int
IDENTITY(1,1) NOT NULL,

图片 7

确定,确定,回到选择源表和源视图框,继续修改外表,完成后,下一样步。
6.眼看运行,下一致步。
7.完成。
末用SQL Server Management
Studio连接数据库查看刚换的数额遭到的阐明,ID列。

图片 8

标识也True,标识种子吗1,标识增量为1,

图片 9

自此添加多少就是跟Access里之机动编号效果一样了。

填补:关于主键设置,可以第5步:[ID] int IDENTITY(1,1) NOT NULL,
里插入:Primary key,语句为:

[ID] int Primary key IDENTITY(1,1) NOT NULL,

终极,如果只要复制来的id数据不重置(转换后id重新于1来号),可以勾选第5步列表映射框里:启用标识插入。

图片 10

 

 

 

====ACCESS转SQLSERVER后代码需要修改的言辞=====

 

1,对于日期字段字段 

 access表示为:#1981-28-12# 

 SQLSERVER2000表示为:‘‘1981-02-12‘‘ 

2,SQL语句区别,select ,update 在针对单表操作时还差不多, 

 但多表操作时update语句之区别ACCESS与SQLSERVER中之Update语句对比: 

 SQLSERVER中创新多表的Update语句: 

 Update Tab1 

 SET a.Name = b.Name  FROM Tab1 a,Tab2 b  Where a.ID = b.ID; 

 同样功能的SQL语句以ACCESS中应是 

 Update Tab1 a,Tab2 b  SET a.Name = b.Name  Where a.ID = b.ID; 

 即:ACCESS中之Update语句没有FROM子句,所有援的表都列于Update关键字后. 

 更新单表时:都也: 

 Update table1 set ab=‘12‘,cd=444 where …. 

3,delete语句 

 access中除去时用:delete * from table1 where a>2 不怕要把select 语词里之select 换成delete就足以了。 

 sqlserve 中则为: delete from table1 where a>2 即没有*号 

4,as 后面的盘算字段区别 

 access中可这么:select a,sum(num) as kc_num,kc_num*num as all_kc_num 即可以把AS后底字段当作一个数据库字段参与计算。 

 sqlserver 中则为:select a,sum(num) as kc_num,sum(num)*num as all_kc_num 即未得以拿AS后的字段当作一个数据库字段参与计算。 

5,[.]与[!]的区别 

 access中大多表联合查询时:select tab1!a as tab1a,tab2!b tab2b from tab1,tab2 ,中间的AS可以不用。 

 sqlserve 中尽管:select tab1.a as tab1a,tab2.b tab2b from tab1,tab2 ,中间的AS可以不要。 

6,联合查询时, 

   access中大多表联合查询:‘select a,b from( 

select a,b from tab1 where a>3 union select c,d from tab2 ) group by a,b 

sqlserve 中则‘select a,b from( 

select a,b from tab1 where a>3 union select c,d from tab2 ) tmptable group by a,b即只要加一个心虚的表tmptable,表名任意。— 

7,access升级到sqlserver时, 

  可以为此sqlserver的数目导入工具导入数据,但只要做必要的拍卖。 

  access中的自动编号,不会见自行转换SQL中之电动编号,只能换为int型,要拿它们手工改化标识字段,种子吗1,把富有导入被sqlserver转化成的以n开头的字段类型的n去丢,如nvarchar->varchar.把需要有秒类型的日子字段改成为datatime类型(SQL会把拥有的日子开转化成smalldatetime型) 

8,true与1=1 

 access用where true表示原则吧真, 

sqlserver用where 1=1表示法为真 

9,判断字段值为空的区分 

普通空: 

Access和sql server一样 where code is null 或 where code is nol null 

条件空: 

Access:iif([num] is null,0,[num]) 或 iif([num] is null,[num1],[num]) 

SQLServer: isnull([num],0) 或 isnull([num],[num1]) 

10,SQL语句取子串的分别 

access:MID(字段,n1,[n2]),LEFT(字段,n),RIGHT(字段,n) 

如:select left(cs1,4)+‘-‘+cs2 as cs3 

SQLServer: SUBSTRING(expression, start, length) 

如:select substring(cs1, 1, 2) + substring(cs1, 4, 2) + ‘-‘ + cs2 as cs3 

补充: 

ACCESS与SQL2000的SQL语句有分之 

比如now()在SQL2000遭遇必反也getdate() 

还有关键词要加[] ,像ACCESS中字段名用name SQL20000亟须加以[name] 否则出错 

数据库连接字重新配置 

1. access 转sql 数据库后用建立各表关键字与递增量设置有数据类型需要还定义 

2. now() 函数是可领的,但当日期比过程被得因此 getdate() 

3. 保留字需要加 [] 

4. 一味对引号需要转移 

5. 按标准sql定义(最根本之同一漫长) 

探访MSSQLServer联机丛书。 

1.ACCESS之数据库被的自行编号类型在转账时,sql server并无拿其如果为电动编号型,我们得于SQL创建语句被添加identity,表示自动编号! 

2.转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好用她变成datetime型,因为datetime型的限定比smalldatetime型大。我吃见这种气象,用smalldatetime型时,转化失败,而因此datetime型时,转化成。 

3.对之两种植数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删减纪录时用:”delete * from user where id=10″,而对SQL SERVER数据库进行去是为此:”delete user where id=10″. 

4.日期函数不雷同,在对ACCESS数据库处理着,可用date()、time()等函数,但对 

SQL SERVER数据库处理着,只能用datediff,dateadd等函数,而不可知为此date()、time()等函数。 

5.以针对ACCESS数据库处理中,sql语句被一直可以为此有VB的函数,像cstr()函数,而针对性SQL SERVER数据库处理面临,却无能够因此。

相关文章