关闭

批处理创建数据库

标签: sql server数据库databasesmsmicrosoftsql
1905人阅读 评论(0) 收藏 举报
分类:

@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





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:625121次
    • 积分:7000
    • 等级:
    • 排名:第3365名
    • 原创:100篇
    • 转载:136篇
    • 译文:0篇
    • 评论:66条
    最新评论