SQLSERVER数据库升级脚本图文步骤

2023年 4月 18日 50.6k 0

只能远程协助的方式。我特意做了一个脚本,用电话指导客户在SSMS里执行一下脚本就可以了 1.0的数据库跟1.1的数据库的区别是1.1的数据库里的其中一个[CT_OuterCard]表比1.0的多了6个字段

只能远程协助的方式。我特意做了一个脚本,用电话指导客户在SSMS里执行一下脚本就可以了

1.0的数据库跟1.1的数据库的区别是1.1的数据库里的其中一个[CT_OuterCard]表比1.0的多了6个字段,其他所有表都一样

还有存储过程增加了很多,其他都没有改变

首先,先在公司的服务器数据库上生成存储过程脚本,数据库是1.1版本的,下面的图片里没有说明的,都是默认设置,下一步即可

选中数据库-》右键—》任务-》生成脚本

当然,如果你的数据库里有自定义函数的话,也可以勾选函数,如果我们的数据库没有函数,所以。。。

保存到新建查询窗口

这一步做完了,然后编写下面的SQL脚本

复制代码 代码如下:--升级GPOS1.0到GPOS1.1数据库的升级脚本 2013-7-4USE [GPOSDB]GO------------------删除所有存储过程---------------------select * from sys.procedures

declare @sql varchar(4000)set @sql=''select @sql=@sql+'drop proc '+name+';   ' from sys.procedures--print @sqlexec(@sql)

--------------------------------在[CT_OuterCard]表添加6个字段-------------------------------ALTER TABLE [dbo].[CT_OuterCard] ADD [I_LimitTransCurrCount] INT  NOT NULL CONSTRAINT [DF_CT_OuterCard_I_LimitTransCurrCount]  DEFAULT ((0))ALTER TABLE [dbo].[CT_OuterCard] ADD [I_LimitTransType] [int] CONSTRAINT [DF_CT_OuterCard_I_LimitTransType]  DEFAULT ((0))ALTER TABLE [dbo].[CT_OuterCard] ADD [DE_LimitTransTotal] [decimal](18, 2) NOT NULL CONSTRAINT [DF_CT_OuterCard_DE_LimitTransTotal]  DEFAULT ((0))ALTER TABLE [dbo].[CT_OuterCard] ADD [DE_LimitTransCurrTotal] [decimal](18, 2) NOT NULL CONSTRAINT [DF_CT_OuterCard_DE_LimitTransCurrTotal]  DEFAULT ((0))ALTER TABLE [dbo].[CT_OuterCard] ADD [I_LimitCarNo] [int] NOT NULL CONSTRAINT [DF_CT_OuterCard_I_LimitCarNo]  DEFAULT ((0))ALTER TABLE [dbo].[CT_OuterCard] ADD [D_LimitDate] [datetime] NOT NULL CONSTRAINT [DF_CT_OuterCard_D_LimitDate]  DEFAULT (getdate())----------------------------------------------------------------------------------------------------------------把刚才在新建查询窗口里生成的存储过程脚本粘贴到下面---------------------------创建GPOS1.1的所有存储过程---------------------------------------------USE [GPOSDB]GO/****** 对象:  StoredProcedure [dbo].[Report_GreaserSaleStat]    脚本日期: 07/04/2013 13:27:09 ******/SET ANSI_NULLS OFFGOSET QUOTED_IDENTIFIER OFFGO

CREATE PROC [dbo].[Report_GreaserSaleStat]@StartDate datetime,@EndDate datetime,@Action int --0为交易记录,1为班次记录

                insert into #tmpCardAmoutStat                (                    VC_OC_CardNO,            set @i=@i+1        end

        truncate table #tmpCards        insert into #tmpCards(VC_OC_CardNO)        select VC_OC_CardNO from CT_OuterCard where isnull(VC_OC_Company,'')=''        set @j=1        select @cardcount=count(*) from #tmpCards        while @j<=@cardcount        begin            select @VC_OC_CardNO=VC_OC_CardNO from #tmpCards where  IndexId=@j            insert into #tmpCardAmoutStat                (                    VC_OC_CardNO,       

        insert into #tmpCardAmoutStat            (                VC_OC_CardNO,                CompanyName,                VC_OC_UserName,                StartAmount,                FillMoney,                ConsumeSumVol,                 ConsumeMoney,                 SumConsumeSumVol,                SumConsumeMoney,                SumFillMoney

            )        select             null,            null,            '客户卡小计',            sum(StartAmount),            sum(FillMoney),            sum(ConsumeSumVol),        truncate table #tmpCards        insert into #tmpCards(VC_OC_CardNO)        select VC_IC_CardNO from CT_InhouseCard where isnull(VC_IC_CardNO,'')<>''        set @j=1        select @cardcount=count(*) from #tmpCards        while @j<=@cardcount        begin            select @VC_OC_CardNO=VC_OC_CardNO from #tmpCards where  IndexId=@j            insert into #tmpCardAmoutStat                (                    VC_OC_CardNO,                    CompanyName,                    VC_OC_UserName,                    StartAmount,                    FillMoney,                    ConsumeSumVol,                     ConsumeMoney,                     SumConsumeSumVol,                    SumConsumeMoney,                    SumFillMoney

                )            select                 @VC_OC_CardNO,                '员工卡',                isnull((select VC_IC_UserName from CT_InhouseCard where VC_IC_CardNO=@VC_OC_CardNO),''),                isnull((select top 1 DE_FD_Amount from CT_FuelingData where VC_FD_Cardno=@VC_OC_CardNO and (D_FD_DateTime<=@StartDate) order by D_FD_DateTime desc),0),                isnull((select sum(DE_A_AppendAmount) from CT_Append where VC_A_CardNO=@VC_OC_CardNO and (D_A_AppendDateTime between @StartDate and @EndDate)),0),                isnull((select sum(DE_FD_Volume) from CT_FuelingData where VC_FD_Cardno=@VC_OC_CardNO and (D_FD_DateTime between @StartDate and @EndDate)),0),                isnull((select sum(DE_FD_Amount) from CT_FuelingData where VC_FD_Cardno=@VC_OC_CardNO and (D_FD_DateTime between @StartDate and @EndDate)),0),                isnull((select sum(DE_FD_Volume) from CT_FuelingData where VC_FD_Cardno=@VC_OC_CardNO),0),                isnull((select sum(DE_FD_Amount) from CT_FuelingData where VC_FD_Cardno=@VC_OC_CardNO),0),                isnull((select sum(DE_A_AppendAmount) from CT_Append where VC_A_CardNO=@VC_OC_CardNO),0)            set @j=@j+1        end

        insert into #tmpCardAmoutStat            (                VC_OC_CardNO,                CompanyName,                VC_OC_UserName,                StartAmount,                FillMoney,                ConsumeSumVol,                 ConsumeMoney,                 SumConsumeSumVol,                SumConsumeMoney,                SumFillMoney

            )        select             null,            null,            '员工卡小计',            sum(StartAmount),            sum(FillMoney),            sum(ConsumeSumVol),            sum(ConsumeMoney),            sum(SumConsumeSumVol),            sum(SumConsumeMoney),            sum(SumFillMoney)         from             #tmpCardAmoutStat         where             CompanyName='员工卡'        ---计算员工卡汇总结束---    end    ----计算总汇总开始---    insert into #tmpCardAmoutStat        (            VC_OC_CardNO,            CompanyName,            VC_OC_UserName,            StartAmount,            FillMoney,            ConsumeSumVol,             ConsumeMoney,             SumConsumeSumVol,            SumConsumeMoney,            SumFillMoney

        )    select         null,        null,        '总计',        sum(StartAmount),        sum(FillMoney),        sum(ConsumeSumVol),        sum(ConsumeMoney),        sum(SumConsumeSumVol),        sum(SumConsumeMoney),        sum(SumFillMoney)     from         #tmpCardAmoutStat     where         (VC_OC_UserName='客户卡小计' or VC_OC_UserName='员工卡小计') and VC_OC_CardNO is null    update #tmpCardAmoutStat set EndAmount=StartAmount+FillMoney-ConsumeMoney    ---计算总汇总结束---    select * from  #tmpCardAmoutStat

    drop table #tmpCards    drop table #tmpCompanys    drop table #tmpCardAmoutStatGO

--其他存储过程省略。。。。。。。。。。。

然后把这个脚本发给客户,让客户在SSMS里执行一下就可以了

当然如果某些表的主键更改了也很简单,使用alter table alter column语句修改一下就可以了

如有不对的地方,欢迎大家拍砖o(∩_∩)o

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论