记录一下公司数据库升级的步骤

浏览: 1761

公司的系统需要从1.0升级到1.1,包括所有正在使用我们公司产品的客户,因为公司的客户遍布全国,不可能出差每个客户都跑一次

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

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

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

---------------------------------------------华丽的分割线-----------------------------------------------

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

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

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

保存到新建查询窗口

---------------------------------------华丽的分割线-----------------------------------------------------

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

  1 --升级GPOS1.0到GPOS1.1数据库的升级脚本 2013-7-4
2 USE [GPOSDB]
3 GO
4 ------------------------------------删除所有存储过程-----------------------------------
5 --select * from sys.procedures
6
7 declare @sql varchar(4000)
8 set @sql=''
9 select @sql=@sql+'drop proc '+name+'; ' from sys.procedures
10 --print @sql
11 exec(@sql)
12
13 --------------------------------在[CT_OuterCard]表添加6个字段-------------------------------
14 ALTER TABLE [dbo].[CT_OuterCard] ADD [I_LimitTransCurrCount] INT NOT NULL CONSTRAINT [DF_CT_OuterCard_I_LimitTransCurrCount] DEFAULT ((0))
15 ALTER TABLE [dbo].[CT_OuterCard] ADD [I_LimitTransType] [int] CONSTRAINT [DF_CT_OuterCard_I_LimitTransType] DEFAULT ((0))
16 ALTER TABLE [dbo].[CT_OuterCard] ADD [DE_LimitTransTotal] [decimal](18, 2) NOT NULL CONSTRAINT [DF_CT_OuterCard_DE_LimitTransTotal] DEFAULT ((0))
17 ALTER TABLE [dbo].[CT_OuterCard] ADD [DE_LimitTransCurrTotal] [decimal](18, 2) NOT NULL CONSTRAINT [DF_CT_OuterCard_DE_LimitTransCurrTotal] DEFAULT ((0))
18 ALTER TABLE [dbo].[CT_OuterCard] ADD [I_LimitCarNo] [int] NOT NULL CONSTRAINT [DF_CT_OuterCard_I_LimitCarNo] DEFAULT ((0))
19 ALTER TABLE [dbo].[CT_OuterCard] ADD [D_LimitDate] [datetime] NOT NULL CONSTRAINT [DF_CT_OuterCard_D_LimitDate] DEFAULT (getdate())
20 --------------------------------------------------------------------------------------------------------------
21 --把刚才在新建查询窗口里生成的存储过程脚本粘贴到下面
22 ---------------------------创建GPOS1.1的所有存储过程---------------------------------------------
23 USE [GPOSDB]
24 GO
25 /****** 对象: StoredProcedure [dbo].[Report_GreaserSaleStat] 脚本日期: 07/04/2013 13:27:09 ******/
26 SET ANSI_NULLS OFF
27 GO
28 SET QUOTED_IDENTIFIER OFF
29 GO
30
31
32 CREATE PROC [dbo].[Report_GreaserSaleStat]
33 @StartDate datetime,
34 @EndDate datetime,
35 @Action int --0为交易记录,1为班次记录
36
37
38 insert into #tmpCardAmoutStat
39 (
40 VC_OC_CardNO,
41
42 set @i=@i+1
43 end
44
45 truncate table #tmpCards
46 insert into #tmpCards(VC_OC_CardNO)
47 select VC_OC_CardNO from CT_OuterCard where isnull(VC_OC_Company,'')=''
48 set @j=1
49 select @cardcount=count(*) from #tmpCards
50 while @j<=@cardcount
51 begin
52 select @VC_OC_CardNO=VC_OC_CardNO from #tmpCards where IndexId=@j
53 insert into #tmpCardAmoutStat
54 (
55 VC_OC_CardNO,
56
57
58 insert into #tmpCardAmoutStat
59 (
60 VC_OC_CardNO,
61 CompanyName,
62 VC_OC_UserName,
63 StartAmount,
64 FillMoney,
65 ConsumeSumVol,
66 ConsumeMoney,
67 SumConsumeSumVol,
68 SumConsumeMoney,
69 SumFillMoney
70
71 )
72 select
73 null,
74 null,
75 '客户卡小计',
76 sum(StartAmount),
77 sum(FillMoney),
78 sum(ConsumeSumVol),
79
80 truncate table #tmpCards
81 insert into #tmpCards(VC_OC_CardNO)
82 select VC_IC_CardNO from CT_InhouseCard where isnull(VC_IC_CardNO,'')<>''
83 set @j=1
84 select @cardcount=count(*) from #tmpCards
85 while @j<=@cardcount
86 begin
87 select @VC_OC_CardNO=VC_OC_CardNO from #tmpCards where IndexId=@j
88 insert into #tmpCardAmoutStat
89 (
90 VC_OC_CardNO,
91 CompanyName,
92 VC_OC_UserName,
93 StartAmount,
94 FillMoney,
95 ConsumeSumVol,
96 ConsumeMoney,
97 SumConsumeSumVol,
98 SumConsumeMoney,
99 SumFillMoney
100
101 )
102 select
103 @VC_OC_CardNO,
104 '员工卡',
105 isnull((select VC_IC_UserName from CT_InhouseCard where VC_IC_CardNO=@VC_OC_CardNO),''),
106 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),
107 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),
108 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),
109 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),
110 isnull((select sum(DE_FD_Volume) from CT_FuelingData where VC_FD_Cardno=@VC_OC_CardNO),0),
111 isnull((select sum(DE_FD_Amount) from CT_FuelingData where VC_FD_Cardno=@VC_OC_CardNO),0),
112 isnull((select sum(DE_A_AppendAmount) from CT_Append where VC_A_CardNO=@VC_OC_CardNO),0)
113 set @j=@j+1
114 end
115
116 insert into #tmpCardAmoutStat
117 (
118 VC_OC_CardNO,
119 CompanyName,
120 VC_OC_UserName,
121 StartAmount,
122 FillMoney,
123 ConsumeSumVol,
124 ConsumeMoney,
125 SumConsumeSumVol,
126 SumConsumeMoney,
127 SumFillMoney
128
129 )
130 select
131 null,
132 null,
133 '员工卡小计',
134 sum(StartAmount),
135 sum(FillMoney),
136 sum(ConsumeSumVol),
137 sum(ConsumeMoney),
138 sum(SumConsumeSumVol),
139 sum(SumConsumeMoney),
140 sum(SumFillMoney)
141 from
142 #tmpCardAmoutStat
143 where
144 CompanyName='员工卡'
145 ---计算员工卡汇总结束---
146 end
147
148 ----计算总汇总开始---
149 insert into #tmpCardAmoutStat
150 (
151 VC_OC_CardNO,
152 CompanyName,
153 VC_OC_UserName,
154 StartAmount,
155 FillMoney,
156 ConsumeSumVol,
157 ConsumeMoney,
158 SumConsumeSumVol,
159 SumConsumeMoney,
160 SumFillMoney
161
162 )
163 select
164 null,
165 null,
166 '总计',
167 sum(StartAmount),
168 sum(FillMoney),
169 sum(ConsumeSumVol),
170 sum(ConsumeMoney),
171 sum(SumConsumeSumVol),
172 sum(SumConsumeMoney),
173 sum(SumFillMoney)
174 from
175 #tmpCardAmoutStat
176 where
177 (VC_OC_UserName='客户卡小计' or VC_OC_UserName='员工卡小计') and VC_OC_CardNO is null
178 update #tmpCardAmoutStat set EndAmount=StartAmount+FillMoney-ConsumeMoney
179 ---计算总汇总结束---
180 select * from #tmpCardAmoutStat
181
182 drop table #tmpCards
183 drop table #tmpCompanys
184 drop table #tmpCardAmoutStat
185 GO
186
187 --其他存储过程省略。。。。。。。。。。。


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

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

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

推荐 0
本文由 桦仔 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册