- 浏览: 557947 次
- 性别:
- 来自: 安徽
文章分类
最新评论
-
baynjh:
jp.ne.so_net.ga2.no_ji.jcom.JCo ...
java应用jcom将word转pdf -
zgw06629:
你好,请问你都做了哪些修改呢?是在客户端还是服务端?
http上传文件深度解析-高性能http传输 -
eidolon:
翻译有误。 l ?:意思是操作符左边的符号( ...
BNF 和EBNF的含义与用法(感谢译者:Sunnybill) -
huoyj:
请教一个问题,是不是HTTP请求里面没有包含上传文件在客户端的 ...
http上传文件深度解析-高性能http传输 -
a49688448:
“认清” 我还以为google怎么你了
最近终于认清了google
@Echo off
::本程序在XP环境下对SQL2000
数据库测试通过
::SQL2005的见 : http://hi.baidu.com/yjjjjs/blog/item/7236891afe0be4f6ae513360.html
Title SQL2000数据库 附加、分离、查询、备份、还原、删除 小程序
:dosmenu
::▇AAA代表在SQL中看到的[要分离、附加的数据库名]
::▇BBB代表[要附加的数据库的位置] CCC代表[要附加的数据库文件名] DDD代表[要附加的数据库日志文件名]
::▇EEE代表[指定的数据库实例用户名] FFF代表[指定的数据库实例用户的密码] (这里指定的实例是"127.0.0.1"或"Local"或"."即指本机SQL自带的实例)
::▇GGG代表[要备份的数据库名] HHH代表[数据库备份的路径] III代表[备份后的名字]
::▇JJJ代表[用于还原的数据库备份文件所在的路径+文件名] KKK代表[还原后的数据库文件所存放的路径] LLL代表[还原数据库后在SQL中所显示的名称]
::▇MMM代表[要删除的数据库名]
::#**********************************************************************#
::★1、【分离】请编辑AAA
set AAA=ForestFireControl_StandingBook
::----------------------------------------
::★2、【附加】请编辑AAA、BBB、CCC、DDD
set BBB=C:\
set CCC=ForestFireControl_StandingBook.mdf
set DDD=ForestFireControl_StandingBook_log.ldf
::----------------------------------------
::★设定数据库的登入【账号和密码】请编辑EEE、FFF
set EEE=sa
set FFF=sa
::----------------------------------------
::★4、【备份】请编辑GGG、HHH、III
set GGG=ForestFireControl_StandingBook
set HHH=C:\
set III=备份的数据库2.bak
::----------------------------------------
::★5、【还原】请编辑JJJ、KKK、LLL
set JJJ=C:\备份的数据库2.bak
set KKK=C:\
set LLL=ForestFireControl_StandingBook
::----------------------------------------
::★6、【删除】请编辑MMM
set MMM=ForestFireControl_StandingBook
::#**********************************************************************#
REM 选择菜单
Echo ★★★注意:本文件最好不要放在路径名中含有空格的位置上运行(如桌面等位置)
Echo #**********************************************************************#
Echo 选项如下(可用记事本打开对相应参数重新编辑)
Echo #**********************************************************************#
Echo.
Echo [1]分离%AAA%数据库
Echo.
Echo [2]附加%BBB%下的%CCC%数据库文件
Echo.
Echo [3]查看数据库中已存在的非系统表
Echo.
Echo [4]备份数据库%GGG%到%HHH%%III%
Echo.
Echo [5]还原"%JJJ%"数据库备份文件为%LLL%.mdf且存放到%KKK%下
Echo.
Echo [6]彻底删除数据库%MMM%
Echo.
Echo 退出请按其他键
Echo.
Echo #**********************************************************************#
Echo 选择后请按回车进行确认
Echo.
set /P CHS=请选择: [1],[2],[3],[4],[6]?
if /I "%CHS%"=="1" goto 1111
if /I "%CHS%"=="2" goto 2222
if /I "%CHS%"=="3" goto 3333
if /I "%CHS%"=="4" goto 4444
if /I "%CHS%"=="5" goto 5555
if /I "%CHS%"=="6" goto 6666
goto zzzz
::============================================================================
:1111
cls
set XXX=C:\121.sql
Echo 正在清理与此数据库的连接,请等待……
::将下面的这三句语句写到.sql文件里面,再通过下面的第四条语句调用执行这个.sql文件的内容,第五条语句是删除这个.sql文件,第六条语句开始分离
>"%XXX%" Echo use
master
>>"%XXX%" Echo declare hcforeach cursor global for select 'kill
'+rtrim(spid) from sysprocesses where dbid=db_id(N'%AAA%')
>>"%XXX%" Echo exec sp_msforeach_worker
'?'
Osql -U"%EEE%" -P"%FFF%" -i %XXX%
del %XXX%
OSQL -E -Q "SP_DETACH_DB %AAA%"
::其他例子: osql -U"sa" -P"sa" -S"127.0.0.1" -Q "sp_detach_db '库名'"
Echo.
Echo.
Echo 分离SQL中名为%AAA%的数据库成功
Echo.
set CHS=0
pause
cls
goto dosmenu
::============================================================================
:2222
cls
OSQL -U"%EEE%" -P"%FFF%" -S"127.0.0.1" -Q "sp_attach_db '%AAA%','%BBB%\%CCC%','%BBB%\%DDD%'"
Echo.
Echo.
Echo 附加%BBB%下的数据库文件%CCC%到SQL中成功
Echo.
::★★★ OSQL -U"sa" -P"sa" -S"127.0.0.1" -Q "sp_attach_db '库名','路径\数据文件名','路径\日志文件名'"
set CHS=0
pause
cls
goto dosmenu
::============================================================================
:3333
cls
OSQL -E -Q "SELECT NAME,FILENAME FROM MASTER..SYSDATABASES WHERE
name<>'master' and name<>'tempdb' and name<>'model'
and name<>'msdb' "
::★★★上面语句中FROM后面的MASTER..SYSDATABASES表示系统自带的MASTER数据库中的SYSDATABASES表
set CHS=0
pause
cls
goto dosmenu
::============================================================================
:4444
cls
del %HHH%%III%
cls
::加上述的del %HHH%%III%语句的作用是为了防止在路径%III%下已经存在同名的数据库备份文件,而导致文件叠加到一块,这也算是SQL2000的一个Bug
Echo 正在备份数据库,在出现成功的提示之前请您耐心等待……
Echo.
Echo.
OSQL -U"%EEE%" -P"%FFF%" -S"127.0.0.1" -d"%GGG%" -Q "Backup DataBase %GGG% to disk = '%HHH%%III%'"
::★★★OSQL -U"sa" -P"sa" -S"127.0.0.1" -d"CircleImage" -Q "Backup DataBase CircleImage to disk = 'c:\111.db'"
Echo.
Echo.
Echo 恭喜!恭喜!已成功将SQL中的数据库"%GGG%"备份成%HHH%下文件名为"%III%"的文件
Echo.
set CHS=0
pause
cls
goto dosmenu
::============================================================================
:5555
cls
Echo 数据库文件正在还原,在出现还原成功的提示前请您耐心等待……
set XXX=C:\123.sql
>"%XXX%" Echo DECLARE @bakFile nvarchar(1024);
>>"%XXX%" Echo SET @bakFile = N'%JJJ%';
>>"%XXX%" Echo.
>>"%XXX%" Echo DECLARE @restorePath nvarchar(1024);
>>"%XXX%" Echo SET @restorePath = N'%KKK%';
>>"%XXX%" Echo.
>>"%XXX%" Echo DECLARE @dbname nvarchar(128);
>>"%XXX%" Echo SET @dbname = N'%LLL%';
>>"%XXX%" Echo.
>>"%XXX%" Echo DECLARE @filename nvarchar(128);
>>"%XXX%" Echo SET @filename = @dbname;
>>"%XXX%" Echo.
>>"%XXX%" Echo CREATE TABLE #LogicalFileBak(LogicalName nvarchar(128),
>>"%XXX%" Echo PhysicalName nvarchar(260),
>>"%XXX%" Echo Type char(1),
>>"%XXX%" Echo FileGroupName nvarchar(128),
>>"%XXX%" Echo [Size] numeric(20,0),
>>"%XXX%" Echo [MaxSize] numeric(20,0) );
>>"%XXX%" Echo.
>>"%XXX%" Echo INSERT #LogicalFileBak EXEC('RESTORE FILELISTONLY FROM DISK = ''' + @bakFile + '''');
>>"%XXX%" Echo.
>>"%XXX%" Echo DECLARE cur CURSOR FOR SELECT LogicalName,Type,FileGroupName FROM #LogicalFileBak;
>>"%XXX%" Echo DECLARE @LogicalName nvarchar(128),@Type char(1),@FileGroupName nvarchar(128);
>>"%XXX%" Echo.
>>"%XXX%" Echo DECLARE @cmd nvarchar(4000);
>>"%XXX%" Echo SET @cmd = 'RESTORE DATABASE [' + @dbname + '] FROM DISK = ''' + @bakFile + '''';
>>"%XXX%" Echo SET @cmd = @cmd + ' WITH REPLACE'
>>"%XXX%" Echo.
>>"%XXX%" Echo OPEN cur;
>>"%XXX%" Echo FETCH NEXT FROM cur INTO @LogicalName,@Type,@FileGroupName;
>>"%XXX%" Echo WHILE @@FETCH_STATUS = 0
>>"%XXX%" Echo BEGIN
>>"%XXX%" Echo SET @cmd = @cmd + ',MOVE ''' + @LogicalName + ''' TO ''' + @restorePath
>>"%XXX%" Echo + @filename + CASE WHEN @Type = 'D' AND @FileGroupName = 'PRIMARY'
>>"%XXX%" Echo THEN '.mdf'
>>"%XXX%" Echo
WHEN @Type = 'D' AND @FileGroupName ^<^> 'PRIMARY'
>>"%XXX%" Echo THEN '.ndf'
>>"%XXX%" Echo ELSE '_log.ldf'
>>"%XXX%" Echo END + ''''
>>"%XXX%" Echo FETCH NEXT FROM cur INTO @LogicalName,@Type,@FileGroupName;
>>"%XXX%" Echo END
>>"%XXX%" Echo CLOSE cur;
>>"%XXX%" Echo DEALLOCATE cur;
>>"%XXX%" Echo.
>>"%XXX%" Echo EXEC(@cmd);
>>"%XXX%" Echo.
>>"%XXX%" Echo DROP TABLE #LogicalFileBak;
Osql -U"%EEE%" -P"%FFF%" -i %XXX%
del %XXX%
Echo.
Echo.
Echo 恭喜!已成功将"%JJJ%"还原成%LLL%,且还原后的文件存放在%KKK%下
Echo.
pause
set CHS=0
cls
goto dosmenu
::============================================================================
:6666
Echo 真的要删除吗?删除后将不可恢复
Echo.
set /P QR=确定删除请按y,放弃删除请按其他键,请选择?
cls
if /I "%QR%"=="y" (
OSQL -U"%EEE%" -P"%FFF%" -S"127.0.0.1" -Q "Drop DataBase %MMM%"
::其他例子:OSQL -U"sa" -P"sa" -S"127.0.0.1" -Q "Drop DataBase 库名"
Echo.
Echo 删除SQL中名为%AAA%的数据库及源文件成功
Echo.
pause
)
set QR=0
set CHS=0
cls
goto dosmenu
::============================================================================
:zzzz
REM 退出
exit
::**************************************************************************************************
::**************************************************************************************************
::**************************************************************************************************
::分离数据库的命令:Sp_detach_db 数据库名
:: 连接数据库的命令:Sp_attach_db或者sp_attach_single_file_db
:: sp_attach_db [@dbname =] 'dbname', [@filename1 =] 'filename_n' [,...16]
:: sp_attach_single_file_db [@dbname =] 'dbname', [@physname =] 'physical_name'
::
::使用此方法可以正确附加和分离SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是日志文件。
::OSQL -? 显示帮助(具体如下所示)
::用法: osql [-U 登录 ID] [-P 密码]
::[-S 服务器] [-H 主机名] [-E 可信连接]
::[-d 使用数据库名称] [-l 登录超时值] [-t 查询超时值]
::[-h 标题] [-s 列分隔符] [-w 列宽]
::[-a 数据包大小] [-e 回显输入] [-I 允许带引号的标识符]
::[-L 列出服务器] [-c 命令结束] [-D ODBC DSN 名称]
::[-q "命令行查询"] [-Q "命令行查询" 并退出]
::[-n 删除编号方式] [-m 错误级别]
::[-r 发送到 stderr 的消息] [-V 严重级别]
::[-i 输入文件] [-o 输出文件]
::[-p 打印统计信息] [-b 出错时中止批处理]
::★★★可通过下面的语句查询已有备份库的逻辑文件名,以用于 还原数据库语句操作 中的操作
::OSQL -U"sa" -P"sa" -S"127.0.0.1" -Q "restore filelistonly from disk ='C:\备份的数据库1'"
::
::OSQL -U"sa" -P"sa" -S"127.0.0.1" -Q "restore filelistonly from disk ='C:\备份的数据库1'" >>C:\1234.txt
::=============================================================================================
::★★★★★ 还原数据库语句操作
::其中的 数据库的逻辑文件名 和 数据库日志的逻辑文件名 是通过上述的语句来查询的
::格式说明:
::osql -E -d CircleImage -Q "restore database 备份后SQL中看到的数据库名 from
disk='用于还原的备份文件的路径+文件名' with move '数据库的逻辑文件名' TO '备份后的路径+实际文件名', MOVE
'数据库日志的逻辑文件名' TO '备份后的路径+实际文件名'"
::实例:
::OSQL -U"sa" -P"sa" -S"127.0.0.1" -Q "restore database CircleImage from
disk='C:\CircleImage备份' with move 'CircleImage_Data' to
'c:\CircleImage.mdf',move ::'CircleImage_Log' to
'c:\CircleImage_log.ldf'"
::上述这么长的语句中切不可出现回车等换行符,且参数的大小写是不可随意更改的
::=============================================================================================
::★★ 更改数据库备份文件逻辑名的方法:
::alter database 数据库名 modify file (name=逻辑名,newname=新逻辑名)
::事实上,上面的语句是更改了sysfiles和sysfiles1系统表中的name字段。
发表评论
-
如何加快查询速度
2010-08-23 08:19 2954如何加快查询速度? 1 ... -
删除业务系统中数据的方法。
2010-06-01 10:58 1116先建一张简单的只有1个字段的表,把你要保留数据的表登记起来。然 ... -
XML与数据库比较
2009-01-04 14:28 1476相对XML ,关系数据库的优势在于:技术成熟、应用广泛;数 ... -
sql连接说明
2008-12-22 11:55 923declare @a table(a int, ... -
按照年龄段进行分组
2008-12-20 17:35 1837select count(*) from rk0207 whe ... -
sqlserver 中用bcp导入数据
2008-10-15 12:27 4439sqlserver 中用bcp导入数据遇到" ... -
bcp 实用工具
2008-10-11 12:03 1623bcp 实用工具在 Microsoft SQL Serv ... -
sql server行转列问题终极解决
2008-09-26 15:57 1650sql server行转列问题终极解决 时 ... -
jconnect的字符集
2008-08-02 10:06 2229如何设置jconnect的字符 ... -
ETL
2008-06-11 11:46 2454ETL 开放分类: 计算 ... -
SQL各种写法的效率问题(转)
2008-05-12 10:28 1598经常可以遇到这种情况 ... -
SQL里的EXISTS与in、not exists与not in 效率比较和使用
2008-05-12 10:25 17493SQL里的EXISTS与in、not exis ... -
SQL查询效率-100w数据查询只要1秒
2008-05-12 10:24 1766SQL查询效率-100w数据查询只要1秒 关于SQL查询效 ... -
关于大数量数据处理的想法
2008-04-16 08:30 1155目前在改造数据采集系统,将在全省使用的一个系统,去年由于没有推 ... -
sql2000的分页存储过程 转帖
2008-03-29 08:18 2105CREATE PROC P_viewPage ...
相关推荐
### 批处理(BAT)实现SQL Server数据库备份与还原 #### 一、概述 在日常的数据库维护工作中,定期对数据库进行备份是非常重要的一个环节,它能够帮助我们防止因硬件故障、软件错误或其他不可预见的情况导致的数据...
使用批处理实现数据库的备份和还原 数据库备份和还原是数据库管理的重要环节,使用批处理可以实现数据库的自动备份和还原。下面将详细介绍使用批处理实现数据库的备份和还原的步骤和知识点。 一、创建.sql 文件 ...
批处理文件(如.bat文件)在Windows环境中是一种高效的方式,可以自动化执行一系列命令,包括连接数据库和执行SQL语句。在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建...
BAT批处理脚本-WinXP相关批处理-12个 BAT批处理脚本-加密解密-22个 BAT批处理脚本-实用的批处理文件-70个 BAT批处理脚本-提示窗口...BAT批处理脚本-系统设置查询修改-硬件相关-139个 BAT批处理脚本-网络相关操作-44个
在Oracle数据库备份中,批处理文件通常包含SQL*Plus命令和操作系统命令。以下是一个简单的Oracle数据库备份批处理文件(DYHX_SYS_bak.bat)示例: ```batch @echo off set ORACLE_HOME=C:\Oracle\product\11.2.0\...
"SQL Server自动备份脚本 bat" 提供了一种自动化解决方案,确保你可以按照预定的时间表执行数据库备份。下面将详细介绍如何利用SQL Server的T-SQL命令以及批处理(bat)文件来创建一个定时备份策略。 首先,`...
bat批处理运行sql文件,
标题中的“批处理备份mysql数据库”是指通过编写批处理脚本(.bat文件)来自动化MySQL数据库的备份过程。批处理是一种基于DOS或Windows操作系统中的命令行接口,可以预先定义一系列命令并一次性执行,大大提高了工作...
附件为两个.bat脚本文件,用于在Windows下备份MySQL数据库,一个是备份数据库文件,另一个是将数据库导出sql脚本。需要自己修改数据库名称,备份到sql脚本的,需要自己手动创建好路径文件夹。这两个批处理文件都是...
### SQL Server数据库的备份与还原知识点详解 #### 一、SQL Server数据库备份的重要性 SQL Server作为一款广泛使用的数据库管理系统,在企业级应用中扮演着至关重要的角色。为了确保数据的安全性和完整性,定期对...
BAT批处理脚本-WinXP相关批处理-12个 BAT批处理脚本-加密解密-22个 BAT批处理脚本-实用的批处理文件-70个 BAT批处理脚本-提示窗口...BAT批处理脚本-系统设置查询修改-硬件相关-139个 BAT批处理脚本-网络相关操作-44个
本文将深入探讨如何利用Windows计划任务与批处理命令实现Oracle数据库的自动备份,这是一个结合了操作系统自动化工具与数据库管理技术的高级应用案例。 ### 一、理解Windows计划任务 Windows计划任务是一个强大的...
"Sql Server数据库跨计算机自动备份批处理脚本"是一个解决方案,它允许管理员实现自动化、远程的数据库备份过程,从而提高效率并确保数据的安全性。下面将详细阐述这个主题中的几个关键知识点。 1. **SQL Server ...
"Oracle数据库备份还原BAT脚本"就是这样一个工具,它允许用户通过简单的脚本配置进行数据库的备份操作,并且可以设定为Windows计划任务以实现定时备份。 首先,我们需要理解BAT脚本的基本结构。在批处理文件中,...
Mysql数据库备份批处理Mysql数据库备份批处理Mysql数据库备份批处理Mysql数据库备份批处理
BAT批处理脚本-WinXP相关批处理-12个 BAT批处理脚本-加密解密-22个 BAT批处理脚本-实用的批处理文件-70个 BAT批处理脚本-提示窗口...BAT批处理脚本-系统设置查询修改-硬件相关-139个 BAT批处理脚本-网络相关操作-44个
BAT批处理脚本-WinXP相关批处理-12个 BAT批处理脚本-加密解密-22个 BAT批处理脚本-实用的批处理文件-70个 BAT批处理脚本-提示窗口...BAT批处理脚本-系统设置查询修改-硬件相关-139个 BAT批处理脚本-网络相关操作-44个
在本文中,作者介绍了一种利用Windows批处理(bat/cmd)脚本来连接SqlServer数据库执行查询的方法。批处理脚本是一种传统的自动化脚本语言,常用于Windows操作系统中批量执行命令。SqlServer是微软公司开发的一个...
BAT批处理脚本-WinXP相关批处理-12个 BAT批处理脚本-加密解密-22个 BAT批处理脚本-实用的批处理文件-70个 BAT批处理脚本-提示窗口...BAT批处理脚本-系统设置查询修改-硬件相关-139个 BAT批处理脚本-网络相关操作-44个