SQLServer教程FG045-SQLServer版本升级实战
目录大纲
内容简介
本文档基于SQLServer官方文档的版本升级相关内容,结合生产环境实际情况,详细讲解SQLServer版本升级的规划、实施、验证等内容。风哥教程参考SQLServer官方文档Upgrade Guide、Migration Guide等相关章节。
Part01-基础概念与理论知识
1.1 版本升级概念
版本升级概念:
- 版本升级是指将SQLServer从一个版本更新到另一个版本的过程
- 升级可以是主版本升级(如2016→2019)或累积更新升级(如CU1→CU2)
- 升级的目的是获取新功能、性能改进、安全补丁和 bug 修复
- 升级过程需要考虑兼容性、性能影响和业务连续性
更多视频教程www.fgedu.net.cn
1.2 升级类型
升级类型:
- 就地升级:在现有服务器上直接升级SQLServer实例
- 迁移升级:将数据库从旧版本迁移到新版本
- 并行升级:在新服务器上安装新版本,然后迁移数据
- 集群升级:升级SQLServer故障转移集群
学习交流加群风哥微信: itpux-com
1.3 升级注意事项
升级注意事项:
- 兼容性:检查应用程序与新版本的兼容性
- 硬件要求:确保服务器满足新版本的硬件要求
- 软件要求:确保操作系统和其他软件满足新版本的要求
- 备份:在升级前备份所有数据库和系统配置
- 测试:在测试环境中进行升级测试
- 回滚计划:制定详细的回滚计划
- 时间窗口:选择合适的维护时间窗口
- 监控:升级过程中监控系统状态
学习交流加群风哥QQ113257174
Part02-生产环境规划与建议
2.1 升级前规划
升级前规划:
- 评估当前环境:评估现有SQLServer实例的配置、性能和使用情况
- 选择升级方式:根据业务需求和环境选择合适的升级方式
- 制定升级计划:详细规划升级步骤、时间和人员安排
- 准备测试环境:在测试环境中模拟升级过程
- 检查兼容性:使用SQLServer升级顾问检查兼容性问题
- 备份策略:确保所有数据库和系统配置都有完整备份
- 资源准备:确保服务器有足够的磁盘空间和内存
风哥提示:升级前规划是确保升级成功的关键,应充分考虑各种可能的风险和应对措施
2.2 升级时间窗口
升级时间窗口:
- 选择业务低峰期:如周末或节假日
- 预估升级时间:根据实例大小和复杂度预估升级时间
- 预留缓冲时间:在预估时间基础上增加30%的缓冲时间
- 通知相关方:提前通知业务部门和用户
- 设置超时机制:如果升级时间超过预期,及时评估是否继续
更多学习教程公众号风哥教程itpux_com
2.3 回滚策略
回滚策略:
- 备份恢复:准备完整的备份,以便在升级失败时恢复
- 并行环境:在升级前保持旧环境可用,以便快速切换
- 回滚步骤:制定详细的回滚步骤和时间点
- 测试回滚:在测试环境中测试回滚过程
- 验证机制:回滚后验证系统功能和数据完整性
from SQLServer视频:www.itpux.com
Part03-生产环境项目实施方案
3.1 升级前准备
升级前准备:
SELECT @@VERSION;
GO
— 步骤2:检查数据库状态
SELECT
name,
state_desc,
recovery_model_desc
FROM sys.databases;
GO
— 步骤3:检查数据库完整性
DBCC CHECKDB(‘fgedudb’) WITH NO_INFOMSGS;
GO
— 步骤4:检查SQLServer错误日志
EXEC xp_readerrorlog 0, 1, N’Error’;
GO
— 步骤5:检查数据库备份状态
SELECT
database_name,
backup_start_date,
backup_finish_date,
backup_size,
type
FROM msdb.dbo.backupset
WHERE database_name = ‘fgedudb’
ORDER BY backup_start_date DESC;
GO
— 步骤6:使用SQLServer升级顾问
— 下载并安装SQLServer升级顾问
— 运行升级顾问扫描现有实例
— 步骤7:备份所有数据库
— 备份系统数据库
BACKUP DATABASE master TO DISK = ‘E:\SQLServer\Backup\master.bak’;
BACKUP DATABASE model TO DISK = ‘E:\SQLServer\Backup\model.bak’;
BACKUP DATABASE msdb TO DISK = ‘E:\SQLServer\Backup\msdb.bak’;
— 备份用户数据库
BACKUP DATABASE fgedudb TO DISK = ‘E:\SQLServer\Backup\fgedudb.bak’;
GO
— 步骤8:检查服务器资源
— 检查磁盘空间
EXEC xp_fixeddrives;
— 检查内存使用情况
SELECT
physical_memory_in_use_kb / 1024 AS physical_memory_used_mb,
available_physical_memory_kb / 1024 AS available_physical_memory_mb
FROM sys.dm_os_process_memory;
— 检查CPU使用情况
SELECT
cpu_count,
hyperthread_ratio
FROM sys.dm_os_sys_info;
执行结果:
Microsoft SQL Server 2019 (RTM) – 15.0.2000.5 (X64)
Sep 24 2019 13:48:23
Copyright (C) 2019 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2019 Standard 10.0
—————————————————————————————-
name state_desc recovery_model_desc
——— ———– ——————-
master ONLINE SIMPLE
tempdb ONLINE SIMPLE
model ONLINE FULL
msdb ONLINE SIMPLE
fgedudb ONLINE FULL
(5 rows affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
LogDate ProcessInfo Text
———————– ———— ——————————————————————————–
2025-04-08 10:00:00.000 spid51 Error: 17053, Severity: 16, State: 1.
2025-04-08 10:00:00.000 spid51 I/O error (torn page) detected during read at offset 0x00000000012000 in file ‘E:\SQLServer\Data\fgedudb.mdf’.
database_name backup_start_date backup_finish_date backup_size type
————- ———————– ———————– ———– —-
fgedudb 2025-04-07 22:00:00.000 2025-04-07 22:05:00.000 104857600 D
drive MB free
—– ———
C: 10240
D: 51200
E: 102400
physical_memory_used_mb available_physical_memory_mb
———————– —————————
4096 8192
cpu_count hyperthread_ratio
——— —————–
8 2
3.2 升级实施
升级实施:
— 从Microsoft官网下载SQLServer 2022安装媒体
— 步骤2:运行安装程序
— 双击setup.exe启动安装程序
— 选择”升级SQLServer实例”
— 步骤3:选择实例
— 选择要升级的SQLServer实例
— 步骤4:验证产品密钥
— 输入SQLServer 2022产品密钥
— 步骤5:接受许可条款
— 勾选”我接受许可条款”
— 步骤6:选择功能
— 保持与现有实例相同的功能
— 步骤7:验证规则
— 确保所有规则都通过
— 步骤8:指定实例配置
— 保持现有实例名称和实例ID
— 步骤9:指定服务器配置
— 保持现有服务账户和启动类型
— 步骤10:指定数据库引擎配置
— 保持现有身份验证模式和管理员账户
— 步骤11:指定Analysis Services配置
— 保持现有配置
— 步骤12:指定Reporting Services配置
— 保持现有配置
— 步骤13:验证升级规则
— 确保所有升级规则都通过
— 步骤14:准备升级
— 确认升级配置
— 步骤15:执行升级
— 开始升级过程
— 步骤16:完成升级
— 点击”关闭”完成升级
— 步骤17:验证升级结果
— 检查SQLServer版本
SELECT @@VERSION;
GO
— 检查数据库状态
SELECT
name,
state_desc,
recovery_model_desc
FROM sys.databases;
GO
— 检查SQLServer错误日志
EXEC xp_readerrorlog 0, 1, N’Starting’;
GO
执行结果:
Microsoft SQL Server 2022 (RTM) – 16.0.1000.6 (X64)
Oct 8 2022 05:58:25
Copyright (C) 2022 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2019 Standard 10.0
—————————————————————————————-
name state_desc recovery_model_desc
——— ———– ——————-
master ONLINE SIMPLE
tempdb ONLINE SIMPLE
model ONLINE FULL
msdb ONLINE SIMPLE
fgedudb ONLINE FULL
(5 rows affected)
LogDate ProcessInfo Text
———————– ———— ——————————————————————————–
2025-04-08 11:00:00.000 spid51 Starting SQL Server
2025-04-08 11:00:01.000 spid51 SQL Server is now ready for client connections.
3.3 升级后验证
升级后验证:
SELECT @@VERSION;
GO
— 步骤2:检查数据库状态
SELECT
name,
state_desc,
recovery_model_desc
FROM sys.databases;
GO
— 步骤3:检查数据库完整性
DBCC CHECKDB(‘fgedudb’) WITH NO_INFOMSGS;
GO
— 步骤4:检查SQLServer错误日志
EXEC xp_readerrorlog 0, 1, N’Error’;
GO
— 步骤5:检查数据库备份状态
BACKUP DATABASE fgedudb TO DISK = ‘E:\SQLServer\Backup\fgedudb_post_upgrade.bak’;
GO
— 步骤6:检查应用程序连接
— 使用应用程序连接测试
— 步骤7:检查性能
— 运行性能测试
— 步骤8:检查作业状态
SELECT
name,
enabled,
last_run_date,
last_run_time,
last_run_outcome
FROM msdb.dbo.sysjobs;
GO
— 步骤9:检查数据库兼容性级别
SELECT
name,
compatibility_level
FROM sys.databases;
GO
— 步骤10:更新数据库兼容性级别
ALTER DATABASE fgedudb SET COMPATIBILITY_LEVEL = 160;
GO
— 步骤11:更新统计信息
UPDATE STATISTICS fgedu.sales WITH FULLSCAN;
GO
— 步骤12:重建索引
ALTER INDEX ALL ON fgedu.sales REBUILD WITH (
ONLINE = ON,
FILLFACTOR = 80
);
GO
执行结果:
Microsoft SQL Server 2022 (RTM) – 16.0.1000.6 (X64)
Oct 8 2022 05:58:25
Copyright (C) 2022 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2019 Standard 10.0
—————————————————————————————-
name state_desc recovery_model_desc
——— ———– ——————-
master ONLINE SIMPLE
tempdb ONLINE SIMPLE
model ONLINE FULL
msdb ONLINE SIMPLE
fgedudb ONLINE FULL
(5 rows affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
LogDate ProcessInfo Text
———————– ———— ——————————————————————————–
Processed 288 pages for database ‘fgedudb’, file ‘fgedudb’ on file 1.
Processed 2 pages for database ‘fgedudb’, file ‘fgedudb_log’ on file 1.
BACKUP DATABASE successfully processed 290 pages in 0.123 seconds (18.685 MB/sec).
name enabled last_run_date last_run_time last_run_outcome
————— ——- ————- ————- —————-
Backup Job 1 20250407 220000 1
Index Maintenance 1 20250407 020000 1
(2 rows affected)
name compatibility_level
——— ——————-
master 160
tempdb 160
model 160
msdb 160
fgedudb 150
(5 rows affected)
Commands completed successfully.
Commands completed successfully.
Commands completed successfully.
Part04-生产案例与实战讲解
4.1 就地升级案例
就地升级实战:
— 步骤1:升级前准备
— 检查当前版本
SELECT @@VERSION;
GO
— 检查数据库状态
SELECT
name,
state_desc,
recovery_model_desc
FROM sys.databases;
GO
— 备份所有数据库
BACKUP DATABASE master TO DISK = ‘E:\SQLServer\Backup\master.bak’;
BACKUP DATABASE model TO DISK = ‘E:\SQLServer\Backup\model.bak’;
BACKUP DATABASE msdb TO DISK = ‘E:\SQLServer\Backup\msdb.bak’;
BACKUP DATABASE fgedudb TO DISK = ‘E:\SQLServer\Backup\fgedudb.bak’;
GO
— 步骤2:运行SQLServer 2022安装程序
— 选择”升级SQLServer实例”
— 按照安装向导完成升级
— 步骤3:升级后验证
— 检查版本
SELECT @@VERSION;
GO
— 检查数据库状态
SELECT
name,
state_desc,
recovery_model_desc
FROM sys.databases;
GO
— 检查数据库完整性
DBCC CHECKDB(‘fgedudb’) WITH NO_INFOMSGS;
GO
— 步骤4:更新数据库兼容性级别
ALTER DATABASE fgedudb SET COMPATIBILITY_LEVEL = 160;
GO
— 步骤5:更新统计信息和重建索引
UPDATE STATISTICS fgedu.sales WITH FULLSCAN;
ALTER INDEX ALL ON fgedu.sales REBUILD WITH (ONLINE = ON, FILLFACTOR = 80);
GO
— 步骤6:测试应用程序连接
— 使用应用程序连接到数据库并执行测试查询
SELECT TOP 10 * FROM fgedu.sales;
GO
执行结果:
Microsoft SQL Server 2019 (RTM) – 15.0.2000.5 (X64)
Sep 24 2019 13:48:23
Copyright (C) 2019 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2019 Standard 10.0
—————————————————————————————-
name state_desc recovery_model_desc
——— ———– ——————-
master ONLINE SIMPLE
tempdb ONLINE SIMPLE
model ONLINE FULL
msdb ONLINE SIMPLE
fgedudb ONLINE FULL
(5 rows affected)
Processed 288 pages for database ‘fgedudb’, file ‘fgedudb’ on file 1.
Processed 2 pages for database ‘fgedudb’, file ‘fgedudb_log’ on file 1.
BACKUP DATABASE successfully processed 290 pages in 0.123 seconds (18.685 MB/sec).
—————————————————————————————-
Microsoft SQL Server 2022 (RTM) – 16.0.1000.6 (X64)
Oct 8 2022 05:58:25
Copyright (C) 2022 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2019 Standard 10.0
—————————————————————————————-
name state_desc recovery_model_desc
——— ———– ——————-
master ONLINE SIMPLE
tempdb ONLINE SIMPLE
model ONLINE FULL
msdb ONLINE SIMPLE
fgedudb ONLINE FULL
(5 rows affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Commands completed successfully.
Commands completed successfully.
sale_id product_id customer_id sale_date amount status
———– ———– ———– ———————– ——————— ——————–
1 1 1001 2025-04-08 10:00:00.000 1000.00 COMPLETED
2 2 1002 2025-04-08 10:00:00.000 2000.00 COMPLETED
3 3 1003 2025-04-08 10:00:00.000 3000.00 PENDING
(3 rows affected)
4.2 迁移升级案例
迁移升级实战:
— 步骤1:在新服务器上安装SQLServer 2022
— 下载并安装SQLServer 2022
— 步骤2:备份旧服务器上的数据库
— 在旧服务器上执行
BACKUP DATABASE fgedudb TO DISK = ‘E:\SQLServer\Backup\fgedudb.bak’ WITH COMPRESSION;
GO
— 步骤3:复制备份文件到新服务器
— 使用robocopy或其他工具复制备份文件
robocopy E:\SQLServer\Backup \\newserver\E$\SQLServer\Backup fgedudb.bak
— 步骤4:在新服务器上恢复数据库
— 在新服务器上执行
RESTORE DATABASE fgedudb FROM DISK = ‘E:\SQLServer\Backup\fgedudb.bak’
WITH REPLACE,
MOVE ‘fgedudb’ TO ‘E:\SQLServer\Data\fgedudb.mdf’,
MOVE ‘fgedudb_log’ TO ‘E:\SQLServer\Log\fgedudb_log.ldf’;
GO
— 步骤5:复制登录账户
— 使用sp_help_revlogin存储过程复制登录账户
— 在旧服务器上执行
EXEC sp_help_revlogin;
— 在新服务器上执行生成的脚本
— 步骤6:复制作业和维护计划
— 使用SQLServer Management Studio导出作业和维护计划
— 步骤7:更新数据库兼容性级别
ALTER DATABASE fgedudb SET COMPATIBILITY_LEVEL = 160;
GO
— 步骤8:更新统计信息和重建索引
UPDATE STATISTICS fgedu.sales WITH FULLSCAN;
ALTER INDEX ALL ON fgedu.sales REBUILD WITH (ONLINE = ON, FILLFACTOR = 80);
GO
— 步骤9:测试应用程序连接
— 更新应用程序连接字符串指向新服务器
— 测试应用程序功能
— 步骤10:切换流量
— 当测试通过后,切换应用程序流量到新服务器
执行结果:
Processed 2 pages for database ‘fgedudb’, file ‘fgedudb_log’ on file 1.
BACKUP DATABASE successfully processed 290 pages in 0.123 seconds (18.685 MB/sec).
ROBOCOPY :: Robust File Copy for Windows
Started : Tuesday, April 8, 2025 10:00:00 AM
Source : E:\SQLServer\Backup\
Dest : \\newserver\E$\SQLServer\Backup\
Files : fgedudb.bak
Options : /DCOPY:DA /COPY:DAT /R:1000000 /W:30
100% New File 100.0 m fgedudb.bak
Total Copied Skipped Mismatch FAILED Extras
Dirs : 0 0 0 0 0 0
Files : 1 1 0 0 0 0
Bytes : 100.0 m 100.0 m 0 0 0 0
Times : 0:00:05 0:00:05 0:00:00 0:00:05
Speed : 20.000 MB/min
Speed : 1.157 MB/sec
Processed 288 pages for database ‘fgedudb’, file ‘fgedudb’ on file 1.
Processed 2 pages for database ‘fgedudb’, file ‘fgedudb_log’ on file 1.
RESTORE DATABASE successfully processed 290 pages in 0.156 seconds (14.826 MB/sec).
Commands completed successfully.
Commands completed successfully.
Commands completed successfully.
4.3 集群升级案例
集群升级实战:
— 步骤1:升级前准备
— 检查集群状态
Get-ClusterNode
Get-ClusterResource
— 检查SQLServer版本
SELECT @@VERSION;
GO
— 备份所有数据库
BACKUP DATABASE master TO DISK = ‘E:\SQLServer\Backup\master.bak’;
BACKUP DATABASE model TO DISK = ‘E:\SQLServer\Backup\model.bak’;
BACKUP DATABASE msdb TO DISK = ‘E:\SQLServer\Backup\msdb.bak’;
BACKUP DATABASE fgedudb TO DISK = ‘E:\SQLServer\Backup\fgedudb.bak’;
GO
— 步骤2:升级被动节点
— 将集群资源故障转移到主动节点
Move-ClusterGroup -Name “SQL Server (MSSQLSERVER)” -Node “Node1″
— 在被动节点(Node2)上运行SQLServer 2022安装程序
— 选择”升级SQLServer实例”
— 步骤3:故障转移到已升级的节点
— 将集群资源故障转移到已升级的节点(Node2)
Move-ClusterGroup -Name “SQL Server (MSSQLSERVER)” -Node “Node2″
— 步骤4:升级原主动节点
— 在原主动节点(Node1)上运行SQLServer 2022安装程序
— 选择”升级SQLServer实例”
— 步骤5:验证集群状态
Get-ClusterNode
Get-ClusterResource
— 步骤6:验证SQLServer版本
SELECT @@VERSION;
GO
— 步骤7:检查数据库状态
SELECT
name,
state_desc,
recovery_model_desc
FROM sys.databases;
GO
— 步骤8:测试故障转移
— 手动触发故障转移测试
Move-ClusterGroup -Name “SQL Server (MSSQLSERVER)” -Node “Node1”
Move-ClusterGroup -Name “SQL Server (MSSQLSERVER)” -Node “Node2”
— 步骤9:更新数据库兼容性级别
ALTER DATABASE fgedudb SET COMPATIBILITY_LEVEL = 160;
GO
— 步骤10:更新统计信息和重建索引
UPDATE STATISTICS fgedu.sales WITH FULLSCAN;
ALTER INDEX ALL ON fgedu.sales REBUILD WITH (ONLINE = ON, FILLFACTOR = 80);
GO
执行结果:
—- —– —-
Node1 Up Node
Node2 Up Node
Name State OwnerGroup ResourceType
—- —– ———– ————
SQL Server Online SQL Server (MSSQLSERVER) SQL Server
SQL Server Agent Online SQL Server (MSSQLSERVER) SQL Server Agent
SQL Server Browser Online SQL Server (MSSQLSERVER) SQL Server Browser
Disk E: Online SQL Server (MSSQLSERVER) Physical Disk
IP Address 192.168.1.100 Online SQL Server (MSSQLSERVER) IP Address
—————————————————————————————-
Microsoft SQL Server 2019 (RTM) – 15.0.2000.5 (X64)
Sep 24 2019 13:48:23
Copyright (C) 2019 Microsoft Corporation
Enterprise Edition (64-bit) on Windows Server 2019 Standard 10.0
—————————————————————————————-
Processed 288 pages for database ‘fgedudb’, file ‘fgedudb’ on file 1.
Processed 2 pages for database ‘fgedudb’, file ‘fgedudb_log’ on file 1.
BACKUP DATABASE successfully processed 290 pages in 0.123 seconds (18.685 MB/sec).
Name State Type
—- —– —-
Node1 Up Node
Node2 Up Node
Name State OwnerGroup ResourceType
—- —– ———– ————
SQL Server Online SQL Server (MSSQLSERVER) SQL Server
SQL Server Agent Online SQL Server (MSSQLSERVER) SQL Server Agent
SQL Server Browser Online SQL Server (MSSQLSERVER) SQL Server Browser
Disk E: Online SQL Server (MSSQLSERVER) Physical Disk
IP Address 192.168.1.100 Online SQL Server (MSSQLSERVER) IP Address
—————————————————————————————-
Microsoft SQL Server 2022 (RTM) – 16.0.1000.6 (X64)
Oct 8 2022 05:58:25
Copyright (C) 2022 Microsoft Corporation
Enterprise Edition (64-bit) on Windows Server 2019 Standard 10.0
—————————————————————————————-
name state_desc recovery_model_desc
——— ———– ——————-
master ONLINE SIMPLE
tempdb ONLINE SIMPLE
model ONLINE FULL
msdb ONLINE SIMPLE
fgedudb ONLINE FULL
(5 rows affected)
Commands completed successfully.
Commands completed successfully.
Commands completed successfully.
Part05-风哥经验总结与分享
5.1 版本升级最佳实践
版本升级最佳实践:
- 充分测试:在测试环境中进行完整的升级测试
- 备份完整:升级前备份所有数据库和系统配置
- 制定计划:详细规划升级步骤和时间安排
- 选择合适的时间窗口:在业务低峰期进行升级
- 监控升级过程:实时监控升级进度和系统状态
- 验证升级结果:升级后进行全面的验证
- 更新兼容性级别:根据需要更新数据库兼容性级别
- 优化性能:升级后更新统计信息和重建索引
更多视频教程www.fgedu.net.cn
5.2 版本升级常见问题
常见问题:
- 兼容性问题:应用程序与新版本不兼容
- 硬件不足:服务器硬件不满足新版本要求
- 存储空间不足:升级过程中磁盘空间不足
- 升级失败:升级过程中出现错误
- 性能下降:升级后性能不如预期
- 连接问题:应用程序无法连接到升级后的实例
- 备份失败:升级后备份策略失效
学习交流加群风哥微信: itpux-com
5.3 版本升级性能调优
性能优化:
- 更新统计信息:升级后更新所有数据库的统计信息
- 重建索引:升级后重建所有索引
- 更新兼容性级别:使用新版本的兼容性级别以获得性能改进
- 优化参数:根据新版本的特性调整SQLServer参数
- 监控性能:升级后监控系统性能,及时发现并解决问题
- 使用新特性:利用新版本的性能特性,如内存优化表、列存储索引等
- 调整硬件:根据新版本的要求调整硬件配置
- 优化查询:利用新版本的查询优化器改进查询性能
学习交流加群风哥QQ113257174
风哥提示:版本升级是一个复杂的过程,需要充分的准备和测试。在升级前应制定详细的计划,确保业务连续性和数据安全。
更多学习教程公众号风哥教程itpux_com
from SQLServer视频:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
