中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 19:45
47,811 主题排行 / 349,896 发帖 / 今日 1 篇 / 48,254 会员排行
DOS批处理 & 脚本技术(批处理室) » 【原创】批处理完成SQLSERVER数据库的附加、分离。
可打印版本  1,169 / 7
第1楼 augvii 发表于 2008-09-24 14:54
初级用户 发帖 17 积分 38
【原创】批处理完成SQLSERVER数据库的附加、分离。
功能:把同目录下的.MDF、.LDF数据库备份文件,复制到SQLSERVER数据库文件目录中。进行附加和分离操作。
还有很多问题还没解决,如:服务器未开返回的错误如何判断,如何在数据库中停止和启动MSSQLServer..等。
谢谢HAT版主、vampire的帮助
===============================================
代码:
---------------------------------------------------------------------------------------------------------
@echo off
cls
color 0a
rem SQLSERVER2000 数据库附加、分离的小程序
rem 下面是变量的一些定义,dbloginname是数据库登入名,dbloginpwd是数据库登入密码,dbname是数据库名,dbmdf和

dbldf是数据库文件
set dbloginname=sa
set dbloginpwd=wl
set dbname=workflow
set dbmdf=workflow_Data.MDF
set dbldf=workflow_Log.LDF

>"%temp%\my.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\my.vbs" echo WScript.Echo

WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\SQLDataRoot")
for /f "delims=" %%a in ('cscript /nologo "%temp%\my.vbs"') do set SQL=%%a\Data

echo SQLSERVER数据库文件目录路径:%SQL%
echo.
echo 正在复制mdf,请等待...
copy %dbmdf% "%SQL%"
echo 正在复制ldf,请等待...
copy %dbldf% "%SQL%"
echo 复制的文件名是:%dbmdf%和%dbldf%
:start
cls
echo.
echo============================================================================
echo.
echo 请输入选择项后,按回车确认
echo 1.附加数据库
echo 2.分离数据库
echo 3.退出
echo.
echo author:AUGVII
echo============================================================================
set /p var=请选择:
if %var% == 1 goto attachdb
if %var% == 2 goto detachdb
if %var% == 3 goto exit

:detachdb
osql -U"%dbloginname%" -P"%dbloginpwd%" -S"127.0.0.1" -Q"sp_detach_db '%dbname%'"
echo 处理中...
echo db detach successful!
pause
goto start

:attachdb
osql -U"%dbloginname%" -P"%dbloginpwd%" -S"127.0.0.1" -Q"sp_attach_db

'%dbname%','%SQL%\%dbmdf%','%SQL%\%dbldf%'"
echo 处理中...
echo db attach successful!
pause
goto start

:exit
echo 欢迎使用...
pause
==================================================
第2楼 Batcher 发表于 2008-09-24 15:14
初级用户 发帖 16 积分 33
启动

停止
第3楼 augvii 发表于 2008-09-24 15:29
初级用户 发帖 17 积分 38
如何对错误进行判断,再进行处理呢?
如:服务器未打开,进行附加就会报错SQL Server 不存在或访问被拒绝
errorlevel 是多少?哪里有这方面的资料?
好像可以echo出来。

[ Last edited by augvii on 2008-9-24 at 03:35 PM ]
第4楼 Batcher 发表于 2008-09-24 15:30
初级用户 发帖 16 积分 33
第5楼 augvii 发表于 2008-09-24 15:38
初级用户 发帖 17 积分 38
echo %errorlevel%
启动为:0
未启动为:1
这样判断可以吗?
-------------------------------------------
第6楼 augvii 发表于 2008-09-24 15:56
初级用户 发帖 17 积分 38
sc 还像在win2000下不支持啊,有没有更通用点的啊。我的系统是win2000的
第7楼 Batcher 发表于 2008-09-24 16:00
初级用户 发帖 16 积分 33
第8楼 augvii 发表于 2008-09-24 16:23
初级用户 发帖 17 积分 38
如果该数据库已经存在,再附加。数据库已经分离,再分离。
这两种错误该如何获取呢?
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023