Windows 下对 SQL SERVER EXPRESS 数据库自动备份

1、直接用 sqlcmd 命令:

sqlcmd -S. -U sa -P abc123  -Q "BACKUP DATABASE  KingboxQXW  TO DISK='C:\KingBox\DATASEND\KingboxQXW.bak';"

还原

sqlcmd -S. -U sa -P abc123  -Q "RESTORE DATABASE  KingboxQXW  FROM DISK='C:\KingBox\DATASEND\KingboxQXW.bak';"

以上的还原命令,如果备份和还原在同一台SqlServer 服务器上,则没有问题;但是,如果是在另一台SqlServer 服务器上还原该备份文件,则会报错。因为还原的时候会验证备份时数据文件的路径。这时,我们需要使用WITH MOVE 重新映射数据文件和日志文件:

sqlcmd -S .\sqlexpress -E -Q "RESTORE DATABASE 数据库名 FROM DISK='D:\数据库名.bak' WITH MOVE '数据库名' TO 'D:\MyData\数据库名_Data.mdf', Move '数据库名_log' TO 'D:\MyData\数据库名_log.ldf'";

如果我们不知道数据文件和日志文件的名称,可以使用下面的命令查询:

sqlcmd -S .\sqlexpress -E -Q “RESTORE FILELISTONLY FROM DISK=’d:\数据库名.bak'”;

**或者 **

把如下SQL先语句放入数据库查询器里运行一遍,以生成存储过程。
存储过程名称为:sp_BackupDatabases

-- =============================================
-- Author:<xxx>
-- Create date: <2020-04-07>
-- Description:	<完整备份 KingboxQXW 数据库>
-- =============================================
CREATE PROCEDURE sp_BackupDatabases 	
AS
BEGIN
	--设置备份数据库的存放目录
	DECLARE @diskPath NVARCHAR(300)
	SET @diskPath='D:\KingboxQXW_Data\Backup\mssql\KingboxQXW_bak_'
	+CONVERT(VARCHAR, GETDATE(),112)+'_'
	+REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')+'.BAK'

	BACKUP DATABASE KingboxQXW TO DISK = @diskPath WITH FORMAT;
END

使用 sqlcmd 命令,通过sa和密码登入数据库,并运行 KingboxQXW.dbo 下的刚刚那个存储过程。并把这条语句保存到.bat 文件中,以供定时任务运行。

sqlcmd -S. -U sa -P a123456  -Q "EXEC KingboxQXW.dbo.sp_BackupDatabases"

——————————————————————————————————

2、把保存的数据库文件夹以日期分类的形式另存到网络上的备份机器上。
把如下语句保存到.bat文件中,以供定时任务运行。

robocopy D:\KingboxQXW_Data\Backup Z:\DataBack\%date%\ /e

如果想在运行的时候不弹出黑色cmd框,可以在上面 .bat 文件同目录中添加如下内容的 .vbe 文件

set ws=wscript.createobject("wscript.shell") 
ws.run "auto_copy.bat /start",0

保存成 auto_copy.vbe

3、SQL SERVER 中用SQL语句将附加数据库

exec sp_attach_db 'KingboxQXW','C:\KingBox\KBData\KingboxQXW_Data.mdf','C:\KingBox\KBData\KingboxQXW_Log.ldf'

4、在cmd 窗口下修改sa密码成abc123

C:\Documents and Settings\Administrator>osql -E
1> sp_password null,'abc123','sa'
2> go
Password changed.
1> exit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值