论文部分内容阅读
[摘 要]本文通过一个具体例子,介绍了利用2000 SQL Server中的DTS工具实现电算化系统数据库迁移方法及注意事项;对会计电算化系统升级具有实践指导作用。
[关键词] 数据库迁移;会计电算化;DTS工具
[中图分类号] F232;TP331.138SQ[文献标识码]A[文章编号]1673-0194(2006)08-0056-02
1引言
工作中遇到这样一个问题,有一个用delphi语言、Access 97数据库开发的会计电算化系统,数据库名为date.mdb,内有90多个数据表及70多个查询,用户因业务发展需要,提出升级系统。经过分析,只要把数据库迁移到2000 SQL Server数据库,应用程序稍作修改就能达到用户要求。通过多次实践验证,应用SQL 的DTS工具,成功地实现了这一会计电算化系统升级。
2数据库表、数据迁移及表的修改
2.1DTS工具实现表、数据迁移过程
(1)新建一个空的SQL数据库
“程序”——“Microsoft SQL Servers”——“控制台根目录”——“SQL Server组”——“数据库”——“新建一数据库”。如新数据库名字为newdate。
(2)“程序”——“Microsoft SQL Servers”——“导入和导出数据”——“下一步”,进入DTS工具操作界面。
(3)选择数据源, 在“数据源”选择栏中选项择“Driver do Microsoft Access[*.mdb]”。
(4)创建数据源,单选“用户/系统(DSN)”,点击其后的“新建——创建新数据源面版”——“选择系统数据源(只用于当前机器)”——“选择 Driver to Microsoft Access(*.mdb)”——“下一步”——“完成”。
(5)选择要导入的Access数据库地址,在数据源名说明后,随便于输入字符,在数据库选择中,单击“选择”项,选择你的Access数据库,如:在系统数据库选项,单选“无”,然后确定,返回到向导界面,然后进入“下一步”。
(6)选择目的数据库:目的选择,“用于SQL Server的Microsoft OLE DB提供的程序”, 服务器选用:“[local]”,使用Windows身份验证,数据库:选择事先建好的空数据库newdate,“下一步”。
(7)指定表复制或查询:选择从源数据库复制表和视图——“下一步”——“全选”——“下一步”。
2.2迁移后对目标数据库的修改
Access数据库date迁升到SQL Servers 数据后,通过比较分析转换前后的数据库发现,目标数据库表字段类型(如图1所示)及数据发生了某些变化,还需要人工修改。
图1 转换前后数据库表字段
(1)在Access表中的i_id字段“自动编号”类型迁移到SQL数据库后变成了“int”数据类型,在SQL数据库中没有“自动编号”字段类型,必须手工修改这些字段,并将其“标示”选择“是”,种子为“1”,增量为“1”。
(2)igrade字段由“数字”类型变为“tinyint”,所有的数字类型需要增加长度,用bigint;
(3)原来属性为“是/否”的字段将被转换成非空的“bit”,这时候你必须修改成自己想要的属性了。
(4) 所有的默认值都丢失了,主要是数字类型和日期类型。
(5)与日期有关的字段,变为datetime型,不需要修改。
3数据库查询的迁移
源于Access查询(SELECT、INSERT、UPDATE 和 DELETE)的Transact-SQL语句可转换为SQL的存储过程, 每个Access查询都必须用以下的一系列语句替换: CREATE PROCEDURE AS < SELECT, UPDATE, DELETE, INSERT, CREATE TABLE statement from Microsoft Access > GO。如:在date数据库中有查询1:
INSERT INTO question ( AccID, QuestionID, QuestionMS, Result )
SELECT (AccID 1) AS AccID1, QuestionID, QuestionMS, Result
FROM question
WHERE AccID=4 and questionid=11;
可通过下述方法方便移入到SQL的newdate数据库存储过程中:
(1) 在Access中打开date数据库,进入追加查询设计器,复制Transact-SQL语句。
(2) 在SQL Server 企业管理器中打开目标数据库newdate,创建一空的存储过程,把刚复制的Transact-SQL语句粘贴进来,稍作修改变为:
PROCEDURE reserch
(accID [int],@questioned [varchar](50),@questionMS,@result [text])
AS INSERT INTO question (@accID,@questionID,@questionMS,@result)
VALUES (@accID,@questionID,@questionMS,@result)
GOexec reserch
GOSELECT (AccID 1) AS AccID1, QuestionID, QuestionMS, Result
FROM question
WHERE AccID=4 and questionid=11;
(3)进行语法检查通过,通过查询分析器验证正确即可。
4转换后其他要修改的地方
(1)所有now( ),time( ),date( )要改成getdate( );
(2)所有datediff(’’d’’, time1, time2)要改成datediff(day, time1, time2),备注类型要通过cast(column as varchar)来使用;
(3)isnull(rowname)要改成rowname = null;
(4)cursortype要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整;
(5)isnull(rowname)要改成rowname = null ;
(6)程序里如果有直接对整型变量的判断,也需要进行显示的转换,如:
if rs("id") = 0 then要变为:if clng(rs("id")) = 0 then
数据库迁移是会计电算过程中常遇到的事情,也是复杂的事情,迁升过程中数据的安全性、可靠性是非常重要的,因此数据库迁升过程中,对数据库中各语法规则,数据库间不同之处要进行修改。数据库迁升后,对电算化应用程序只要稍作修改就可以,但要在程序中的各个模块都进行测试正确后,方可正式投入使用。
主要参考文献
[1] 施伯乐,丁宝康,周傲英,田增平.数据库系统教程[M].北京:高等教育出版社,1999.
[2] Roger S Pressman.软件工程-实践者的研究方法[M].北京:机械工业出版社,2002.
[3] Ray Rankins, Paul Jensen, Paul Bertucci.SQL Server 2000实用全书[M].北京:电子工业出版社,2002.
[关键词] 数据库迁移;会计电算化;DTS工具
[中图分类号] F232;TP331.138SQ[文献标识码]A[文章编号]1673-0194(2006)08-0056-02
1引言
工作中遇到这样一个问题,有一个用delphi语言、Access 97数据库开发的会计电算化系统,数据库名为date.mdb,内有90多个数据表及70多个查询,用户因业务发展需要,提出升级系统。经过分析,只要把数据库迁移到2000 SQL Server数据库,应用程序稍作修改就能达到用户要求。通过多次实践验证,应用SQL 的DTS工具,成功地实现了这一会计电算化系统升级。
2数据库表、数据迁移及表的修改
2.1DTS工具实现表、数据迁移过程
(1)新建一个空的SQL数据库
“程序”——“Microsoft SQL Servers”——“控制台根目录”——“SQL Server组”——“数据库”——“新建一数据库”。如新数据库名字为newdate。
(2)“程序”——“Microsoft SQL Servers”——“导入和导出数据”——“下一步”,进入DTS工具操作界面。
(3)选择数据源, 在“数据源”选择栏中选项择“Driver do Microsoft Access[*.mdb]”。
(4)创建数据源,单选“用户/系统(DSN)”,点击其后的“新建——创建新数据源面版”——“选择系统数据源(只用于当前机器)”——“选择 Driver to Microsoft Access(*.mdb)”——“下一步”——“完成”。
(5)选择要导入的Access数据库地址,在数据源名说明后,随便于输入字符,在数据库选择中,单击“选择”项,选择你的Access数据库,如:在系统数据库选项,单选“无”,然后确定,返回到向导界面,然后进入“下一步”。
(6)选择目的数据库:目的选择,“用于SQL Server的Microsoft OLE DB提供的程序”, 服务器选用:“[local]”,使用Windows身份验证,数据库:选择事先建好的空数据库newdate,“下一步”。
(7)指定表复制或查询:选择从源数据库复制表和视图——“下一步”——“全选”——“下一步”。
2.2迁移后对目标数据库的修改
Access数据库date迁升到SQL Servers 数据后,通过比较分析转换前后的数据库发现,目标数据库表字段类型(如图1所示)及数据发生了某些变化,还需要人工修改。

图1 转换前后数据库表字段
(1)在Access表中的i_id字段“自动编号”类型迁移到SQL数据库后变成了“int”数据类型,在SQL数据库中没有“自动编号”字段类型,必须手工修改这些字段,并将其“标示”选择“是”,种子为“1”,增量为“1”。
(2)igrade字段由“数字”类型变为“tinyint”,所有的数字类型需要增加长度,用bigint;
(3)原来属性为“是/否”的字段将被转换成非空的“bit”,这时候你必须修改成自己想要的属性了。
(4) 所有的默认值都丢失了,主要是数字类型和日期类型。
(5)与日期有关的字段,变为datetime型,不需要修改。
3数据库查询的迁移
源于Access查询(SELECT、INSERT、UPDATE 和 DELETE)的Transact-SQL语句可转换为SQL的存储过程, 每个Access查询都必须用以下的一系列语句替换: CREATE PROCEDURE
INSERT INTO question ( AccID, QuestionID, QuestionMS, Result )
SELECT (AccID 1) AS AccID1, QuestionID, QuestionMS, Result
FROM question
WHERE AccID=4 and questionid=11;
可通过下述方法方便移入到SQL的newdate数据库存储过程中:
(1) 在Access中打开date数据库,进入追加查询设计器,复制Transact-SQL语句。
(2) 在SQL Server 企业管理器中打开目标数据库newdate,创建一空的存储过程,把刚复制的Transact-SQL语句粘贴进来,稍作修改变为:
PROCEDURE reserch
(accID [int],@questioned [varchar](50),@questionMS,@result [text])
AS INSERT INTO question (@accID,@questionID,@questionMS,@result)
VALUES (@accID,@questionID,@questionMS,@result)
GOexec reserch
GOSELECT (AccID 1) AS AccID1, QuestionID, QuestionMS, Result
FROM question
WHERE AccID=4 and questionid=11;
(3)进行语法检查通过,通过查询分析器验证正确即可。
4转换后其他要修改的地方
(1)所有now( ),time( ),date( )要改成getdate( );
(2)所有datediff(’’d’’, time1, time2)要改成datediff(day, time1, time2),备注类型要通过cast(column as varchar)来使用;
(3)isnull(rowname)要改成rowname = null;
(4)cursortype要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整;
(5)isnull(rowname)要改成rowname = null ;
(6)程序里如果有直接对整型变量的判断,也需要进行显示的转换,如:
if rs("id") = 0 then要变为:if clng(rs("id")) = 0 then
数据库迁移是会计电算过程中常遇到的事情,也是复杂的事情,迁升过程中数据的安全性、可靠性是非常重要的,因此数据库迁升过程中,对数据库中各语法规则,数据库间不同之处要进行修改。数据库迁升后,对电算化应用程序只要稍作修改就可以,但要在程序中的各个模块都进行测试正确后,方可正式投入使用。
主要参考文献
[1] 施伯乐,丁宝康,周傲英,田增平.数据库系统教程[M].北京:高等教育出版社,1999.
[2] Roger S Pressman.软件工程-实践者的研究方法[M].北京:机械工业出版社,2002.
[3] Ray Rankins, Paul Jensen, Paul Bertucci.SQL Server 2000实用全书[M].北京:电子工业出版社,2002.