迁移前的黄金半小时准备
关闭网站写入操作,在服务器命令行执行:net stop w3svc && net stop MSSQLSERVER
这将停止IIS和SQL Server服务,防止数据写入冲突。用Navicat导出数据库时,必须勾选"包含扩展属性"选项,否则迁移后字段注释会全部丢失。
某次帮客户迁移时,因忽略系统自带的SiteServer_Log表,导致权限配置全乱。记住要导出全部87张系统表,特别是ss_Administrator这张表藏着后台密码。
实战迁移四步法
- 在新服务器安装完全相同版本的SQL Server(核对版本号到小数点后两位)
还原数据库时选择"覆盖现有数据库" - 修改web.config的connectionString连接字符串
- 重置应用程序池标识为Local System
上周遇到典型故障:迁移后图片无法上传。原因出在FILESTREAM功能未启用,执行这条SQL命令解决:EXEC sp_configure filestream_access_level, 2 RECONFIGURE
数据校验三大关键点
- 对比源库和目标库的索引碎片率(差异超过5%需要重建索引)
- 用SQL脚本检查触发器数量:
SELECT COUNT(*) FROM sys.triggers
- 验证用户表行数是否一致:
EXEC sp_spaceused @objname = N'ss_Content'
有个冷门技巧:在查询窗口运行DBCC CHECKDB('SiteServerDB') WITH NO_INFOMSGS
,能检测出隐藏的数据页错误。某企业迁移后访问量暴跌,就是因此命令发现3个损坏页面。
企业级容灾方案配置
- 配置数据库镜像:
sql**ALTER DATABASE SiteServerDB SET PARTNER = 'TCP://192.168.1.100:5022'
- 设置异地备份任务(每日凌晨2点压缩传输)
- 启用透明数据加密(TDE)保护客户隐私
去年某制造企业遭遇勒索病毒,因开启TDE加密未丢失任何数据。但要注意:加密密钥必须存放在独立服务器,否则形同虚设。
性能调优参数清单
- 将最大内存限制设为物理内存的80%:
sp_configure 'max server memory', 8192
- 设置备份压缩:
EXEC sp_configure 'backup compression default', 1
- 启用即时文件初始化(减少日志文件增长延迟)
测试数据显示:调整填充因子(fillfactor)为90%,可使查询速度提升15%。但事务频繁的表建议保持默认值0(100%填充)。
迁移失败急救包
当遇到"无法打开数据库"报错时,速查这三个位置:
- 检查mdf/ldf文件权限(需赋予SQLServerMSSQLUser完全控制权)
- 确认数据库版本不低于源服务器
- 查看错误日志路径:
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log
最惊险的一次救援:客户误删日志文件,最终用CREATE DATABASE FOR ATTACH_REBUILD_LOG
命令成功恢复。这条命令能重建丢失的日志,但仅限紧急情况使用。
某上市公司迁移后三个月,突然出现凌晨定时卡顿。后来发现是维护计划未迁移,导致自动重建索引任务堆积。现在我会在检查清单里特别标注:必须用脚本导出所有SQL作业:
sql**SELECT * FROM msdb.dbo.sysjobs WHERE name LIKE '%SiteServer%'
这个教训价值百万——数据库迁移不是数据搬运,而是生态转移。就像移植大树,根系土壤都要完整搬迁,才能保证生机不断。
标签: 无痛 迁移 SiteServer