SQL Server搭建模拟环境进行测试
2008-04-24 20:08
381 查看
接触数据库早期写的东西,初学者可以看看。 一、接口部分
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_Construct]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛测试环境>
-- =============================================
create proc [dbo].[PrMatch_Construct]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as
set nocount on
begin
declare @sql varchar(1024)
while (@i<=@intMax)
begin
set @sql = ''create table ''+@strTabName+cast(@i as varchar)+''(UserID int,Amount int)''
exec(@sql)
if (@@Error<>0) print @i
set @i = @i + 1
end
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_AddRecord]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'
-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛添加测试数据>
-- =============================================
CREATE proc [dbo].[PrMatch_AddRecord]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as
set nocount on
begin
declare @sql varchar(1024)
while (@i<=@intMax)
begin
set @sql = ''insert into ''+@strTabName+cast(@i as varchar) +
''(UserID ,Amount)''+
'' select 100,1 ''+''union select 101,2 ''+''union select 101,3''
exec(@sql)
if (@@Error<>0) print @i
set @i = @i + 1
end
end
'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_CheckEnvironment]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'
-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛检查环境>
-- =============================================
CREATE proc [dbo].[PrMatch_CheckEnvironment]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
--@strErrMsg varchar(120) output
as
set nocount on
begin
declare @sql varchar(1024)
while (@i<=@intMax)
begin
set @sql =''if not exists(select 1 from sysobjects where name = ''''''+
@strTabName+cast(@i as varchar)+
'''''') print ''''错误:''+@strTabName+
cast(@i as varchar)+''缺少''''''
exec(@sql)
set @i = @i + 1
end
end
'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_DropEnvironment]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛测试环境删除>
-- =============================================
create proc [dbo].[PrMatch_DropEnvironment]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as
set nocount on
begin
declare @sql varchar(1024)
while (@i <=@intMax)
begin
set @sql = ''drop table ''+@strTabName+cast(@i as varchar)
exec(@sql)
set @i = @i+1
end
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_UpdateRecord]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'
-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛更新数据>
-- =============================================
CREATE proc [dbo].[PrMatch_UpdateRecord]
@dtmBgnDate datetime --大赛开始日期
as
set nocount on
begin
--update userlist
if @dtmBgnDate is null
begin print ''请输入大赛开始日期!'' return end
if not exists(select 1 from sysobjects where name = ''UserList'')
begin print ''TABLE :UserList Not Exists!'' return end
if not exists(select 1 from sysobjects where name = ''UserLogin'')
begin print ''TABLE :UserLogin Not Exists!'' return end
update userlist set now_money=100000, --当前帐户余额
dyn_money=100000, --昨日帐户市值
fdyn_money=100000, --周一帐户市值
cnum=0, --平仓次数
volume=0, --成交量
smax_surplus=0 --单笔获利最高
if (@@Error=0) print ''TABLE : UserList Updated! Counts : ''+cast(@@RowCount as varchar)
--update userlogin
update userlogin set initTime=@dtmBgnDate
if (@@Error=0) print ''TABLE : UserLogin Updated! Counts : ''+cast(@@RowCount as varchar)
end
'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_DelRecord]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'
-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛删除测试数据>
-- =============================================
CREATE proc [dbo].[PrMatch_DelRecord]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as
set nocount on
begin
declare @sql varchar(1024)
while (@i <=@intMax)
begin
set @sql = ''delete from ''+@strTabName+cast(@i as varchar)
exec(@sql)
if (@@Error<>0) print @i
set @i = @i + 1
end
--Limit_History,Limit
if exists(select 1 from sysobjects where name =''limit'')
delete from Limit
if exists(select 1 from sysobjects where name =''limit_history'')
begin
delete from Limit_History
--Restore Limit_History`s identity seed to 0
DBCC CHECKIDENT(Limit_History,reseed,0)
end
end
'
END
二、调用方式
use xupan
--构造测试环境
--exec PrMatch_Construct 'no_close',0,99
--添加测试数据
--exec PrMatch_AddRecord 'no_close',0,99
--检测环境
exec PrMatch_CheckEnvironment 'no_close',0,99
exec PrMatch_CheckEnvironment 'closed',0,99
--数据删除
exec PrMatch_DelRecord 'no_close',0,99
exec PrMatch_DelRecord 'closed',0,99
--数据更新
declare @dtmBgnDate smalldatetime --大赛开始时间
set @dtmBgnDate=Getdate()
exec PrMatch_UpdateRecord @dtmBgnDate
--删除测试环境
--exec PrMatch_DropEnvironment 'no_close',0,99
三、处理名称相关表的方法(a
--取得closed0到closed99满足条件的数据
declare @sql varchar(8000)
declare @i int,@strTabName varchar(32)
set @i=0
set @sql=''
while (@i<=99)
begin
set @strTabName='Closed'+cast(@i as varchar)
select @sql=@sql+'select * from '+@strTabName+' where ctime<=''2007-02-01 9:00:00'''+' union'+char(10)+char(13)
set @i=@i+1
end
select @sql=left(@sql,len(@sql)-7)
--print @sql
exec(@sql)
(b)
sp_msforeachtable @command1='print ''?''',
@command2='select * from ? where ctime>''2007-02-01 9:00:00''',
@whereand=' and name like ''closed%'' '
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_Construct]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛测试环境>
-- =============================================
create proc [dbo].[PrMatch_Construct]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as
set nocount on
begin
declare @sql varchar(1024)
while (@i<=@intMax)
begin
set @sql = ''create table ''+@strTabName+cast(@i as varchar)+''(UserID int,Amount int)''
exec(@sql)
if (@@Error<>0) print @i
set @i = @i + 1
end
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_AddRecord]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'
-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛添加测试数据>
-- =============================================
CREATE proc [dbo].[PrMatch_AddRecord]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as
set nocount on
begin
declare @sql varchar(1024)
while (@i<=@intMax)
begin
set @sql = ''insert into ''+@strTabName+cast(@i as varchar) +
''(UserID ,Amount)''+
'' select 100,1 ''+''union select 101,2 ''+''union select 101,3''
exec(@sql)
if (@@Error<>0) print @i
set @i = @i + 1
end
end
'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_CheckEnvironment]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'
-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛检查环境>
-- =============================================
CREATE proc [dbo].[PrMatch_CheckEnvironment]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
--@strErrMsg varchar(120) output
as
set nocount on
begin
declare @sql varchar(1024)
while (@i<=@intMax)
begin
set @sql =''if not exists(select 1 from sysobjects where name = ''''''+
@strTabName+cast(@i as varchar)+
'''''') print ''''错误:''+@strTabName+
cast(@i as varchar)+''缺少''''''
exec(@sql)
set @i = @i + 1
end
end
'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_DropEnvironment]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛测试环境删除>
-- =============================================
create proc [dbo].[PrMatch_DropEnvironment]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as
set nocount on
begin
declare @sql varchar(1024)
while (@i <=@intMax)
begin
set @sql = ''drop table ''+@strTabName+cast(@i as varchar)
exec(@sql)
set @i = @i+1
end
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_UpdateRecord]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'
-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛更新数据>
-- =============================================
CREATE proc [dbo].[PrMatch_UpdateRecord]
@dtmBgnDate datetime --大赛开始日期
as
set nocount on
begin
--update userlist
if @dtmBgnDate is null
begin print ''请输入大赛开始日期!'' return end
if not exists(select 1 from sysobjects where name = ''UserList'')
begin print ''TABLE :UserList Not Exists!'' return end
if not exists(select 1 from sysobjects where name = ''UserLogin'')
begin print ''TABLE :UserLogin Not Exists!'' return end
update userlist set now_money=100000, --当前帐户余额
dyn_money=100000, --昨日帐户市值
fdyn_money=100000, --周一帐户市值
cnum=0, --平仓次数
volume=0, --成交量
smax_surplus=0 --单笔获利最高
if (@@Error=0) print ''TABLE : UserList Updated! Counts : ''+cast(@@RowCount as varchar)
--update userlogin
update userlogin set initTime=@dtmBgnDate
if (@@Error=0) print ''TABLE : UserLogin Updated! Counts : ''+cast(@@RowCount as varchar)
end
'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PrMatch_DelRecord]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'
-- =============================================
-- Author: <whbo>
-- Create date: <061222>
-- Description: <模拟大赛删除测试数据>
-- =============================================
CREATE proc [dbo].[PrMatch_DelRecord]
@strTabName varchar(32),--表名
@i int,--迭代子
@intMax int--最大迭代
as
set nocount on
begin
declare @sql varchar(1024)
while (@i <=@intMax)
begin
set @sql = ''delete from ''+@strTabName+cast(@i as varchar)
exec(@sql)
if (@@Error<>0) print @i
set @i = @i + 1
end
--Limit_History,Limit
if exists(select 1 from sysobjects where name =''limit'')
delete from Limit
if exists(select 1 from sysobjects where name =''limit_history'')
begin
delete from Limit_History
--Restore Limit_History`s identity seed to 0
DBCC CHECKIDENT(Limit_History,reseed,0)
end
end
'
END
二、调用方式
use xupan
--构造测试环境
--exec PrMatch_Construct 'no_close',0,99
--添加测试数据
--exec PrMatch_AddRecord 'no_close',0,99
--检测环境
exec PrMatch_CheckEnvironment 'no_close',0,99
exec PrMatch_CheckEnvironment 'closed',0,99
--数据删除
exec PrMatch_DelRecord 'no_close',0,99
exec PrMatch_DelRecord 'closed',0,99
--数据更新
declare @dtmBgnDate smalldatetime --大赛开始时间
set @dtmBgnDate=Getdate()
exec PrMatch_UpdateRecord @dtmBgnDate
--删除测试环境
--exec PrMatch_DropEnvironment 'no_close',0,99
三、处理名称相关表的方法(a
--取得closed0到closed99满足条件的数据
declare @sql varchar(8000)
declare @i int,@strTabName varchar(32)
set @i=0
set @sql=''
while (@i<=99)
begin
set @strTabName='Closed'+cast(@i as varchar)
select @sql=@sql+'select * from '+@strTabName+' where ctime<=''2007-02-01 9:00:00'''+' union'+char(10)+char(13)
set @i=@i+1
end
select @sql=left(@sql,len(@sql)-7)
--print @sql
exec(@sql)
(b)
sp_msforeachtable @command1='print ''?''',
@command2='select * from ? where ctime>''2007-02-01 9:00:00''',
@whereand=' and name like ''closed%'' '
相关文章推荐
- 基于VMware Workstation在Windows Server 2008 R2上搭建SQL Server 2012高可用性组(AlwaysOn Group)测试环境(三)
- openfire环境搭建并进行测试
- Fiddler如何模拟弱网环境进行测试
- 基于VMware Workstation在Windows Server 2008 R2上搭建SQL Server 2012高可用性组(AlwaysOn Group)测试环境(四)
- 新 CentOS 6.5 6.9 环境下搭建直播模拟测试环境 ffmpeg+nginx=rtmp (傻瓜式环境搭建)
- 使用Rspec进行rails测试详解1-搭建测试环境
- 用Fiddler或Charles进行mock数据搭建测试环境
- 搭建mocha测试环境并使用selenium进行测试
- sell01 环境搭建、编写持久层并进行测试
- 基于VMware Workstation在Windows Server 2008 R2上搭建SQL Server 2012高可用性组(AlwaysOn Group)测试环境(一)
- Fiddler如何模拟弱网环境进行测试
- 搭建mocha测试环境并使用selenium进行测试
- 用Fiddler或Charles进行mock数据搭建测试环境
- linux下搭建一个xampp环境进行性能测试
- 如何模拟线上环境进行测试
- asp+sql server 2005运行环境搭建与测试
- 在Hyper-v上模拟真实的网络环境,搭建ARP攻击测试 推荐
- 基于VMware Workstation在Windows Server 2008 R2上搭建SQL Server 2012高可用性组(AlwaysOn Group)测试环境(五)
- 利用 Virtualbox 进行 Ironic 环境的搭建和测试
- 15、单机运行环境搭建之 --Centos6.4下对mysql进行压力测试