ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SQL Server 2005安装全攻略:一文搞定SP4补丁与排错

SQL Server 2005安装全攻略:一文搞定SP4补丁与排错 看到这个标题点进来的朋友我猜你现在八成是在帮某个老项目擦屁股或者被领导安排去接手一台年代感十足的服务器。别问我怎么知道的SQL Server 2005 这个 2005 年发布、2016 年 4 月就停止扩展支持的老家伙到今天仍然会在各种企业的角落里顽强运行——制造业的 MES、老 ERP、HR 系统、历史财务数据库一跑就是十几年系统管理员换了好几任数据库还是 9.00 系列。更常见的情况是你手上有一份多年的 .bak 备份文件要临时搭一个环境把数据拉出来看看结果发现网上的教程缺步跳步严重尤其是 SP4 补丁这个环节很多教程根本不提装完要么版本不对、要么有安全漏洞、要么后续功能用不了。这篇文章我就把从零安装 SQL Server 2005含 SP4 补丁的全过程按我实际操刀的路子完整捋一遍包括每个界面怎么选、补丁怎么打、装失败怎么定位、装完之后下一步该干什么给你一条能直接照抄的路线。1. 谁在2020年代还要装SQL Server 2005——先确认你走对路了很多人看到 SQL Server 2005 的第一反应是这玩意儿还有人用。实话实说如果你是要给新项目选数据库我劝你趁早关掉这篇文章去装 SQL Server 2019 或者 2022。但如果你和我一样是接手老系统的运维、做历史数据迁移、或者在虚拟机上复现一个十几年前的生产环境那 SQL Server 2005 不仅绕不开还是整套方案里最麻烦的一环。1.1 还在用2005的五类真实场景还在折腾 SQL Server 2005 的人大概逃不出下面这几种情况存量业务系统的数据库不能随便动。很多制造业的 MES 系统、老 ERP、HR 系统、实验室 LIMS 系统当年上线时用的是 SQL Server 2005软件开发商早就不维护了或者升级报价高得离谱于是数据库就这么一直跑着。历史备份文件需要临时还原。手里攥着一份多年前的 .bak 或 .mdf 文件客户让你把数据导出来。这时候最快的办法不是往新版本上硬还原而是本地装一台 2005 先把库打开。教材和实验课还在用。部分高校的数据库课程、培训机构的老教材实验环境还是 2005学生得在虚拟机里装一套交作业。老工程师排障复现。生产库版本太老新工具连不上需要搭一套一模一样的本地环境复现问题、分析日志。数据迁移的中间跳板。要把 2005 的数据迁到高版本有时候需要先在迁移机器上装一个 2005把库还原出来再用备份或 Detach/Attach 方式往上升。不管是哪种情况结论都是一样的SQL Server 2005 虽然老但还能打。1.2 版本号与版本类型看清你拿的到底是哪一份SQL Server 2005 的内部版本号是 9.00 系列但 9.00 后面那 4 位数字决定了它到底处于哪个服务包阶段。这个信息在你验证 SP4 是否安装成功时一定要用到先记住这张表版本状态内部版本号说明RTM初始版9.00.1399刚发布时的版本未经任何服务包SP19.00.3042第一个服务包SP29.00.3350第二个服务包SP39.00.4035第三个服务包SP4最终包9.00.5000最后一个服务包包含此前全部修补版本类型上SQL Server 2005 常见的版本有 Express免费版、Workgroup工作组版、Standard标准版、Enterprise企业版、Developer开发版。除了 Express 外其他版本功能差异主要在性能和高级特性上安装流程本身大差不差。需要特别提醒的是下载安装包和 SP4 补丁时一定要看清是 32 位还是 64 位、简体中文还是英文版本。位数不匹配会直接导致补丁装不上语言不匹配也会提示此语言版本不受支持。这个坑我踩过一次后面补丁章节会细说。1.3 为什么SP4是绕不过去的坎网上流传的所谓SQL Server 2005 完整安装包很多其实就是一张原始安装光盘的 ISO 镜像里面并不包含 SP4。装完之后你打开 SQL Server Management Studio 一看版本号还是 9.00.1399原始得不能再原始。不装 SP4 的后果最直接的有三方面安全风险。SP4 是 SQL Server 2005 的最后一个服务包修复了大量已知安全漏洞尤其是 2010 年前后暴露的若干高危远程代码执行漏洞。裸奔的 RTM 版本放到生产环境基本等于把数据库端口暴露给攻击者。功能和兼容性问题。很多后来发布的驱动程序、管理工具、第三方监控软件都要求 SQL Server 至少是 SP3 或 SP4。不装 SP4你会发现某些备份软件连不上、某些动态视图查不到、某些性能计数器不存在。后续维护无路可走。微软对 2005 的支持早就停止唯一还能打的补丁就是 SP4。你不装它后面出了问题连补的机会都没有。所以我的建议是只要决定装 SQL Server 2005就必须把 SP4 作为整个安装流程的一部分而不是可选项。2. 装之前把三件事备齐安装介质、SP4补丁、能兼容的系统SQL Server 2005 安装失败十次有八次是准备工作没做够。尤其是现在的主流操作系统上装这个老古董兼容性问题是最大的拦路虎。这一节我把安装前需要准备和确认的东西全部列出来。2.1 安装介质从哪来怎么验收微软官方下载中心现在已经不提供 SQL Server 2005 的在线下载了正规渠道主要是MSDN 订阅镜像如果你公司或学校有 MSDN 订阅登录订阅门户还能找到 SQL Server 2005 全系列镜像下载。内部共享/老光碟很多老工程师手里有当年项目留下的安装光盘或 ISO 文件这是最常见的来源。第三方存档网站一些数据库技术社区有人整理并分享了 ISO下载后务必校验哈希避免文件被篡改或携带恶意内容。拿到 ISO 之后我建议先做三件事第一看 ISO 文件大小。SQL Server 2005 企业版 32 位安装镜像一般在 1GB 以上如果只有几百 MB多半是精简版或不完整版。第二用工具挂载或解压 ISO确认里面有setup.exe、x86或x64目录、sqlservr.msi等关键文件。第三在记事本打开autorun.inf或Setup目录确认版本和语言信息。简单来说安装包来源可以不那么官方但不能来路不明。2.2 SP4补丁下载与校验SP4 补丁的官方文件名是SQLServer2005SP4-KB2463332-x86-CHS.exe32 位简体中文版64 位则是SQLServer2005SP4-KB2463332-x64-CHS.exe。微软下载中心目前仍然保留着这个补丁的下载页面但入口藏得比较深直接搜索 KB2463332 一般能找到。如果是英文系统请下载ENU结尾的补丁包不要和CHS简体中文混用。补丁包大小大概在 70~80MB 左右下载速度可能不算快耐心一点。下载完成后建议用哈希工具校验一下文件尤其是从第三方渠道获取的补丁。具体哈希值以微软官方发布为准我不会在这里贴死一个数字因为不同语言、不同位数补丁的哈希都不同。校验通过后再拿去安装。2.3 操作系统、硬件和前置组件检查清单SQL Server 2005 官方支持的操作系统是 Windows Server 2003、Windows XP SP2、Windows Vista。放到今天你大概率不是用这些老系统装。以下是我实测过、能用的搭配方案操作系统能否安装注意事项Windows XP SP3原生支持最省心的环境但虚拟机里要装好 VM ToolsWindows Server 2003 R2原生支持老企业服务器标配Windows 7 / Server 2008 R2可以需要右键 setup.exe 设置兼容模式关闭 UACWindows 10 / 11不建议各种兼容问题太折磨建议用虚拟机Windows Server 2012 R2 / 2016可以但非官方需要 .NET 3.5 功能开启可能有性能计数器和注册表问题硬件要求按现在的标准看低得可怜CPU 只要 Pentium III 500MHz 以上内存最低 512MB推荐 1GB 以上磁盘可用空间至少 2~3GB。但是要注意SQL Server 2005 对多核 CPU 的调度和现代大内存的支持并不好所以如果打算长期跑建议使用虚拟机并限制 CPU 核数和内存。在 VMware 或 Hyper-V 里给虚拟机分配 2 核、2GB 内存跑 2005 完全没问题甚至更稳。前置组件方面最容易卡住的有三个.NET Framework 2.0。SQL Server 2005 安装程序依赖它但 Windows 7/Server 2008 R2 默认不启用 .NET 3.5包含 2.0 和 3.0安装时可能报未安装 .NET Framework 2.0。解决方法是打开控制面板 → 程序和功能 → 启用或关闭 Windows 功能勾选 .NET Framework 3.5 再安装。Windows Installer 4.5。XP 或 Server 2003 上如果版本过低需要先去装好。MSXML 6.0。SQL Server 2005 的安装引导程序用到了 MSXML 6没有的话安装过程中会报错。旧版系统上建议提前装。另外如果你准备安装 Reporting Services 报表服务需要 IIS 的支持。没有 IIS 也不至于装不上安装程序会弹出一个黄色感叹号警告这时候可以选择忽略继续。2.4 用一条SQL确认你要处理的库是什么版本如果你手上已经有一个正在运行的 SQL Server 2005 实例或者一份别人给的备份文件在动手之前先确认一下目标版本是有必要的。直接在 SQL Server Management Studio 新建查询执行SELECT VERSION;输出结果里如果包含Microsoft SQL Server 2005 - 9.00.5000.00说明已经打了 SP4如果是9.00.1399就是 RTM 版本需要补 SP4。还可以用这句确认服务包级别和版本类型SELECT SERVERPROPERTY(ProductLevel), SERVERPROPERTY(Edition);ProductLevel返回SP4就是已经打过 SP4RTM就是原始版本。这个确认动作别省尤其是接到项目里的 Step 1省得后面白忙活。3. 一步步装完SQL Server 2005每个界面都值得看懂再点准备工作做完下面进入真正的安装环节。很多人装 SQL Server 2005 装到一半失败或者装完不能用往往是在某个界面随手点了个下一步没有理解选项含义造成的。这一节按安装向导的顺序把每个关键界面都讲清楚。3.1 运行setup.exe前必须做的三个动作在双击setup.exe之前有三件事必须做尤其是你在 Windows 7 或 Server 2008 R2 上安装时右键 setup.exe → 属性 → 兼容性 → 勾选以兼容模式运行这个程序 → 选择Windows XP (Service Pack 3)。这一步能避开大量因为 Windows 版本检查导致的安装中断。勾选以管理员身份运行此程序。SQL Server 2005 的安装程序对权限很敏感普通管理员双击和右键管理员运行效果完全不同。临时关闭 UAC用户账户控制或把 UAC 拉到最低。Windows 7/8/10/11 上不关闭 UAC安装时很可能在某个环节弹 UAC 提示而你不在电脑前安装就会卡住或失败。另外杀毒软件和系统安全软件能退就退或者把安装程序和它的解压目录加入白名单。这个老安装包的动作模式容易被某些安全软件判定为风险行为导致关键文件被拦截。3.2 安装向导关键界面逐项说明组件选择界面进入安装向导后会先检查系统必备组件通过后进入要安装的组件界面。这里有四个核心组件按你的需求勾选组件作用是否建议安装SQL Server Database Services数据库引擎核心中的核心必选Analysis Services多维分析、数据挖掘一般不用Reporting Services报表服务按需选依赖IISNotification Services通知服务一般不用Integration Services数据集成、ETL推荐选如果你只是需要还原一个业务库、跑一下查询选SQL Server Database Services和Integration Services就够了。别贪多组件越多装得越慢后续出问题的面也越大。实例配置界面到达实例名界面时需要选择默认实例还是命名实例。这个选择直接关系到你以后怎么连接数据库默认实例实例名为 MSSQLSERVER连接时用服务器名或(local)就能访问端口默认 1433。命名实例实例名自拟比如SQL2005连接时要用服务器名\实例名的格式端口默认是动态分配。单台机器上只能有一个默认实例但可以同时存在多个命名实例。如果你这台机器上还会跑其他版本的 SQL Server或者未来可能要装 2008/2012 做迁移演练我建议这里用命名实例避免实例名冲突。服务账户界面服务账户界面很多人看一眼就跳过了实际上这里有个很容易忽略的细节。SQL Server 2005 有多个服务SQL Server 主服务、SQL Server Agent、Analysis Services、Reporting Services、Integration Services。安装向导默认每个服务用同一个账户你也可以点开自定义每个服务的账户分开设置。生产环境通常遵循公司 AD 域策略但做本地测试环境的话直接用内置账户即可。这里我的建议是SQL Server和SQL Server Agent都使用Local System或Network Service并在下方勾选启动 SQL Server 服务时自动启动。注意如果这台机器上了域并且你计划用 SQL Server Agent 做跨服务器作业、备份到网络共享那就要用专门的域账户否则后面很容易遇到权限不足的问题。本地单机测试就先不用管这些。身份验证模式界面身份验证模式是我个人觉得整个安装过程中最应该停下来想一想的界面。SQL Server 2005 提供两种模式Windows 身份验证模式只能用 Windows 系统账户登录安全性好但以后如果要用sa账户或从 Linux、Java 程序等非 Windows 环境连接会比较麻烦。混合模式既支持 Windows 身份验证也支持 SQL Server 身份验证账号密码由 SQL Server 自己管理。我的判断标准很简单如果你 100% 确定只有本机的 Windows 应用会连这个库选 Windows 身份验证就够了但只要有一点可能要用sa连接、以后要迁移数据、或者程序里写的是 SQL Server 账号密码连接串就直接选混合模式。选了混合模式后安装程序会要求你设置sa的密码请设置一个复杂密码并记好。2005 的密码策略默认要求强密码太简单会过不去。排序规则界面在排序规则设置界面简体中文版的默认值是Chinese_PRC_CI_AS。这个默认值对中文环境是正确的不需要改。简单解释一下CI表示不区分大小写AS表示区分重音。除非你的业务系统有明确的排序规则要求否则这里保持默认即可。错误报告和使用情况报告界面安装过程中最后会出现两个关于错误报告的勾选项默认是勾上的。这两个选项会把错误信息或使用数据发送给微软。建议全部取消勾选原因不言自明你的数据库环境信息没必要往外传而且这些设置装了之后改起来还要动注册表不如从一开始就关掉。3.3 默认实例、命名实例与端口选错后面麻烦实例和端口的逻辑是新手最容易混的地方。我在项目中遇到过不止一次开发配置连接串时写了127.0.0.1连不上或者 SQL Server Browser 服务没开命名实例无法自动解析端口。这里帮你把关系理顺一台机器上可以有多个 SQL Server 实例它们共用同一套基础服务但各自有独立的数据库、日志、服务账户。默认实例监听在固定的 1433 端口客户端连localhost或127.0.0.1就能找到。命名实例默认不在 1433 监听而是在启动时动态获取一个空闲端口。客户端要通过SQL Server Browser服务去发现它。如果 SQL Server Browser 被禁用客户端就必须手动指定端口号否则连接失败。所以如果你装的是命名实例安装完成后记得把 SQL Server Browser 服务设为自动启动。不然过一阵子重启机器你会发现程序连不上数据库了。3.4 装完先别急打补丁第一时间的状态检查SQL Server 2005 安装向导走完完成界面出现后先别急着关机也别急着直接打 SP4。先做两分钟的检查打开 Windows 服务管理器确认名为SQL Server (MSSQLSERVER)或SQL Server (你的实例名)的服务状态是正在运行。打开C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\Ssms.exe或者通过开始菜单打开 SQL Server Management Studio尝试连接实例。如果连接报错先看服务是否启动再看协议是否启用SQL Server 配置管理器 → 客户端协议 → 启用 TCP/IP 和 Named Pipes。确认能正常连接后再继续下一步打补丁。这一步的意义在于如果连原始版本都起不来补丁打了也白打先把基础问题解决。4. SP4补丁安装顺序中最容易被忽略却最致命的一环SQL Server 2005 的 SP4 补丁是整个安装流程里最折腾人的一步也是网上教程最不爱讲的一步。很多人的完整安装包装完查询版本号还是 9.00.1399原因就在这安装光盘本身只是 RTM需要单独打 SP4。4.1 SP4到底是什么解决了什么问题SP4全称 Service Pack 4是微软为 SQL Server 2005 发布的最后一个累积服务包版本号 9.00.5000。它包含此前 SP1、SP2、SP3 的全部修复内容外加若干安全更新和稳定性修复。对 2005 这个版本来说SP4 就是毕业版之后没有任何官方补丁了。它解决的具体问题包括一堆已公开的安全漏洞尤其是数据库引擎、Analysis Services、Reporting Services 组件的高危漏洞在一些新操作系统上运行时出现的兼容性问题比如在 Windows 7 和 Server 2008 R2 上某些查询突然变慢或报错64 位系统上特定场景下的内存和性能问题数据库镜像、复制、全文索引等功能的若干 bug。从实际使用的角度说打不打 SP4体验是完全不同的两套 SQL Server 2005。打上 SP4 之后再配上一部分微软不更新但有价值的功能修复这个老库才算进入一个可稳定维护的状态。4.2 打补丁前二十分钟的准备动作我见过不少人不做任何准备双击 SP4 补丁就开始装结果装到一半显示某个组件正在使用或者服务无法停止。打补丁之前按这个顺序做准备工作备份 master 数据库。SP4 安装过程中会升级数据库引擎的系统库如果中途失败导致 master 损坏没有备份会非常被动。备份命令也很简单BACKUP DATABASE master TO DISK D:\backup\master_before_sp4.bak;断开所有客户端连接。通知一下可能连在这个库上的人或者在服务管理器里先把 SQL Server Agent 停止避免数据库引擎被占用。关闭 SSMS 和所有管理工具。SSMS 进程会占用 SQL Server 的某些 DLL不关掉可能导致补丁升级文件失败。确认补丁包位置。把补丁文件放到本地磁盘比如D:\不要放在网络路径上。XP 系统如果放在共享盘安装容易出现权限问题。检查磁盘空间。SP4 补丁解压和安装过程大概需要 1.5~2 倍于补丁包的空间预留 2GB 以上比较稳妥。4.3 SP4安装的完整过程和耗时判断双击补丁包会出现一个解压界面它会把安装文件解压到C:\Windows\Temp\或提示你选择目录然后自动启动安装向导。整个流程大概是解压安装文件这一步看起来像卡住了其实在释放文件。有的机器会在这里停留 5~10 分钟尤其是老硬盘。不要因为界面长时间不动就直接结束进程。许可协议点下一步接受。选择实例如果是多实例机器会列出所有 SQL Server 实例勾选需要升级的实例。检查依赖组件安装程序会自动检查 .NET Framework、Windows Installer 版本。复制并升级文件进度条走完后会提示安装完成。整个安装过程在配置正常的虚拟机里大概需要 20~40 分钟主要耗时在文件复制和数据库升级阶段。如果进度条卡在 80% 左右超过 30 分钟别急这可能是数据库升级脚本执行的阶段遇到大库或慢盘确实会有这个情况。SP4 安装完成后SQL Server 服务通常会尝试自动重启。如果没有自动重启手动把服务管理器中相关服务重新启动一次。4.4 打补丁最容易翻车的三个现场第一个现场装了 32 位补丁到 64 位 SQL Server 上。这种情况安装程序一般会直接拒绝提示该补丁与此 SQL Server 版本不兼容但有时候不会明确说位数不对只是报一个 Error code 0x85640002 或者 Setup failed。排查的方法是先确认 SQL Server 位数。在 SSMS 里执行SELECT SERVERPROPERTY(Edition);输出中如果包含64-bit就去下 x64 补丁。第二个现场SQL Server 服务还在运行补丁安装程序卡在停止服务那一步。安装程序在升级文件之前需要停止几乎所有 SQL Server 相关服务。如果有个别服务因为权限或依赖问题停不掉就会一直卡住。解决方法是打开服务管理器手动停止SQL Server (实例名)、SQL Server Agent (实例名)、SQL Server Integration Services等服务再重新点补丁的重试。第三个现场补丁装一半突然断电或重启。这会导致数据库引擎文件版本不一致最坏的情况是 master 数据库损坏SQL Server 服务起不来。如果你遇到了这种情况先别慌把之前备份的 master 数据库还原回去然后重新打 SP4。这就体现出 4.2 节备份的重要性了。4.5 如何验证SP4已经打上版本号才是硬道理补丁装完验证工作是最重要的。不要看安装向导提示成功要以实际查询结果为准。在 SSMS 中执行SELECT VERSION;输出里应该看到Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86) ... (C) 1988-2005 Microsoft Corporation. Enterprise Edition on Windows NT ...注意9.00.5000.00是 SP4 的标志版本号如果是别的数字说明补丁没打上得重新来。再执行一句SELECT SERVERPROPERTY(ProductLevel);返回SP4即成功。顺带把SERVERPROPERTY(Edition)也查一下确认版本类型和生产一致。5. 安装失败排查五个最常见的坑和定位思路SQL Server 2005 安装失败不像新版 SQL Server 那样报错直观很多错误都是中途退出或者回滚让人摸不着头脑。这一节我把遇到的、听说的、帮别人处理的常见问题集中说一下给出定位路径和解决思路。5.1 性能计数器损坏导致中途退出现象安装程序在系统配置检查阶段或刚开始复制文件时弹出类似 Performance counter registry hive consistency check failed 的错误然后安装中止。原因Windows 操作系统的性能计数器注册表项不一致或者 SQL Server 的计数器注册信息与系统不匹配。这在新版本的 Windows 上装老 SQL Server 时尤其常见。定位思路先确认系统性能计数器是否正常。打开性能监视器perfmon如果能正常显示 CPU/内存曲线说明系统层面的性能计数器基本没问题如果不能就可以判断是注册表性能计数器的问题。处理办法在命令行以管理员身份执行lodctr /r这个命令会重建系统性能计数器。执行完重启系统再尝试安装 SQL Server。如果lodctr /r不够可以到C:\Windows\System32\winsock或注册表HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib下检查是否有异常项。但这个操作比较复杂一般情况下lodctr /r就能解决八成问题。5.2 .NET Framework 2.0 检查不通过现象安装向导进入系统必备组件检查环节提示需要 .NET Framework 2.0点击安装后却报错或一直卡住。原因Windows 7/Server 2008 R2 虽然自带了 .NET 3.5.1包含 2.0 和 3.0但在功能里默认是关闭的SQL Server 2005 的检测逻辑找不到对应的注册表项就认为没装。处理办法不要用 SQL Server 2005 安装包自带的 .NET 组件直接通过 Windows 系统功能开启 .NET Framework 3.5.1Windows 7 / Server 2008 R2控制面板 → 程序和功能 → 启用或关闭 Windows 功能 → 勾选 .NET Framework 3.5.1。如果系统是精简版需要离线安装包可以从系统安装介质或可靠的离线源安装。装完之后再跑 SQL Server 2005 setup.exe。5.3 安装到一半回滚日志怎么看现象安装进度条走了 60% 或 80%然后突然回滚界面提示安装失败。原因回滚是 MSI 安装机制在检测到某个步骤失败时的兜底行为真正的原因被吞掉了需要看安装日志。定位思路SQL Server 2005 安装日志存放在C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\Log\目录下。重点看这几个文件Summary.txt安装概要记录了整个安装过程的状态和最终失败点。Files\SQLSetup0001_XXX_YYYY.log具体安装日志按时间戳排列找最后一个 Error 或 Fatal error。打开日志文件后搜索关键字failed、error code、0x。常见错误代码和原因我会在下一小节说明。如果不嫌麻烦还可以通过命令行捕获更完整的日志setup.exe /qb /lv C:\sql2005_install.log这条命令用基本界面安装并把详细日志写到指定文件信息量比向导界面大得多。处理办法多数情况下回滚的原因是磁盘空间不足、权限不够、杀毒软件实时扫描干扰、依赖组件缺失。把这几项逐一排除后清空C:\Windows\Temp和安装日志目录重新运行安装程序。5.4 Windows Installer 报错 0x643现象安装过程中弹出 Error code 0x643。原因0x643 对应 Windows Installer 的通用升级失败错误一般和 Windows Installer 本身损坏、缓存目录权限异常或旧版本残留有关。定位思路先检查 Windows Installer 服务是否启动services.msc→ Windows Installer再尝试重注册msiexec /unregister msiexec /regserver之后清理两个目录C:\Windows\Temp和C:\Windows\Installer下的项目后者是隐藏目录操作时小心不要乱删其中的文件只是确认是否有权限异常。如果还不行尝试用系统的程序和功能卸载掉残留的 SQL Server 2005 组件如果有然后用 Windows Installer 清理工具清理后再装。这里的核心思路要知道0x643 不是 SQL Server 的问题是操作系统 MSI 引擎的问题要把矛头指向 Windows Installer。5.5 权限不够与杀毒软件干扰现象安装到某个节点界面突然报无法写入注册表或无法创建目录。原因当前用户虽然看似是管理员但因为 UAC 的存在实际权限是受限的。处理办法把setup.exe右键 → 以管理员身份运行或在管理员权限的命令行下执行。另外安装介质所在的目录、解压出来的临时目录都要有足够的读写权限。如果放在C:\Users\公共这样的特殊目录下权限也可能出问题。最好的做法是放到C:\或D:\根目录下新建的简单路径比如D:\sql2005路径中不要有中文。杀毒软件干扰的解决方式前面也提过临时关闭实时防护或把安装目录加入白名单。SQL Server 2005 安装过程中会注册服务、修改注册表、替换系统 DLL这些动作在安全软件眼里都很可疑。被误拦的典型表现是安装过程没有明显报错但装完发现某些服务缺失或文件被删除。这种问题最难排查所以提前关防护是最优解。6. 装完不是结束连接、附加旧库以及未来迁移的路线SQL Server 2005 装好、SP4 打上这才算真正开始用。这一节讲装完之后马上要做的事以及这个老库未来怎么跟新版本共存和迁移。6.1 首次连库和远程访问配置用 SSMS 连接时服务器名一栏填localhost就可以连到本机默认实例。如果用的是命名实例需要填localhost\实例名。首次连接验证一下身份验证模式是否和安装时选择的一致。如果你以后要通过局域网远程访问这个 SQL Server 2005还需要做三件事在 SQL Server 配置管理器中启用 TCP/IP 协议。在 Windows 防火墙中放行 1433 端口默认实例。如果是命名实例还需要放行 UDP 1434 端口给 SQL Server Browser 服务或者手动为命名实例指定固定端口。确认 SQL Server Browser 服务已启动并设为自动启动。这里我特别提醒一下SQL Server 2005 安装在 Windows 7 或更高版本系统上防火墙第一次弹窗时很多人直接点允许但只放行了当前运行的几个进程SQL Server 的另一个监听进程未必被放行。建议直接到防火墙高级设置里按端口放行不要只按程序放行。6.2 附加/还原旧数据库的两种方式拿到一份旧库的 .bak 文件后还原是首选方式RESTORE DATABASE [OldDB] FROM DISK ND:\backup\OldDB.bak WITH REPLACE, MOVE NOldDB TO ND:\data\OldDB.mdf, MOVE NOldDB_log TO ND:\data\OldDB_log.ldf;如果报错提示数据库正在使用加WITH REPLACE依然不行就先执行ALTER DATABASE [OldDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;再还原。如果你的介质是一份 .mdf 和 .ldf 文件没有 .bak可以用附加的方式sp_attach_db OldDB, D:\data\OldDB.mdf, D:\data\OldDB_log.ldf;或者用 SSMS 图形界面的附加功能。注意2005 只能附加 2000 和 2005 版本的数据库文件更高版本的数据文件无法附加到 2005。6.3 从2005向新版本迁移时要注意的事SQL Server 2005 备份还原到更高版本2008、2012、2016 等是兼容的还原之后数据库会自动完成升级。但有几个坑必须提前排还原到高版本后数据库兼容级别默认会变成目标版本的默认级别某些在 2005 上能用的语法和查询计划可能发生变化。先用ALTER DATABASE [库名] SET COMPATIBILITY_LEVEL 90;让它暂时保持 2005 的兼容级别等业务验证没问题后再逐步调高。涉及复制、镜像、Service Broker 的库迁移前需要先禁用这些功能否则还原后可能处于异常状态。老版本的DTS包2005 中的 Integration Services 包迁移到新环境需要在新版本上重新部署和配置不能直接还原一个包文件就能用。另一种思路是使用高版本的导入导出向导把 2005 作为数据源直接同步到新版数据库。数据量不大时这种方式直观但会丢失索引、约束、触发器、存储过程等结构对象只适合纯数据迁移。6.4 在虚拟机里跑2005的几条实测建议目前推荐的做法是在虚拟机中安装 SQL Server 2005既不影响宿主机环境也能随时快照回滚。结合这几年的实际经验提几个建议分配 2GB 内存给虚拟机就够了2005 对超大内存的管理能力一般内存给多了反而可能出现诡异的性能问题。装完系统后先打齐系统补丁再装 SQL Server再打 SP4然后清理系统并做一次快照。这个快照就是你的干净环境备份以后任何测试都可以直接回滚到这个状态。虚拟机磁盘不要用动态扩容的薄磁盘用一个固定大小的 VHDX/VMDKSQL Server 的随机读写性能会稳定很多。和宿主机之间用共享文件夹或 NAT 网络共享备份文件不要把备份文件长期放在虚拟机 C 盘以免空间耗尽导致库挂掉。如果虚拟机里跑的是 XP/2003 系统记得装完系统后把 VM Tools 或 Integration Services 组件装上否则网络性能和磁盘性能都会很差。最后再分享一点个人的真实体会。我帮客户恢复过一个十几年前的老 MES 数据库客户给的是一个.bak文件还是从磁带机上翻出来的。我在自己电脑的虚拟机里装 SQL Server 2005前后折腾了大半天最后发现最花时间的不是安装本身而是在网上下载完整安装包时找补丁的那段路程。装完之后我顺手查了一下VERSION结果发现网上那个所谓的完整安装包装出来居然是原始 RTM 版本后来重下 SP4 补丁才真正搞定。从那以后我的习惯就是任何老版本数据库环境的搭建装完基础包后的第一件事永远是打满 Service Pack确认版本号再做快照之后再碰数据。希望这篇文章能帮你省下那段弯路一套装下来直接稳定干活。
返回列表