将数据库从Access2003升级到Sql Server 2000
SQL Server 2000 数据库迁移

SQL Server 2000 数据库迁移(数据库分离与附加)方法,重新安装操作系统时使用在下列场合下您可以使用本功能第一、如果您在恢复数据库的时候没有备份文件,而只有扩展名为MDF和LDF的两个数据库文件,那么您需要使用数据库附加功能能进行数据库的恢复。
第二、您在数据库初始化的时候没有选择数据库存放路径,而使用的系统默认路径,系统默认路径一般在C盘,由于C盘容易受病毒侵害,或者由于C盘磁盘空间不足,您也许希望您的数据存放在非系统盘(比如D盘),要做的这点也需要使用此方法。
第三、服务器搬迁,当您需要将天润档案管理系统服务器转移到另外一台电脑上的话,您也可以使用本功能。
数据库分离和附加其实很简单,您即使是初次接触数据库,做起来也很容易。
如果您是重新安装操作系统的话您只需使用数据库附加中能1、分离数据库1、点击“开始>程序>Microsoft SQL Server>企业管理”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库3、点击鼠标右键“所有任务>分离数据库”,出现如下窗口4、点击确定,该选定的数据库就被分离。
应注意,只有“使用本数据库的连接”数为0时,该数据库才能分离。
所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。
2、附加数据库2.1复制移动数据库文件在附加数据库之前,您必须将与数据库关联的 .MDF(主数据文件).LDF(事务日志文件)这两个文件复制到目标服务器上,或是同一服务器的不同文件目录下。
这两个文件一般位于C:\ProgramFiles\Microsoft SQL Server\MSSQL\Data目录下。
2.2点击“开始>程序>Microsoft SQL Server>企业管理”,打开企业管理器2.3展开服务器组,然后展开服务器2.4右击"数据库",然后选择“所有任务>附加数据库”,弹出窗口2.5输入要附加的数据库的MDF名称。
把Access数据库导成SQL Server 2000的工作

把Access数据库导成SQL Server 2000的工作,虽然很简单,但由于没有经验也会走很多弯路。
在这里把我的心得拿出来和大家分享一下,如果能对你有所助益,也算是有所价值,欢迎大家共同学习交流。
一、备份原先的Access数据库,以免丢失珍贵数据
二、用Access2003打开欲转换的数据库,它会出现警告,不用管它,单击“是”,“打开”,然后选择菜单中的“工具>>数据库实用工具>>转换数据库>>转为Access 2002-2003格式”,关闭当前.mdb文档
三、打开刚才转换的2003版本的.mdb文件,再选择“工具>>数据库实用工具>>升迁向导”,选择“新建数据库”,下一步;输入连接参数和SQL Server 2000 数据库名称,下一步;……默认下一步即可,直到出现应用程序措施,选择“不对应用程序做任何修改”,下一步,完成。
此时,数据库已经转换完成了。
怎么?不相信?打开SQL Server的企业管理器,看看你的数据库吧,包括自增长ID、默认值等扩展属性都保留了下来,什么字段属性都不用修改。
再运行一下程序,完全正常!你可以为自己庆祝一下喽~~~
注:我没有在表中应用公式,如果用了公式,一些地方还需要调整为SQL Server的语法,比如时间等,就需要手动一个个去修改了,再有就是转换完毕后,一定要检查数据SQL数据库里表的数量与ACCESS里的一样,如果没有可能是由于“升迁”的时候出错,那就利用SQL里导入数据将没有的表导入,希望大家注意。
Access的.mdb数据库导入SQL Server2000

将Access的.mdb数据库导入SQL Server2000分为两个步骤。
1.在【WindowsXPSP3】系统上将需要导入的Access数据库文件配置为ODBC数据源;2.在SQL Server2000上新建数据库,使用DTS功能导入数据。
具体来说:1.1【开始】-【控制面板】-【管理工具】-【数据源】,打开【ODBC数据源管理器】1.2【ODBC数据源管理器】:【用户DSN】-【添加】-选【Driver do microsoft Access 】-打开【ODBC microsoft Access安装】1.3【ODBC microsoft Access 安装】:数据源名:随便命名dsnxx;说明:可不写;数据库[选择]:【选择数据库】对话框,选中本地要转换的.mdb文件;系统数据库:无;【确定】2.1打开企业管理器,新建一个数据库,任意命名XXX;2.2右键单击XXX-【所有任务】-【导入数据】-【DTS导入、导出向导】;2.3【DTS导入、导出向导】:点下一步进入【选择数据源】下拉列表选【Driver do microsoft Access(*.mdb)】【用户、系统DSN】选刚建立的dsnxx,用户名密码不管,【下一步】2.4【指定表复制或查询】选【从数据源复制表和视图】,【下一步】2.5【选择源表和视图】可以选择和预览Access数据库中的数据,【下一步】2.6选【立即运行】,【下一步】2.6显示【摘要】:源: ACCESS使用 Microsoft OLE DB Provider for ODBC Drivers位置: dsnxx数据库: E:\代码\源码\示范\名单目的: Microsoft SQL Server使用 Microsoft OLE DB Provider for SQL Server位置: (local)数据库: 名单点击【完成】,。
如何把SQL Server数据库从高版本降级到低版本

如何把SQL Server数据库从高版本降级到低版本如何把SQL Server数据库从高版本降级到低版本由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接【分离/附加】或者【备份/还原】数据库,在不同版本之间存放。
往往就会遇到版本不兼容的问题。
前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错:从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况下,从低版本升级到高版本,只要不是跨度太大,如2000升级到2012,都不会怎么报错。
除非使用了一些新版本不兼容的特性如*=来实现left join 的语句。
但是就像上图那样,从高版本还原到低版本的时候,问题就出现了,而且几乎一定会报错。
下面给出几个小建议,例子是从2008 降级到2005:方法一:使用图形化操作(GUI),打开SSMS(SQL Server Management Studio)步骤1:右键你要降级的数据库,按下图选择:步骤2:在对话框中选择:步骤3:在【高级】中选择下图:步骤4:把脚本保存起来,然后在SQLServer2005中运行脚本。
步骤5:通过【任务】→【导出数据】,把数据从2008导入到使用脚本创建的库上如下图,就完成了:方法二:使用系统自带的存储过程实现:sp_dbcmptlevel ——将某些数据库行为设置为与指定的 SQL Server 版本兼容下面是其内部实现代码:[sql]SET QUOTED_IDENTIFIER ONSET ANSI_NULLS ONGO create procedure sys.sp_dbcmptlevel -- 1997/04/15 @dbname sysname = NULL, -- database name to change@new_cmptlevel tinyint = NULL OUTPUT -- the new compatibility level to change toasset nocount ondeclare @exec_stmt nvarchar(max)declare @returncode intdeclare @comptlevel float(8)declare @dbid int -- dbid of the databasedeclare @dbsid varbinary(85) -- id of the owner of the database declare @orig_cmptlevel tinyint -- original compatibility leveldeclare @input_cmptlevel tinyint -- compatibility level passed in by user,@cmptlvl80 tinyint -- compatibility to SQL Server Version 8.0,@cmptlvl90 tinyint -- compatibility to SQL Server Version 9.0,@cmptlvl100 tinyint -- compatibility to SQL Server Version 10.0 select @cmptlvl80 = 80,@cmptlvl90 = 90,@cmptlvl100 = 100-- SP MUST BE CALLED AT ADHOC LEVEL --if (@@nestlevel > 1)beginraiserror(15432,-1,-1,'sys.sp_dbcmptlevel')return (1)end-- If no @dbname given, just list the valid compatibility level values.if @dbname is nullbeginraiserror (15048, -1, -1, @cmptlvl80, @cmptlvl90, @cmptlvl100)return (0)end-- Verify the database name and get infoselect @dbid = dbid, @dbsid = sid ,@orig_cmptlevel = cmptlevel from master.dbo.sysdatabaseswhere name = @dbname-- If @dbname not found, say so and list the databases.if @dbid is nullbeginraiserror(15010,-1,-1,@dbname)print ' 'select name as 'Available databases:'from master.dbo.sysdatabasesreturn (1)end-- Now save the input compatibility level and initialize the return clevel -- to be the current clevelselect @input_cmptlevel = @new_cmptlevelselect @new_cmptlevel = @orig_cmptlevel-- If no clevel was supplied, display and output current level.if @input_cmptlevel is nullbegin raiserror(15054, -1, -1, @orig_cmptlevel)return(0)end-- If invalid clevel given, print usage and return error code-- 'usage: sp_dbcmptlevel [dbname [, compatibilitylevel]]'if @input_cmptlevel not in (@cmptlvl80, @cmptlvl90, @cmptlvl100)beginraiserror(15416, -1, -1)print ' 'raiserror (15048, -1, -1, @cmptlvl80, @cmptlvl90, @cmptlvl100)return (1)end-- Only the SA or the dbo of @dbname can execute the update part-- of this procedure sys.so check.if (not (is_srvrolemember('sysadmin') = 1)) and suser_sid() <> @dbsid -- ALSO ALLOW db_owner ONLY IF DB REQUESTED IS CURRENT DBand (@dbid <> db_id() or is_member('db_owner') <> 1) beginraiserror(15418,-1,-1)return (1)end-- If we're in a transaction, disallow this since it might make recovery impossible. set implicit_transactions offif @@trancount > 0beginraiserror(15002,-1,-1,'sys.sp_dbcmptlevel')return (1)endset @exec_stmt = 'ALTER DATABASE ' + quotename(@dbname, '[') + ' SET COMPATIBILITY_LEVEL = ' + cast(@input_cmptlevel as nvarchar(128))-- Note: database @dbname may not exist anymoreexec(@exec_stmt)select @new_cmptlevel = @input_cmptlevelreturn (0) -- sp_dbcmptlevelGO语法[sql]sp_dbcmptlevel [ [ @dbname = ] name ][ , [ @new_cmptlevel = ] version ]参数[ @dbname = ] name要为其更改兼容级别的数据库的名称。
ACCESS数据库转换成SQLSERVER数据库

一、ACCESS数据库转换成SQL SERVER数据库:方法一:使用access数据库升迁工具1、打开access数据库,点击菜单栏“数据库工具”,选择“SQLserver”;2、选择“新建数据库”,点击“下一步”;3、选择“升迁所用的sql server”,勾选“使用可信任连接”,最后填写数据库名称;继续“下一步”;4、把可用表选中到右边;继续“下一步”5、接下来使用默认设置,点击“下一步”,到最后点击“完成”;方法二:使用sql server的导入/导出数据工具;(安装了server2000)1、在企业管理器中新建一个空数据库,“开始“--------”microsoft Sql server“------”导入和导出数据“;2、选择access数据源,点击“下一步“;3、选择复制到开始新建的数据库中;下一步4、继续下一步,选择表,选择“全选“;6、继续下一步,点击“完成“,成功;二、上述方法标准版数据备份时候会出错;解决方法:把数据再导入新建的帐套数据库中1、用标准版软件新建一个帐套,在SQL SERVER 2000的企业管理器中找到这个数据库,如“ABC“;2、清空新数据库ABC中的数据(参考下面清空的方法);3、禁用新数据库ABC的表之间的关系(参考下面方法)4、用上述方法二导入/导出数据工具把数据再倒入新数据库ABC中;5、启用新数据库ABC的表关系;(参考下面方法)6、使用新数据库的帐套标准版数据备份问题解决;三、快速清空Sql server数据库的方法1、新建存储过程:CREATE PROCEDURE sp_DeleteAllDataASEXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'EXEC sp_MSForEachTable 'DELETE FROM ?'EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?'GO2、执行存储过程查询器里:exec 存储过程名四、禁用和启用表关系在查询器里执行:禁用:EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'启用:EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'。
ACCESS数据转SQL2000数据库备份操作方法

ACCESS数据库转SQL2000数据库备份操作方法以现场应用中的软件数据库备份操作说明1、打开SQL2000数据库的控制台,选择软件数据库,2、新建立数据库命名“PROJECT”)3、选择“PROJECT”,点击左键,如下所示选择“所有任务”= 》导入数据4、系统自动弹出如下界面,点击“下一步”5、数据源下拉菜单中,选择“Microsoft Access ”数据库、数据库选择“默认”,点击“下一步”6、选择监控软件数据所在的位置7、D:\工程数据库\Project\Database\CM-DESK-MDB8、选择需要转化的数据库,<<Project>>数据9、选择默认设置,点击“下一步”10、选择“从源数据库复制表和视图”,如下所示11、在选择源表和视图时点击“全选”,如下所示12、选择默认设置,如下所示;点击“下一步”13、选择默认,点击“下一步”14、点击“完成”15、系统自动进入备份转换16、点击“完成”,系统自动进行数据转换17、系统自动完成备份后,显示“备份操作已顺利完成”,点击确认:如下;18、增加配置文件SDServer.ini在主从机系统的目录[D:\机房管家\CM-DESK\HistoryEventServer]中增加配置文件SDServer.ini,将该文件中增加以下配置信息,用于配置SDServer.exe连接数据库所用的参数;该用户名和密码应该填入数据服务器的登录SQL的用户名和密码;[SDSERVER]UserID=saPasswd=xbrother19、增加事件服务器的配置文件EventServer.INI在主从机系统的工程目录[D:\机房管家\XBProject\Config]中,增加事件服务器的配置文件EventServer.INI,用于说明事件服务器所用的MySQL数据服务器的IP地址,该配置文件的格式为[EventServer]Server=10.10.1.5该IP应该填入数据服务器IP地址;。
ACCESS转化成SQL2000需要注意的几个问题

很多朋友想⽤SQL2000数据库的编程⽅法,但是却⼜苦于⾃⼰是学ACCESS的,对SQL只是⼀点点的了解⽽已,这⾥我给⼤家提供以下参考---将ACCESS转化成SQL2000的⽅法和注意事项 ⼀,⾸先,我说的是在ACCESS2000,SQL2000之间转换,其他的我也还没有尝试过,希望⼤家多多试验,肯定是有办法的; ⼆,转换的⽅法 1,打开”控制⾯板“下”管理⼯具“中的”数据库源“; 2,按”添加“添加⼀个新的数据源,在选择栏⾥选”Driver do microsoft Access (*.mdb)”,完成后将出现⼀个框, 在”数据库源“⾥⾯输⼊你想写的名称,我取名叫“ABC”,说明不需要填,接着,按下⾯的选择,寻找你的数据库地址和选中(注意,请先备份⾃⼰的ACCESS数据库),然后确定。
数据源在这⾥建好了,剩下转换了。
3,打开SQL2000企业管理器,进⼊数据库,新建⼀个空的数据库“ABC”; 4,选择新建⽴的数据库,按⿏标右键,选择“所有任务”下“导⼊数据”,按“下⼀步”继续; 5,在数据库源下拉但中选择”Driver do microsoft Access(*.mdb)“,在”⽤户/系统DSN“中,选种你刚才添加的”ABC“,按”下⼀步“; 6,“⽬的”不需要修改,选择服务器(⼀般下为⾃⼰的本机"local",也可以选择服务器地址或者局域地址,确定你的权限是否可以操作,),"使⽤WINDOWS ⾝份验证"指⽤⾃⼰的系统管理员⾝份操作,"使⽤SQL⾝份操作验证"可以⽤于站的操作,推荐⽤后者; 7,选上"使⽤SQL⾝份操作验证"后,填写你的⽤户名和密码,我⾃⼰选择的是系统默认号码"sa","****",数据库选择刚新建的"ABC",按"下⼀步"; 8,这⼀步的两个单项选择,"从数据源复制表和视图"与"⽤⼀条查询指令指定要传输的数据",选择前者,按"下⼀步"继续; 9,这⾥将出现你⾃⼰ACCESS数据库的表,按"全选"后,下⼀步; 10,"DTS导⼊/导出向导",看"⽴即运⾏"被选中按"下⼀步", 11,按"完成"继续; 12,这个步骤你将看到你的数据被导⼊SQL2000⾥⾯,当出现"已经成功把XXX个表导⼊到数据库"的字样,⽽且所有的表前⾯都有绿⾊的勾,就表⽰成功导⼊所有数据,如果中途出现问题或者表前⾯有红⾊的叉的话,说明该表没有成功导⼊,这时就要回去查看⾃⼰的操作是否正确了. 三,数据修改 1,由于SQL2000⾥⾯没有"⾃动编号",所以你的以"⾃动编号"设置的字段都会变成⾮空的字段,这就必须⼿⼯修改这些字段,并把他的"标⽰"选择"是",种⼦为"1",增量为"1", 2,另外,ACCESS2000转换成SQL2000后,原来属性为"是/否"的字段将被转换成⾮空的"bit",这时候你必须修改成⾃⼰想要的属性了; 3,另外,⼤家要注意对时间函数的把握.ACCESS与SQL是有很多不同的.。
如何把ACCESS转成SQL数据库

如何把ACCESS转成SQL数据库很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是一点点的了解而已,这里我给大家提供以下参考---将ACCESS转化成SQL2000的方法和注意事项一,首先,我说的是在ACCESS2000,SQL2000之间转换,其他的我也还没有尝试过,希望大家多多试验,肯定是有办法的;二,转换的方法1,打开”控制面板“下”管理工具“中的”数据库源“;2,按”添加“添加一个新的数据源,在选择栏里选“Driver do microsoft Access (*.mdb)”,完成后将出现一个框,在“数据库源”里面输入你想写的名称,我取名叫“ABC”,说明不需要填,接着,按下面的选择,寻找你的数据库地址和选中(注意,请先备份自己的ACCESS数据库),然后确定。
数据源在这里建好了,剩下转换了。
3,打开SQL2000企业管理器,进入数据库,新建一个空的数据库“ABC”;4,选择新建立的数据库,按鼠标右键,选择“所有任务”下“导入数据”,按“下一步”继续;5,在数据库源下拉但中选择”Driver do microsoft Access(*.mdb)“,在”用户/系统DSN“中,选种你刚才添加的”ABC“,按”下一步“;6,“目的”不需要修改,选择服务器(一般下为自己的本机local,也可以选择服务器地址或者局域网地址,确定你的权限是否可以操作,),使用WINDOWS 身份验证指用自己的系统管理员身份操作,使用SQL身份操作验证可以用于网站的操作,推荐用后者;7,选上使用SQL身份操作验证后,填写你的用户名和密码,我自己选择的是系统默认号码sa,****,数据库选择刚新建的ABC,按下一步;8,这一步的两个单项选择,从数据源复制表和视图与用一条查询指令指定要传输的数据,选择前者,按下一步继续;9,这里将出现你自己ACCESS数据库的表,按全选后,下一步;10,DTS导入/导出向导,看立即运行被选中按下一步,11,按完成继续;12,这个步骤你将看到你的数据被导入SQL2000里面,当出现已经成功把XXX个表导入到数据库的字样,而且所有的表前面都有绿色的勾,就表示成功导入所有数据,如果中途出现问题或者表前面有红色的叉的话,说明该表没有成功导入,这时就要回去查看自己的操作是否正确了.三,数据修改1,由于SQL2000里面没有自动编号,所以你的以自动编号设置的字段都会变成非空的字段,这就必须手工修改这些字段,并把他的标示选择是,种子为1,增量为1,2,另外,ACCESS2000转换成SQL2000后,原来属性为是/否的字段将被转换成非空的bit,这时候你必须修改成自己想要的属性了;3,另外,大家要注意对时间函数的把握.ACCESS与SQL是有很多不同的.ACCESS转MS SQL数据库的几点经验1.ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!2.转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime 型,因为datetime型的范围比smalldatetime型大。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
将数据库从Access 2003 升级到Sql Server 2000 将数将数据库从Access 2003 升级到Sql Server 2000,原本以为不是很麻烦(开始时以为就改改数据库的连接代码就行了),但在这次的操作中,虽然在操作前也在网上查了一些相关的资料,但还是感觉有些不够。
在这里,我就将本次的升级过程中所遇到的问题,怎么去解决写出来,供以后的各位参考一下。
在进行升级时候,一定要先去查阅一些资料,最后你得对整个过程有一个大体的了解,不然到时到了哪步应该作些什么都忘了,也就无处升级了。
一、好了,在升级前,首先要安装Sql Server 2000。
至于怎么去安装我就不讲了,网上的资料很多,在这里只是提醒两点:1)安装的版本:Sql Server 2000一共分为两个版本,专业版和家庭版,在安装的时候一定要注意到你的操作系统。
因为很多人在进行网页制做和调试的时候一般情况下都用的是windows xp 系统,所在这里就不能安装专业版,专业版都是针对于服务器的操作系统,比如说:winNT,win 2000,win2003等。
windows xp去安装专业版是不能安装服务端的,所以在安装Sql Server 2000的时候一定要注意版本的选择。
2)数据的导入:安装完后就是要进行数据的导入了(可以参考另一篇文章《Access数据库升级成Sql Server 2000 开发文档》),也就将Access 2003数据库中原有的数据导入到Sql Server 2000里去。
在导入的时候首先要在Sql Server 2000里面新建一个数据库,数据表是存在数据库中的。
一般来说呢,在进行数据导入时候不会有什么问题,但也不例外。
如果你的Access数据有密码的话,我建议在进行数据导入前先把密码去掉,我不知道你们能不能,反正我是没成功,如果遇到了问题就去掉,没遇到就算了。
如果Access2003数据库中的表太多了的话,在导入后一定要检查一下是不是所有的表都导入到Sql Server 2000里面了……还有,在将Access2003中的数据导入以Sql Server 2000的时候因为有一个数据转换,也就是说要将Access2003的数据格式转换成Sql Server 2000里的数据格式,如果在Access2003数据库中一个表中有一条数据不满足Sql Server 2000里的格式,则这个表里面的所有数据都不导入到Sql Server 2000中。
这个时候你不防打开Sql Server 2000(这个时候已经有这个表名存在了,只是表里没有数据而已),找到相应的表,打开设计视图,将其中的ntxt字段改成txt,再试一下,如果还不行话,就证明你Access2003数据库中中表里面的数据就真有的问题了。
比例说:时间字段不可能出现9999-12-12这样的数据,导入出错了有相应的提示,会提示你说在…数据库中….表…第几行有问题。
但这个时候你要注意了,提示中的第多少行并不是我们直接打开表中的多少行。
具体是多少行我也不是很清楚。
数据库在进行数据转换的时候打开数据表的排列方式和我们直接打开数据表的排列方式是不一样的。
二、数据导入完了这个时候还要做一件事,就是修改Sql Server 2000数据库中各个表的字段类型。
当我们把数据从Access2003中导入到Sql Server 2000中你会发现。
在Access2003中字段为自增型(一般都为ID字段)的在Sql Server 2000中没了,也就是说以前在向Access数据库中插入数据中,有一个字段是自增型的,但把表导入到Sql Server 2000后,这个字段的类型是int,不是自增型,你这个时候你要手动添加上去;要把Sql Server 2000中的smalldatetime字段改成datetime;以前在Access2003数据库,字段有默认值的,在导入Sql Server 2000后就没有了,也要手动添加上去。
比如,时间字段有默认值[now()]在Sql Server 2000中没了,要添加上去,但不能写成now()函数了,将其改成getdate();将ntxt 字段类型改成txt类型;在Access2003中,有些字段会有一些说明,比如说InsertTime是指数据的写入时间,但导入到Sql Server 2000就没了,你觉得有必要的话就添加上去,没有必要也可以不添,这对于数据库的操作来说没什么影响的。
三、数据库的修改到上面就完了,下面是代码。
开始的时候我以为数据库升级了,只是修改一下连接代码,也就是conn.asp里面的连接代码就完了,其实,远不只这些。
如果你写代码的习惯比较好的话,需要改的代码不是很多,但如果不好的,对于一个大的网站或平台来讲,是一个很大的工程量。
在这里我就讲一下代码需要修改的地方(我用到的):1)查询时出现关键字:比如说,在没有进行数据库升级前你操作语句是:Sql=”Select username from user where id=”&request.from(“id”)是没有什么问题,但在升级后你就会发现出现问题了,错误提示:在关键字'user' 附近有语法错误。
为什么呢?因为在user 是关键字,在Sql Server 2000中声明关键字是会出错的,所以,在Sql Server 2000里的查询语句应该改成:Str=”Select username from [user] where id=”&request.from(“id”),对于关键字user 要添加一个[],让其不作为关键进行处理。
所以在这里要也要提醒一下写代码的同志,特别是刚进门的同志,一定要养成良好的写代码习惯,在声明变量的时候不要总拿关键字开刀,一定不要,虽说在你这个环境可能没什么事,谁能保证将代码带了另外一个环境不会出事呢?记住,千万不要用关键字,不然到时你会哭,而且哭的很难看。
如果你的操作语句,不管是查询,删除还是更新,只要出现了错误,要看看是不是关键字在作怪。
2)函数:在Access数据库中的有些函数在Sql Server 2000是不支持的,比如说cdbl函数,反正我是觉得不支持的,因为有一条查询语句不管我怎么改都是出错,结果将这个函数去掉不可以了,这是一个将数值转换成双精度的一个函数,如果你在遇的时候可以去掉,或是在Sql Server 2000找一个和这个函数功能一样的进行替换;还有一个instr函数,在Sql Server 2000中也是不支持的,但可以用charindex函数代替;还有,在向数据库中写入数据的时候,now()函数是不可用的,要改成date(),比如说:Rs.open sql,conn,1,1Rs.addnewRs(“uptime”)=now()Rs.update()要改成:Rs.open sql,conn,1,1Rs.addnewRs(“uptime”)=date()Rs.update()上面这点也要注意。
但now()函数的格式和date()函数的格式是不一样的,now()精确到时分秒的,date()只是精确到天的。
用rs.addnew()不知道怎么写,但可以用insert语句:Sql=”Insert into table(uptime) values (getdate())”这样,可以获得和now()函数一样的效果,但用Rs(“uptime”)=getdate() 会出错。
顺序:是什么顺序呢?对字段的操作顺序,这是一个很郁闷的问题,因为我用了一天的时间才弄明白。
将数据库从Access2003升级到Sql Server 2000后,你会发现,有些字段在数据库中的明明是有值的,但用语句读出来就是没值,是怎么回事呢?太深奥的理论我不懂,你们可以在网上去查查看,我只告诉你,是读取字段顺序的问题,特别是在读取txt字段和别的字段时,比如说:在Sql Server 2000数据库中的顺序是这样的:Username varcharImgpath txt你在读取数据的时候:Imgpath=rs(“I mgpath”)Username= rs(“Username”)在没进行数据库升级前也许是没有问题的,但数据库升级后你会就发现username始终没有值,但在数据库中明明是有值的,为什么呢?????嘿嘿,就是读取字段顺序的原因,将其改成Username= rs(“Username”)Imgpath=rs(“I mgpath”)和数据库中字段顺序一样的就行了,遇到类式的问题也可以这样修改。
字段长度:对于字段长度,在向数据库中写入数据时要判断,我想这是每个程度员都会想到的一个问题,因为写入数据字段长度超过了我们设计长度话,会报错………但在这里,我要讲的是另外一个比较隐型的。
对于一些字段,写代码用的是以前的数据加上更新后的数据,比如说:Sql=”update table set loginuser=loginuser+’”Request.Form(“user”)”’”。
对于这样类型的更新语句,一定要想到有一个时间,字段的长度就超过了我们设计的长度,因为长度是一直在加的,没有减,即使是字段长度为10000。
所以你得要考虑到当字段长度超过设计长度后的相关处理代码。
也许你把字段设计的长一点,现在不会出错,但只要程序一直在用,有一天,肯定会出错的。
在建立表时,你最好为每一个字段有一个说明,当然,除非这个系统一直都是你在维护(但可能性不是很大)。
如果你的程序会有后序开法,最好写一个,不然,后序开法人员会在每个字段是什么含意上什么意思花费很多的时间(我现在就是,有时为了弄清楚一个字段的意思,不得不去看几个页面,转来转去,得花费很多时间),程序员何必为难程序员呢?这是一个习惯,一个很好的习惯。
以上就差不多是我这次升级数据库所遇到的问题,写出是只是让遇到同样类似的问题的朋友可以很快的解决,不要向我一样慢慢去找,很浪费时间的。
当然,如果你在升级的过程中遇到了什么问题是怎么解决的也希望你写出来,和大家分享一下。
对于一个初学者来说,有一个好的前辈进行指导可以学的很快,对于遇到了相同问题又很急着解决的朋友来讲,你的简单几个字就是别人救命草。
上面的东西是我自己写的,也许有的理解或是写错了,headmin@,这是我的邮箱,有什么问题,一起交流吧。
monky2011-4-15。