在我们的开发工作中,经常会面临这样的问题:为了测试需要建立n(n当然不是1,也不是2,而是100,甚至更大)多个与实际环境所使用的数据库相同的数据库。要是靠手工一个接一个的来建立我们所需要的库,当然是可以的。不过这种重复的体力劳动往往让人难以忍受。为了避免纯手工的建库操作,可以考虑使用SQL脚本来完成我们的工作。
使用SQL脚本完成的主要的工作包括:批量建n个库,使用备份文件批量还原n个库,测试完成后,批量删除测试库。
1、批量建库
批量建库的SQL脚本如下:
DECLARE @sql NVARCHAR(200) DECLARE @dbname NVARCHAR(200) DECLARE @count NVARCHAR(10) DECLARE @n int SET @n=1 WHILE @n<101 BEGIN SET @count=LTRIM(STR(@n)) SET @dbname='TESTDB_'+ @count SET @sql='CREATE DATABASE'+@dbname EXEC(@sql) SET @n=@n+1 END |
上面的批量建库脚本,使用循环建立了100个库,修改循环条件(@n<101)即可建立自己想要的个数的库。使用此脚本进行批量建库时,所建的库的名称都含有前缀'TESTDB_',只是后面的编号不同。且建立的库都被保存到SQL Server安装时默认的数据库文件保存文件夹下。要想建立的数据库保存到指定的文件夹下,可以采用下面的建库脚本。
DECLARE @sql NVARCHAR(200) DECLARE @dbname NVARCHAR(200) DECLARE @mdfname NVARCHAR(200) DECLARE @ldfname NVARCHAR(200) DECLARE @filename NVARCHAR(200) DECLARE @logname NVARCHAR(200) DECLARE @count NVARCHAR(10) DECLARE @n int SET @n=1 WHILE @n<101 BEGIN SET @count=LTRIM(STR(@n)) SET @dbname='TESTDB_'+ @count SET @mdfname='TESTDB_0' SET @ldfname='TESTDB_0_log' SET @filename='E:\DBTest\DATA\'+@dbname+'.mdf' SET @logname='E:\DBTest\DATA\'+@dbname+'.ldf' SET @sql='CREATE DATABASE'+@dbname+'ON(NAME='''+@mdfname+''',FILENAME='''+@filename+''') LOG ON(NAME='''+@ldfname+''',FILENAME='''+@logname+''')' EXEC(@sql) SET @n=@n+1 END
|
执行上面的脚本,就将含有逻辑名'TESTDB_0'的数据库文件TESTDB_n.mdf 和含有逻辑名'TESTDB_0_log'的日志文件TESTDB_n_log.ldf将会被存储在'E:\DBTest\DATA\'路径下。关于逻辑文件名,将会在其他文章中进行介绍,敬请期待。