SQL脚本批量建库,批量还原库,批量删除库
作者:网络转载 发布时间:[ 2013/4/16 10:35:44 ] 推荐标签:
在我们的开发工作中,经常会面临这样的问题:为了测试需要建立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:DBTestDATA'+@dbname+'.mdf'
SET @logname='E:DBTestDATA'+@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:DBTestDATA'路径下。关于逻辑文件名,将会在其他文章中进行介绍,敬请期待。

sales@spasvo.com