SQL2000的备份还原到2008上,出现错误!

gaoyan582 2014-09-20 02:46:03
出错对象:TxjPanel
异常类型:Exception
错误信息:查询时发生错误:列名或所提供值的数目与表定义不匹配。

出现以上错误,查询后发现语句在2000上可以执行,在新的2008的服务器上执行就会报错,怎么解决?急死我了。
...全文
299 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoyan582 2014-09-22
  • 打赏
  • 举报
回复
主要是原先的服务器很老了,读写很慢,查询费时,就买了太新的服务器。 新的服务器自带的就是2008. 现在不知道有什么好的办法。
Q315054403 2014-09-20
  • 打赏
  • 举报
回复
具体问题具体分析,若SQL写死在前端EXE里,那就没办法,只有保留兼容级别80(SQL2000),数据库是可以升级的,最多2个版本号 若是在SP、TRIGGER,那可以修改、调整下SQL指令 肯定需要熟悉SQL SERVER的人跟进才对 升级前多点测试,切换后就少点麻烦
hleb231 2014-09-20
  • 打赏
  • 举报
回复

你用2005试下,
不过你前端没升级,升级数据库有何意义。

hleb231 2014-09-20
  • 打赏
  • 举报
回复

ERP不只是数据库呀,你强行升级,前端程序会报错的嘛。
gaoyan582 2014-09-20
  • 打赏
  • 举报
回复
我公司用的ERP已经没有支持了。 2008不是能兼容低版本吗?还会有兼容问题? 麻烦大了。
hleb231 2014-09-20
  • 打赏
  • 举报
回复

国内这些用2000数据的ERP ,一般只支持到2005SP3
hleb231 2014-09-20
  • 打赏
  • 举报
回复

你是直接升级了数据库?这样是不行的。
gaoyan582 2014-09-20
  • 打赏
  • 举报
回复
TRUNCATE TABLE textreport INSERT SHIPTEMPA SELECT sStoreOutNo,tStoreOutTime ,sCustomerShortName,sOrderNo,sPatternName ,sMaterialCode,sDtlCustomerOrder,sSPUNo,isnull(sCustomerBoxNo,'0') sCustomerBoxNo,sskuno ,SUM(nStoreOutQty) AS nStoreOutQty,sUnit,sColorShade FROM (SELECT A.sStoreOutNo,A.sStoreOutType,A.sRemark,CONVERT(VARCHAR(10),A.tStoreOutTime,120) AS tStoreOutTime ,C.bInnerInOutType ,CASE S.sUnit WHEN '码' THEN --如果客户等级为1 就需要四舍无入 CASE WHEN O.sCustomerLevel LIKE '%%1%%' THEN CASE WHEN D.nStoreOutQty/0.9144 - CAST((D.nStoreOutQty/0.9144) AS INT) >= 0.5 THEN CAST(CAST((D.nStoreOutQty/0.9144 ) AS INT) + 1 as NUMERIC(9,1)) ELSE CAST(CAST((D.nStoreOutQty/0.9144 ) AS INT) AS NUMERIC(9,1)) END ELSE --判断整数去除小数位 CASE WHEN D.nStoreOutQty/0.9144 - CAST((D.nStoreOutQty/0.9144) as INT) < 0.05 THEN CAST(CAST((D.nStoreOutQty/0.9144 ) AS INT) AS NUMERIC(9,1)) ELSE CAST(CAST((D.nStoreOutQty/0.9144 ) AS NUMERIC(9,1)) AS NUMERIC(9,1)) END END WHEN '米' THEN --如果客户等级为1 就需要四舍无入 CASE WHEN O.sCustomerLevel LIKE '%%1%%' THEN CASE WHEN D.nStoreOutQty - CAST((D.nStoreOutQty) AS INT) >= 0.5 THEN CAST(CAST((D.nStoreOutQty) AS INT) + 1 AS NUMERIC(9,1)) ELSE CAST(CAST((D.nStoreOutQty) AS INT) as NUMERIC(9,1)) END ELSE --判断整数去除小数位 CASE D.nStoreOutQty - CAST(D.nStoreOutQty AS int) WHEN 0 THEN CAST(CAST((D.nStoreOutQty) AS INT) AS NUMERIC(9,1)) ELSE CAST(CAST((D.nStoreOutQty) AS NUMERIC(9,1)) AS NUMERIC(9,1)) END END END AS nStoreOutQty ,dbo.fnpbGetSKUorSPU(H.sSKUNo) AS sskuno ,I.sPrimaryDefect,sColorShade ,K.sMaterialCode ,L.sOrderNo ,K.sPatternName ,O.sCustomerShortName ,Q.sSPUNo ,CAST(R.sCustomerBoxNo AS INT) AS sCustomerBoxNo ,S.sDtlCustomerOrder,S.sUnit FROM WeavingERP.dbo.xjimOutHdr A WITH (NOLOCK) INNER JOIN WeavingERP.dbo.xjimStoreInOutType C WITH (NOLOCK) ON C.sStoreInOutType=A.sStoreOutType AND sStoreOutType='出货' INNER JOIN WeavingERP.dbo.xjimOutDtl D WITH (NOLOCK) ON A.uOutHdrId=D.uOutHdrId INNER JOIN WeavingERP.dbo.xjimStoreKeepingUnit H WITH (NOLOCK) ON H.uSKUId=D.uSKUId INNER JOIN WeavingERP.dbo.xjmmProductMaterial I WITH (NOLOCK) ON I.uProductMaterialId=H.uProductMaterialId INNER JOIN dbo.xjsdOrderDtl S WITH (NOLOCK) ON S.uOrderDtlId=I.uOrderDtlId INNER JOIN WeavingERP.dbo.xjsdOrderMaterialWeaving K WITH (NOLOCK) ON K.uOrderMaterialId=S.uOrderMaterialId INNER JOIN WeavingERP.dbo.xjsdOrderHdr L WITH (NOLOCK) ON L.uOrderHdrId=K.uOrderHdrId AND L.uOrderHdrId=S.uOrderHdrId INNER JOIN dbo.xjsdCustomerEx O WITH (NOLOCK) ON L.uCustomerId=O.uCustomerId INNER JOIN dbo.xjimStorePackageUnitDtl P WITH (NOLOCK) ON H.uSKUId = P.uSKUId INNER JOIN dbo.xjimStorePackageUnitHdr Q WITH (NOLOCK) ON P.uSPUHdrId=Q.uSPUHdrId AND Q.iType = 3 INNER JOIN dbo.xjpcCustomerBoxDtl R WITH (NOLOCK) ON Q.uSPUHdrId=R.uSPUHdrId WHERE C.bInnerInOutType=0 AND A.iStatus=2 --AND G.sStoreName='成品布仓' ) AS aView WHERE (tStoreOutTime = '2014-09-19') GROUP BY sStoreOutNo,tStoreOutTime ,sCustomerShortName,sOrderNo,sPatternName ,sMaterialCode,sDtlCustomerOrder,sSPUNo,sCustomerBoxNo,sskuno,sUnit,sColorShade --B表是待有卷号的 INSERT SHIPTEMPB SELECT sMaterialCode, sCustomerBoxNo ,sOrderNo ,nStoreOutQty,sColorShade FROM SHIPTEMPA --表3是得到所有的包号 INSERT SHIPTEMPC SELECT sStoreOutNo,tStoreOutTime,sCustomerShortName,sOrderNo,sPatternName ,sMaterialCode,sDtlCustomerOrder,sSPUNo,sCustomerBoxNO,sUnit FROM SHIPTEMPA GROUP BY sStoreOutNo,tStoreOutTime,sCustomerShortName,sOrderNo,sPatternName ,sMaterialCode,sDtlCustomerOrder,sSPUNo,sCustomerBoxNO,sUnit DECLARE @sMaterialCode VARCHAR(20) DECLARE @sCustomerBoxNo VARCHAR(20) DECLARE @sOrderNo VARCHAR(20) DECLARE @sColorShade VARCHAR(20) DECLARE sCustomerBoxNo_VIEW CURSOR FOR SELECT DISTINCT sOrderNo, sMaterialCode, sCustomerBoxNo,sColorShade FROM SHIPTEMPB OPEN sCustomerBoxNo_VIEW FETCH NEXT FROM sCustomerBoxNo_VIEW INTO @sorderNo,@sMaterialCode, @sCustomerBoxNo,@sColorShade WHILE @@FETCH_STATUS=0 BEGIN DECLARE @sSqlText VARCHAR(8000) DEClare @field VARCHAR(50) DECLARE @j INT DECLARE @i INT SET @i=0 SET @field='' SET @j=0 INSERT SHIPTEMPD SELECT * FROM SHIPTEMPB WHERE sOrderNo=@sOrderNo AND sMaterialCode=@sMaterialCode AND sCustomerBoxNo=@sCustomerBoxNo and sColorShade=@sColorShade --当前一个包的卷数 SELECT @j=count(*) FROM SHIPTEMPD SELECT @i=15-@j WHILE 1<=@i BEGIN SET @field =@field+',0' SET @i=@i-1 END SELECT @sSqlText= ' INSERT INTO textreport SELECT sOrderNo,sMaterialCode ,sCustomerBoxNo,sColorShade ' SELECT @sSqlText=@sSqlText+', CASE nStoreOutQty WHEN '''+replace(nStoreOutQty,'''','''''')+''' THEN nStoreOutQty ELSE 0 END AS '''+replace(nStoreOutQty,'''','''''')+'''' FROM SHIPTEMPD SET @sSqlText=@sSqlText+ @field+' ,'+cast(@j as varchar(30))+''+' FROM SHIPTEMPD GROUP BY sOrderNo,sMaterialCode ,sCustomerBoxNo,nStoreOutQty,sColorShade ' EXEC(@sSqlText) DELETE SHIPTEMPD FETCH NEXT FROM sCustomerBoxNo_VIEW INTO @sorderNo ,@sMaterialCode, @sCustomerBoxNo,@sColorShade END CLOSE sCustomerBoxNo_VIEW DEALLOCATE sCustomerBoxNo_VIEW SELECT uIden=newID(), sStoreOutNo,tStoreOutTime,sCustomerShortName,sPatternName ,sDtlCustomerOrder,sSPUNo, a.sorderno,a.sMaterialCode,a.sCustomerBoxNo,a.sColorShade ,case sum(qty1) when 0 then null else sum(qty1) end AS No1 ,case sum(qty2) when 0 then null else sum(qty2) end AS No2 ,case sum(qty3) when 0 then null else sum(qty3) end AS No3 ,case sum(qty4) when 0 then null else sum(qty4) end AS No4 ,case sum(qty5) when 0 then null else sum(qty5) end AS No5 ,case sum(qty6) when 0 then null else sum(qty6) end AS No6 ,case sum(qty7) when 0 then null else sum(qty7) end AS No7 ,case sum(qty8) when 0 then null else sum(qty8) end AS No8 ,case sum(qty9) when 0 then null else sum(qty9) end AS No9 ,case sum(qty10) when 0 then null else sum(qty10) end AS No10 ,case sum(qty11) when 0 then null else sum(qty11) end AS No11 ,case sum(qty12) when 0 then null else sum(qty12) end AS No12 ,case sum(qty13) when 0 then null else sum(qty13) end AS No13 ,case sum(qty14) when 0 then null else sum(qty14) end AS No14 ,case sum(qty15) when 0 then null else sum(qty15) end AS No15 ,SUM(nTotal)AS nTotal,nTotalSKU,b.sUnit FROM textreport a INNER JOIN SHIPTEMPC b ON a.sorderno=b.sorderno AND a.smaterialcode=b.smaterialcode AND a.sCustomerBoxNo=b.sCustomerBoxNo GROUP BY sStoreOutNo,tStoreOutTime,sCustomerShortName,sPatternName ,sDtlCustomerOrder,sSPUNo, a.sorderno,a.sMaterialCode,a.sCustomerBoxNo,nTotalSKU,b.sUnit,a.sColorShade DELETE SHIPTEMPA DELETE SHIPTEMPB DELETE SHIPTEMPC
gaoyan582 2014-09-20
  • 打赏
  • 举报
回复
我的情况是公司升级了ERP服务器,新服务器装的是2008,把原服务器上整个备份还原到新服务器上。 语句都是一样的。 今天ERP就有几个查询虎出现以上错误。 问问是不是SQL 2000和2008会有兼容错误啊,在2000上能执行的语句,在2008上就报错。
hleb231 2014-09-20
  • 打赏
  • 举报
回复

比较一下2008表内字段名和2000表内字段名 ,
检查你的语句,字段不是搞错了。

今天将由于需要就将我的SQL 2008升级到SQL 2008 R2. 说到为什么要升级是因为,从另一台机器上备份了一个数据库,到我的机器上还原的时候提示“System.Data.SqlClient.Sqlerror:该数据库是在运行版本10.50.2500的服务器上备份的,该版本与此服务器(运行版本10.00.1600)不兼容。请在支持该备份的服务器上还原数据库,或者使用与此服务器兼容的备份。” 经过一番查证得知: 所谓的10.00.1600其实就是SQL 2008 10.50.1600其实就是SQL 2008 R2 10.50.2500其实就是SQL 2008 R2 SP1 这样一来基本就明了了。 我得升级自己的数据库到SQL 2008 R2 SP1。 这篇文章就把我先升级到SQL 2008 R2的过程详细记录下来,下一篇文章会介绍升级R2到R2 SP1. 第一步:准备安装程序。 首先SQL 2008是安装好的 因此只需要下载SQL 2008 R2安装程序,下载地址如下:http://care.dlservice.microsoft.com/dl/download/1/E/6/1E626796-588A-495C-917B-321093FB98EB/2052/SQLFULL_x86_CHS.exe?lcid=2052&ptype=pcare 第二步:升级开始。SHOW TIME!!! 1、如果是从SQL2008升级到SQL2008R2那么只能选择左侧“安装”对应右侧“从SQL SERVER 2000SQL 2005或SQL 2008升级”这个选项来升级。 大家也注意到有一个“维护”但是这个选项是“从SQL 2008其他例如EXPRESS版本升级” 在此,要区分清楚。 2、安装程序支持规则检查。通过之后就继续下一步。 3、输入产品密钥,这个地方,你的密钥是什么版本的,装完之后你的数据库就是什么版本:像企业版,开发版等等等。 4、许可条款必须接受,不然人家不让用啊~~~ 5、安装程序支持文件。 6、程序支持规则安装完成后程序会自动检测安装的文件是否满足需求。 7、当你的服务器中只有一个实例的时候,你很难听到实例这个词,人们都直接叫他“数据库”了。只有在服务器上安装的实例数目超过两个的时候你才会听到“实例”二字比较多。 但是“实例”肯定是学习数据库过程中必须熟知的东东!!! 此处,选择你想要升级的实例。下一步就行了。 8、以前安装过的组件(component)都会出现在这里,不用管,以前有的,现在当然也要有,闭着眼睛点击“下一步”吧! 9、因为是升级安装,所以你以前的实例名字是什么,这里还是什么。继续“下一步”。 10、不废话,“下一步”。 11、是否发送错误报告,随便,下一步。 12、“下一步”。 13、点击“升级”按钮进行升级,中途等待大约20-30分钟就完成了。 升级过程中如图: 14、安装成功要求重新启动。重启吧没的说!! 15、重启完毕,启动SSMS(SQL SERVER MANAGEMENT STUDIO)在登陆界面上就会立马察觉到不同,SQL 2008变成了SQL 2008 R2. 16、连接上数据库引擎,在左侧导航栏就可以看到你数据库的版本了。这次变成了10.50.1600。如果还要升级到10.50.2500。那就继续安装一个升级补丁吧! 至此,10.00.1600升级10.50.1600已经成功完成。 总结一下: 10.00.1600就是SQL SERVER 2008 10.50.1600就是SQL SERVER 2008 R2 这篇博文里讲的是升级安装,如果你要进行全新安装,请按照如下操作: 一、卸载SQL SERVER 2008,一定要卸载,数据库不像其他常用的应用程序(那些程序会自动检测是否有旧版本,然后给你卸载并升级)。 另:对SQL来说,如果你安装好之后,再进行一次安装的话,实际上安装的是另外一个实例。 二、卸载完之后就安装就行了。执行的是安装---全新安装。 其他细节参考我的博文:SQL SERVER 2008安装(在实例、权限等方面,SQL 2008SQL 2008 R2是一样的)。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧