@echo off
rem %1 为路径参数;
rem %2 为版本号;如 6.1.2
rem %3 为版本; 为“标准版”或“多探头版”
echo 正在启动SQL SERVER服务...
net start "SQL Server (SQL2008)"
echo 正在创建数据库,请稍等...
osql -E /Q "IF Not Exists (SELECT name FROM master.dbo.sysdatabases WHERE name = N'BW_SIM') RESTORE DATABASE BW_SIM FROM DISK ='%1\Data\BW_SIM V %2 %3' WITH MOVE 'BW_SIM_Data' TO '%1\Data\BW_SIM.mdf',MOVE 'BW_SIM_log' TO '%1\Data\BW_SIM.ldf'"
rem echo 正在启动SQL代理...
rem net start sqlserveragent
echo 正在更新SQL脚本...
osql -E -i %1\Data\BW_SIM_V%2%3.sql
echo 数据库创建成功!
1 、@echo off
就是说关闭回显
@echo off并不是DOS程序中的,而是DOS批处理中的。当年的DOS,所有操作都用键盘命令来完成,当你每次都要输入相同的命令时,可以把这么多命令存为一个批处理,从此以后,只要运行这个批处理,就相当于打了几行、几十行命令。DOS在运行批处理时,会依次执行批处理中的每条命令,并且会在显示器上显示,如果你不想让它们显示,可以加一个“echo off”当然,“echo off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个“@”。
2、rem
rem使您可以在批处理文件或配置文件中加入注释。
语法rem [comment]参数comment 指定要作为注释的任何字符串。
例如:
rem %1 为路径参数;
rem %2 为版本号;如 6.1.2
rem %3 为版本; 为“标准版”或“多探头版”
3、RESTORE DATABASE恢复数据库
RESTORE DATABASE A FROM DISK = N'D:\B' with RECOVERY,NOUNLOAD, REPLACE, STATS = 10 , MOVE '数据库逻辑名' TO '数据库A的完整路径+数据文件名.mdf', MOVE '日志逻辑名' TO '数据库A的完整路径+日志文件名.ldf'
例子:将数据库备份文件“BW_SIM_V1.0.0 标准版”还原为BW_SIM(覆盖还原)
RESTORE DATABASE BW_SIM FROM DISK = N'D:\例子\BW_SIM_V1.0.0 标准版' with RECOVERY,NOUNLOAD, REPLACE, STATS = 10,
MOVE 'bw_sim_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\BW_SIM.mdf',
MOVE 'bw_sim_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL$SQL2000\Data\BW_SIM.ldf'
把 D:\测试\BW_SIM_V1.0.0 标准版 还原到数据库,数据库、日志文件放在D:\测试 路径下。
RESTORE DATABASE BW_SIM FROM DISK = N'D:\测试\BW_SIM_V1.0.0 标准版' with RECOVERY,NOUNLOAD, REPLACE, STATS = 10,
MOVE 'bw_sim_Data' TO 'D:\测试\BW_SIM.mdf',
MOVE 'bw_sim_Log' TO 'D:\测试\BW_SIM.ldf'
4、osql命令
-E
使用可信连接而不请求密码。
-Q " query " 执行查询并立即退出 osql。将查询用双引号括起来,将查询中嵌入的任何内容用单引号括起来。
-i input_file
标识包含一批 SQL 语句或存储过程的文件。小于 (<) 比较运算符可以代替 -i 使用。
5、中间要暂停,查看状态,可以加入PAUSE或者pause,例如
@echo off
rem %1 为路径参数;
rem %2 为版本号;如 6.1.2
rem %3 为版本; 为“标准版”或“多探头版”
echo 正在启动SQL SERVER服务...
net start mssqlserver
echo 正在创建数据库,请稍等...
osql -E /Q "IF Not Exists (SELECT name FROM master.dbo.sysdatabases WHERE name = N'BW_SMS') RESTORE DATABASE BW_SMS FROM DISK ='%1\Data\BW_SMS_V%2%3' WITH MOVE 'BW_SMS_Data' TO '%1\Data\BW_SMS.mdf',MOVE 'BW_SMS_log' TO '%1\Data\BW_SMS.ldf'"
PAUSE
rem echo 正在启动SQL代理...
rem net start sqlserveragent
echo 正在更新SQL脚本...
osql -E -i %1\Data\BW_SMS_V%2%3.sql
echo 数据库创建成功!
pause