65.9K
CodeProject 正在变化。 阅读更多。
Home

将 SQL Server 2008R2 从 Enterprise 版降级为 Standard 版

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2015年8月13日

CPOL

6分钟阅读

viewsIcon

26927

对于不使用任何 Enterprise 功能的服务器,将其从 Enterprise 版降级到 Standard 版(SQL Server)。

引言

最近,我们遇到一种情况,许多生产服务器需要从 SQL Server 2008R2 Enterprise 版降级到相应的 Standard 版。可能的原因是,在最初设置这些服务器时,没有对是否需要 Enterprise 功能进行充分的分析。因此,我们制定了降级这些服务器的计划。

在第一部分中,我将描述对于不使用任何 Enterprise 功能的服务器,如何将其从 SQL Server 的 Enterprise 版降级到 Standard 版。

注意* Enterprise 功能是在数据库级别检查的,针对托管在该特定服务器上的所有数据库,而不是服务器级别。

先决条件

我准备了一份清单,在执行此降级操作时会很有用。

  • 列出运行 SQL Server 及其关联服务所使用的所有服务账户,或提供截图。
  • 记下实例的数量,以防有多个非默认实例。
  • 脚本化服务器的全部服务器配置,例如 AWE、身份验证、登录审计、数据库默认位置等。
  • 检查启用的网络协议以及 TCP/IP 端口号等。
  • 已安装的组件,例如全文搜索、报告服务、分析服务或集成服务(如果适用)。
  • 对所有数据库执行 DBCC CHECKDB,以确保将要备份的数据库是完好的,没有损坏。根据服务器负载和用户数据库的大小执行此操作。非强制,但如果需要。
  • 完整备份所有数据库(用户数据库和系统数据库)。
  • 备份完数据库后,在每个数据库上运行以下查询
    SELECT * FROM sys.dm_db_persisted_sku_features
    以检查实例上的数据库是否使用了任何 Enterprise 功能。
  • 列出符合降级条件的 SQL Server 实例上所有数据库使用的排序规则。非强制,但如果需要。
  • 因为你永远不知道安装何时会失败,请检查当前 SQL Server 的版本和内部版本号。降级后,您需要将新的 SQL Server 更新到相同的补丁级别。
  • 运行创建 SQL 实例上所有登录名的脚本,并将该脚本保存为“创建登录名脚本”。非强制,但如果需要。
  • 脚本化所有数据库邮件配置设置,以防在降级后它们无法正确映射,从而更安全。非强制,但如果需要。
  • 脚本化所有 SQL Server Agent 作业,以防在降级后它们无法正确映射,从而更安全。非强制,但如果需要。
  • 脚本化所有 SSIS 包,以防在降级后它们无法加载,从而更安全。非强制,但如果需要。

注意* 如果您有很多数据库,那么单独运行

SELECT * FROM sys.dm_db_persisted_sku_features

在每个数据库上可能会很繁琐

因此,您可以使用 sp_foreachdb 来为您检查。

CREATE TABLE #Tables(DB_Name nvarchar(100),feature_name NVARCHAR(4000),feature_id int );  
EXEC sp_foreachdb N'use ?  
INSERT #AllTables SELECT db_name() DN_Name,feature_name, _
	feature_id FROM sys.dm_db_persisted_sku_features';
SELECT * FROM #Tables ORDER BY 1;
DROP TABLE #Tables; 

一旦您确认上述查询没有使用任何 Enterprise 功能,就可以按照下面的描述继续执行降级操作了。

让我们开始吧

步骤 1

确保数据库及其相应的应用程序未连接。

第二步

检查所有正在运行的 SQL Agent 作业,并确保它们已相应停止。如果作业数量很多,您可以停止 SQL Server Agent 服务。

步骤 3

现在停止要降级的实例的 SQL Server 服务。

步骤 4

复制系统数据库,如下所示,即 Master、MSDB 和 Model,并将其移动到与当前位置不同的位置,因为我们稍后会用到它们。

步骤 5

现在,您只需卸载此活动中涉及的 SQL Server,如下所示。

转到程序和功能

点击卸载

然后点击删除

下一个屏幕将要求您指定要删除的 SQL Server 实例。

在这里,您可以卸载 SQL Server Enterprise 版本及其组件。(包括 SSIS、SSAS、SSRS、SSDT),如果适用。不需要卸载共享组件(SSMS、客户端工具和连接)。但即使您觉得需要这样做,也可以。

如下所示,我不会卸载共享组件,因此在删除其他组件时没有选择它们。

点击“下一步”并完成卸载过程。

步骤 6

重启服务器。

重启后,您会注意到用户数据库仍保留在原目录中,而系统数据库则会消失。这就是为什么我们要相应地复制它们的数据和日志文件的原因。

步骤 7

一旦 Enterprise 版本已从计算机上完全移除,我们将需要安装相应的 SQL Server Standard 版本。

插入/挂载媒体并安装。

这里我们不详细介绍如何完成安装。您可以在线参考各种文章。

步骤 8

SQL Server 安装成功后,连接到新实例,点击“新建查询”并运行以下命令。

SELECT @@Version

因此,这证实我们已成功安装了 Standard 版本。

另外,我们还需要注意的一个问题是内部版本号,如以上截图所示,已从 10.50.1790.0 更改为 10.50.1600.1。因此,在继续之前,我们必须确保应用正确的安全补丁,以使内部版本号恢复到原始状态。

有关内部版本号及其相应版本的更多信息,请参阅 http://sqlserverbuilds.blogspot.in/

应用更新后,您可以通过执行以下查询来验证:

SELECT @@Version

步骤 9

现在我们将继续并停止正在运行的 SQL Server 服务。

第 10 步

现在,只需复制并粘贴之前复制的系统数据库文件(即 Master、MSDB 和 Model 的 mdf 和 ldf 文件),如下所示。

第 11 步

文件复制完成后,我们可以重新启动 SQL 服务。

SQL Server 恢复并运行后,我们应该会看到所有必需的作业、登录名、SSIS 包、数据库等都可见,并且可以正常使用了。

虽然可能不需要,但由于我的数据库大小不大,为了保险起见,我在降级完成后运行了 DBCC CHECKDB,只是为了确保没有潜在的损坏。

历史

  • 帖子第一版
© . All rights reserved.