批处理创建数据库

来源:互联网 发布:房产销售提成软件 编辑:程序博客网 时间:2024/06/06 19:11

@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





原创粉丝点击