手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQLSERVER数据库升级脚本图文步骤
SQLSERVER数据库升级脚本图文步骤
摘要:只能远程协助的方式。我特意做了一个脚本,用电话指导客户在SSMS里执行一下脚本就可以了1.0的数据库跟1.1的数据库的区别是1.1的数据库里...

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

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

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

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

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

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

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

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

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

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

保存到新建查询窗口

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

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

复制代码 代码如下:

--升级GPOS1.0到GPOS1.1数据库的升级脚本 2013-7-4

USE [GPOSDB]

GO

------------------删除所有存储过程-------------------

--select * from sys.procedures

declare @sql varchar(4000)

set @sql=''

select @sql=@sql+'drop proc '+name+'; ' from sys.procedures

--print @sql

exec(@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 OFF

GO

SET QUOTED_IDENTIFIER OFF

GO

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 #tmpCardAmoutStat

GO

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

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

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

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

【SQLSERVER数据库升级脚本图文步骤】相关文章:

SQLServer 数据库开发顶级技巧

MSSQL 清空数据库的方法

SQL Server 2005 开启数据库远程连接的方法

SQL Server 2012 将数据导出为脚本

SQL SERVER:不同服务器数据库之间的数据操作

SQL Server数据库的修复SQL语句

通过SQL Server 2008数据库复制实现数据库同步备份

使用SQL Server数据库嵌套子查询的方法

SQL Server 2008 备份数据库、还原数据库的方法

数据库 日期加减处理

精品推荐
分类导航