方法二: 第一步:配置数据源 1.在‘控制面板→管理工具’里选择‘数据源’,在弹出的页面选择‘用户DSN’(默认)。 2.点击旁边的‘添加’按钮,在弹出的页面选择‘Driver do Microsoft Access (*.mdb)’,然后点击‘完成’。 3.在弹出的‘ODBC Microsoft Accecc 安装’页面,在‘数据源名’文本输入框填写一个名称(自定义),‘说明’文本 框不用输入。然后点击下面的‘选择’按钮,选取Access文件所在的路径。 4.点击旁边的‘确定’按钮,这是会在‘用户DSN’选项卡的‘用户数据源’下多出你刚才添加的数据源,名称就是刚才填写的‘数据源名’。然后点击‘取消’退出页面。数据源配置完成。 第二步:在数据库原程序引用 1.在‘开始’菜单打开‘Microsoft SQL Server 2005→SQL Server Management Studio’。 2.新建一个数据库(名称自定义),选择新建的数据库点击右键选择‘任务→导入数据’。 3.在弹出的页面点击下一步,‘数据源’选择‘Microsoft Access’,然后选择Access数据库所在的路径,如果Access数据库有用户名和密码就需要填写,如果没有就不用填写。点击‘下一步’。 4.在弹出的页面,‘数据源’可以安默认的不动。‘服务器名称’及‘身份验证’要和登录时的服务器及身份验证一样(如果不一样,在下面的数据库下拉框里找不到刚才新建的数据库)。在下面的数据库下拉框选择新建的数据库(如果没有新建的数据库,点击后面的刷新按钮。如果还是没有就检查服务器名称’及‘身份验证’是否正确)。可以点击后面的‘新建’。点击‘下一步’。 5.在弹出的页面,按照默认选择第一项(复制一个或多个表或视图的数据)。点击‘下一步’。 6.在‘选择源表和源视图’页面,选中要导入的表和视图。(可以点击‘预览’查看表中的数据)点击‘下一步’。 7.按照默认‘立即执行’,点击‘下一步’。 8.点击‘完成’。 数据修改 (主要针对方法二,方法一转化后基本没问题)
1,由于SQL2000里面没有“自动编号“,所以你的以“自动编号“设置的字段都会变成非空的字段,这就必须手工修改这些字段,并把他的“标示“选择“是“,种子为“1“,增量为“1“,
2,另外,ACCESS2000转换成SQL2000后,原来属性为“是/否“的字段将被转换成非空的“bit“,这时候你必须修改成自己想要的属性了;
3.默认值修改 4.另外,大家要注意对时间函数的把握.ACCESS与SQL是有很多不同的. ACCESS改为SQL需要注意哪几个地方 数据库导入以后,自动增加字段需要重写,所有的数字类型需要增加长度,最好用decimal。 所有的默认值都丢失了。主要是数字类型和日期类型。 所有now(),time(),date()要改成getdate()。 所有datediff(‘d‘, time1, time2)要改成datediff(day, time1, time2) 有可能一些true/false类型不能使用,要变为1/0。 备注类型要通过cast(column as varchar)来使用。 CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整。 isnull(rowname)要改成rowname = null ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号! 转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。有时用smalldatetime型时,转化失败,而用datetime型时,转化成功。 对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:“delete * from user where id=10“,而对SQL SERVER数据库进行删除是用:“delete user where id=10“. 日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。 在SQL Server 2005中设置自动编号字段 ①像Access中的自动编号字段 右键你的表-->设计表-->找到你的id字段(类int型)-->标识-->是-->标识种子(初始值)-->标识递增量-->OK ②用IDENTITY (SEED,INCREMENT)参数 seed -启始值 increment -增量 CREATE TABLE 表名(你的ID IDENTITY (1, 1) NOT NULL ,你的其他字段... ) CREATE TABLE 表名(你的字段ID AUTOINCREMENT(1000,10),其他字段... ) ③修改起始值和步进值 ALTER TABLE 表名 ALTER COLUMN 你的字段ID COUNTER(2000,50) ④让一个删空的表自动增加字段的开始值重新从1开始 ALTER TABLE 表名 ALTER COLUMN 你的字段ID COUNTER(1,1) 上述3 4只适用与Access,COUNTER为其一种数据类型,可以在Access中指定一不是自动编号的字段为自动编号字段,也可以让一自动编号字段重新从指定值按指定步长自动编号。但是如果表中有数据,用户不能用该语句来将该列的数据类型改变为COUNTER 数据类型。对于SQL Server并不支持。 对于SQL Server我们或许总希望用Alter Table 表名 Alter Column 你的字段 IDENTITY(1,1) 来指定字段重新从1开始计数,但是这句话本身是错误的,好长时间我也疑惑为什么这句话不能执行。如果我们看看MS 对Alter Table语句的定义就清楚了,这句话根本是错误的。下面是MS对Alter Table语句的定义。
可以看到,IDENTITY只是在< column_definition >中,也就是说,我们可以这样使用 Alter Table 表名 Add 字段名 Int IDENTITY(1,1) 即,我们可以增加一个字段并指定它为自动编号字段。但是不能更改一个字段为自动编号字段(也或许我没找到方法)。即,如果我们想给表增加自动编号字段,只能使用添加字段的方法,而不能更改一个已有的字段为自动编号字段。 至于如果需要更改自动编号字段计数起始值可以使用DBCC命令: DBCC CHECKIDENT (表名,RESEED,100) 自动编号字段下一个从101开始计。
|