1、假设备份文件xxxx.bak大小约300G,还原后所占用的空间为900G
2、磁盘空间只有1T,若将备份文件拷贝过来,空间剩余700G,无法成功还原,因此通过远程方式还原。
例子如下:
SQLSERVER服务实例名称: 192.168.12.163
需要备份的数据库名称: a
备份机器名称(Client端): 192.168.12.30
备份机用户: administrator 密码: 123
备份机域名: B28-1230
备份机提供备份需求的文件夹:D:\backup
备份数据库
第一步: 在备份机建立共享文件夹
在程序代码中调用(或者CMD窗口)
net share sqlbakup=D:\backup 或者用NetShareAdd这个API
简要说明:
net share:是WINDOWS内部的网络命令。
作用:建立本地的共享资源,显示当前计算机的共享资源信息。
第二步: 建立共享信用关系
exec master..xp_cmdshell ‘net use \\192.168.12.30\backup 123 /user:B28-1230\Administrator‘
若报错提示这个:“SQL Server 阻止了对组件‘xp_cmdshell‘ 的过程‘sys.xp_cmdshell‘ 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。
系统管理员可以通过使用sp_configure 启用‘xp_cmdshell‘。有关启用‘xp_cmdshell‘ 的详细信息,请参阅SQL Server 联机丛书中的"外围应用配置器"。”
启用’xp_cmdshell’:
USE master
EXEC sp_configure ‘show advanced options‘, 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure ‘xp_cmdshell‘, 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure ‘show advanced options‘, 0
RECONFIGURE WITH OVERRIDE
关闭’xp_cmdshell’:
USE master
EXEC sp_configure ‘show advanced options‘, 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure ‘xp_cmdshell‘, 0
RECONFIGURE WITH OVERRIDE
EXEC sp_configure ‘show advanced options‘, 0
RECONFIGURE WITH OVERRIDE
开启’xp_cmdshell’后再执行建立信用关系:
exec master..xp_cmdshell ‘net use \\192.168.12.30\backup 123 /user:B28-1230\Administrator‘
还原备份库a:
restore database peking from disk = ‘\\192.168.12.30\backup\a.bak‘
with move ‘a_Data‘ to ‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\a.mdf‘,
move ‘a_Log‘ to ‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\a_log.ldf‘
使用 SQL Server restore filelistonly 命令来查看逻辑文件名
restore filelistonly from disk=‘\\192.168.12.30\backup\a.bak‘
restore with move 用法:
restore database Northwind from disk = ‘c:\Northwind.bak‘
with move ‘Northwind‘ to ‘d:\microsoft sql server\mssql.1\mssql\data\Northwind.mdf‘
,move ‘Northwind_log‘ to ‘d:\microsoft sql server\mssql.1\mssql\data\Northwind.ldf‘
简要说明:
1:xp_cmdshell :是SQLSERVER的扩展存储过程。
作用:以操作系统命令行解释器的方式执行给定的命令字符串, 并以文本行方式返回任何输出。
语法:参见SQLSERVER联机帮助
2:net use : 是WINDOWS内部的网络命令。
作用:将计算机与共享资源连接或断开,或者显示关于计算机连接的信息。
该命令还控制持久网络连接。
3:备份数据库
backup database a to disk=‘\\192.168.12.30\sqlbak\a.bak‘
backup database a to disk=‘\\192.168.12.30\sqlbak\a1.bak‘ WITH DIFFERENTIAL (差异备份)
4: 删除共享文件夹
在程序代码中调用(或者CMD窗口) net share sqlbakup/delete
或者用NetShareDel这个API
恢复数据库
restore database a from disk=‘\\192.168.12.30\backup\a.bak‘
以下是差异还原
restore database scs from disk=‘\\192.168.12.30\backup\a.bak‘ WITH NORECOVERY
restore database scs from disk=‘\\192.168.12.30\backup\a1.bak‘ WITH NORECOVERY
restore database scs from disk=‘\\192.168.12.30\backup\a2.bak‘