欢迎光临宁德市白事服务网
详情描述

1. 本地备份 + 文件传输(基础方案)

全量备份

-- 创建完整备份
BACKUP DATABASE [YourDatabase] 
TO DISK = 'D:\Backups\FullBackup.bak'
WITH INIT, COMPRESSION;

-- 每日完整备份脚本
DECLARE @backupPath NVARCHAR(500)
DECLARE @backupName NVARCHAR(500)
SET @backupPath = 'D:\Backups\'
SET @backupName = @backupPath + 'FullBackup_' + 
                  REPLACE(CONVERT(VARCHAR, GETDATE(), 112), '-', '') + 
                  '_' + REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 108), ':', ''), ' ', '') + '.bak'

BACKUP DATABASE [YourDatabase] 
TO DISK = @backupName
WITH COMPRESSION, STATS = 10;

差异备份(增量)

-- 创建差异备份
BACKUP DATABASE [YourDatabase] 
TO DISK = 'D:\Backups\DiffBackup.bak'
WITH DIFFERENTIAL, COMPRESSION;

文件传输到异地

# PowerShell 脚本传输备份文件
$source = "D:\Backups\"
$destination = "\\异地服务器\BackupShare\"

# 使用 Robocopy(支持断点续传)
robocopy $source $destination /MIR /Z /W:5 /R:3 /NP

# 或使用 SMB 共享复制
Copy-Item -Path $source\* -Destination $destination -Force

2. 备份到 URL(Azure Blob Storage)

配置备份到 Azure

-- 1. 创建凭据
CREATE CREDENTIAL [https://youraccount.blob.core.windows.net/backups] 
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '你的SAS令牌';

-- 2. 完整备份到 Azure
BACKUP DATABASE [YourDatabase] 
TO URL = 'https://youraccount.blob.core.windows.net/backups/FullBackup.bak'
WITH COMPRESSION, FORMAT, STATS = 10;

-- 3. 差异备份到 Azure
BACKUP DATABASE [YourDatabase] 
TO URL = 'https://youraccount.blob.core.windows.net/backups/DiffBackup.bak'
WITH DIFFERENTIAL, COMPRESSION;

自动备份策略

-- 创建备份作业(完整+差异组合)
DECLARE @backupURL NVARCHAR(500)
DECLARE @backupFileName NVARCHAR(100)

-- 完整备份(每周日)
IF DATEPART(WEEKDAY, GETDATE()) = 1  -- 周日
BEGIN
    SET @backupFileName = 'Full_' + REPLACE(CONVERT(VARCHAR, GETDATE(), 112), '-', '') + '.bak'
    SET @backupURL = 'https://youraccount.blob.core.windows.net/backups/' + @backupFileName

    BACKUP DATABASE [YourDatabase] 
    TO URL = @backupURL
    WITH COMPRESSION, FORMAT;
END
-- 差异备份(周一到周六)
ELSE
BEGIN
    SET @backupFileName = 'Diff_' + REPLACE(CONVERT(VARCHAR, GETDATE(), 112), '-', '') + '.bak'
    SET @backupURL = 'https://youraccount.blob.core.windows.net/backups/' + @backupFileName

    BACKUP DATABASE [YourDatabase] 
    TO URL = @backupURL
    WITH DIFFERENTIAL, COMPRESSION;
END

3. 日志传送(Log Shipping)

配置日志传送

-- 主服务器配置
USE [master]
GO

-- 启用完整恢复模式
ALTER DATABASE [YourDatabase] 
SET RECOVERY FULL;

-- 完整备份
BACKUP DATABASE [YourDatabase] 
TO DISK = 'D:\Backups\FullForLogShipping.bak';

-- 配置日志传送
EXEC sp_add_log_shipping_primary_database 
    @database = N'YourDatabase',
    @backup_directory = N'D:\Backups\',
    @backup_share = N'\\主服务器\BackupShare\',
    @backup_job_name = N'LSBackup_YourDatabase';

-- 添加辅助服务器
EXEC sp_add_log_shipping_secondary_primary
    @primary_server = N'主服务器',
    @primary_database = N'YourDatabase',
    @backup_source_directory = N'\\主服务器\BackupShare\',
    @backup_destination_directory = N'\\异地服务器\BackupShare\',
    @copy_job_name = N'LSCopy_YourDatabase',
    @restore_job_name = N'LSRestore_YourDatabase',
    @secondary_server = N'异地服务器',
    @secondary_database = N'YourDatabase';

4. Always On 可用性组

配置 Always On

-- 主副本创建端点
CREATE ENDPOINT [Hadr_endpoint]
STATE = STARTED
AS TCP (LISTENER_PORT = 5022)
FOR DATABASE_MIRRORING (ROLE = ALL);

-- 创建可用性组
CREATE AVAILABILITY GROUP [AG_YourDatabase]
WITH (AUTOMATED_BACKUP_PREFERENCES = SECONDARY)
FOR DATABASE [YourDatabase]
REPLICA ON 
    N'主服务器' WITH (ENDPOINT_URL = N'TCP://主服务器:5022',
    FAILOVER_MODE = AUTOMATIC,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    BACKUP_PRIORITY = 50),
    N'异地服务器' WITH (ENDPOINT_URL = N'TCP://异地服务器:5022',
    FAILOVER_MODE = AUTOMATIC,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    BACKUP_PRIORITY = 50);

5. 维护计划 + PowerShell

SQL Server 维护计划

创建维护计划:

  • 完整备份作业(每周)
  • 差异备份作业(每天)
  • 事务日志备份作业(每小时)

使用 PowerShell 传输:


# 备份传输脚本
param(
 [string]$DatabaseName,
 [string]$BackupType
)
备份文件命名

$timestamp = Get-Date -Format "yyyyMMdd_HHmmss" $localBackupPath = "D:\Backups\" $remoteBackupPath = "\异地服务器\BackupShare\"

执行备份

if ($BackupType -eq "Full") { $fileName = "$DatabaseNameFull$timestamp.bak" $backupCommand = "BACKUP DATABASE [$DatabaseName] TO DISK='$localBackupPath$fileName' WITH COMPRESSION" } elseif ($BackupType -eq "Diff") { $fileName = "$DatabaseNameDiff$timestamp.bak" $backupCommand = "BACKUP DATABASE [$DatabaseName] TO DISK='$localBackupPath$fileName' WITH DIFFERENTIAL, COMPRESSION" }

执行 SQL 备份

Invoke-Sqlcmd -ServerInstance "localhost" -Query $backupCommand

传输到异地

Copy-Item "$localBackupPath$fileName" -Destination $remoteBackupPath -Force

清理旧备份(保留30天)

Get-ChildItem -Path $localBackupPath -Filter "*.bak" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | Remove-Item -Force


## 6. **第三方工具方案**

### Redgate SQL Backup
```sql
-- Redgate SQL Backup 示例
EXECUTE master..sqlbackup 
'-SQL "BACKUP DATABASE [YourDatabase] 
TO DISK = ''\\异地服务器\Backups\YourDatabase.sqb'' 
WITH DIFFERENTIAL, COMPRESSION = 4, THREADCOUNT = 4"'

备份策略建议

推荐方案:完整+差异备份

-- 完整备份策略(每周日)
BACKUP DATABASE [YourDatabase] 
TO DISK = 'D:\Backups\Full_Weekly.bak'
WITH COMPRESSION, FORMAT;

-- 差异备份策略(每天)
BACKUP DATABASE [YourDatabase] 
TO DISK = 'D:\Backups\Diff_Daily.bak'
WITH DIFFERENTIAL, COMPRESSION;

-- 事务日志备份(每15分钟,如果需要时点恢复)
BACKUP LOG [YourDatabase] 
TO DISK = 'D:\LogBackups\Log.trn'
WITH COMPRESSION;

自动化调度建议

SQL Server 代理作业

  • 完整备份:每周日凌晨2点
  • 差异备份:每天凌晨1点(除周日)
  • 日志备份:每15分钟

文件清理策略

-- 清理旧备份文件
EXEC sp_delete_backuphistory @oldest_date = '2024-01-01';

-- 或使用维护计划清理任务

最佳实践

验证备份完整性

-- 定期验证备份
RESTORE VERIFYONLY 
FROM DISK = 'D:\Backups\FullBackup.bak';

-- 实际恢复测试(定期进行) RESTORE DATABASE [TestDB] FROM DISK = 'D:\Backups\FullBackup.bak' WITH NORECOVERY, REPLACE;


2. **监控备份状态**:
```sql
-- 查看备份历史
SELECT 
    database_name,
    backup_start_date,
    backup_finish_date,
    backup_size/1024/1024 as BackupSizeMB,
    type
FROM msdb.dbo.backupset
ORDER BY backup_start_date DESC;
设置备份加密(SQL Server 2014+):

-- 创建主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '强密码';

-- 创建证书 CREATE CERTIFICATE BackupCertificate WITH SUBJECT = 'Backup Encryption Certificate';

-- 加密备份 BACKUP DATABASE [YourDatabase] TO DISK = 'D:\Backups\EncryptedBackup.bak' WITH COMPRESSION, ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = BackupCertificate);



选择方案时考虑因素:
- **RTO/RPO要求**:恢复时间目标/恢复点目标
- **网络带宽**:影响传输速度和成本
- **存储成本**:本地存储 vs 云存储
- **恢复复杂性**:不同的恢复流程
- **合规要求**:数据保留和加密要求
相关帖子
2026年,针对“住改商”带来的噪音、停车等问题有何管理新规?
2026年,针对“住改商”带来的噪音、停车等问题有何管理新规?
宁德市殡葬服务价格-白事服务办理,丧礼乐队
宁德市殡葬服务价格-白事服务办理,丧礼乐队
宁德市精准获客渠道&网站制作设计,一站式服务
宁德市精准获客渠道&网站制作设计,一站式服务
家用光伏发电系统平时需要怎样进行维护和清洁才能保证效率?
家用光伏发电系统平时需要怎样进行维护和清洁才能保证效率?
宁德市一条龙殡葬服务办理-丧葬服务,殡葬录像
宁德市一条龙殡葬服务办理-丧葬服务,殡葬录像
如何看待“进工厂不如送外卖”这类观点?其背后反映了怎样的就业逻辑?
如何看待“进工厂不如送外卖”这类观点?其背后反映了怎样的就业逻辑?
如果对某些水果不耐受,是因为其中的果糖还是其他成分?
如果对某些水果不耐受,是因为其中的果糖还是其他成分?
押车贷款利息低吗?车主选择押车要注意哪些事项
押车贷款利息低吗?车主选择押车要注意哪些事项
18岁以下孩子用不用单独参保长期护理险,政策怎么说?
18岁以下孩子用不用单独参保长期护理险,政策怎么说?
2026年政策落地后,对于即将退休的人员,养老金计发办法会有调整吗?
2026年政策落地后,对于即将退休的人员,养老金计发办法会有调整吗?
按揭车押车贷款被拒的常见原因,看看你中了几条
按揭车押车贷款被拒的常见原因,看看你中了几条
顶楼夏天比楼下高好几度冬天又更冷,热量到底是怎么传过来的?
顶楼夏天比楼下高好几度冬天又更冷,热量到底是怎么传过来的?
2026年个人所得税APP填报专项附加扣除时,常见的信息填报错误有哪些需要避免?
2026年个人所得税APP填报专项附加扣除时,常见的信息填报错误有哪些需要避免?
长期食用含添加剂的预制菜,对身体健康可能存在哪些潜在影响?
长期食用含添加剂的预制菜,对身体健康可能存在哪些潜在影响?
身份证在有效期内但闸机读不出,是不是芯片被手机消磁了?
身份证在有效期内但闸机读不出,是不是芯片被手机消磁了?
公司经营贷额度与实缴资本,注册资本对额度影响
公司经营贷额度与实缴资本,注册资本对额度影响
菠菜和豆腐搭配真的会导致结石风险大幅增加吗?
菠菜和豆腐搭配真的会导致结石风险大幅增加吗?
在人际交往或商业合作前,如何合法合规地查询对方的信用状况?
在人际交往或商业合作前,如何合法合规地查询对方的信用状况?
补缴了城乡居民养老保险后,个人账户的累计金额会如何进行计算?
补缴了城乡居民养老保险后,个人账户的累计金额会如何进行计算?
新生儿医保和商业保险有什么区别?两者应该如何搭配互补?
新生儿医保和商业保险有什么区别?两者应该如何搭配互补?