已知的 SQL Server 2012 设置和迁移问题

本文介绍 SQL Server 2012 安装和迁移问题。

原始产品版本:SQL Server
原始 KB 数: 2681562

特定于 SQL Server 2012 的设置和迁移问题

  • 常规说明

    • 默认情况下,Windows 8 包括 .NET Framework 4.0。 Windows 8.1 和 Windows Server 2012 R2 包括 .NET Framework 4.5,Windows 10 和 Windows Server 2016 包括 .NET Framework 4.6。 但是,以下 SQL Server 2012 组件依赖于 .NET Framework 3.5:

      • SQL Server 2012 数据库引擎
      • 复制服务
      • SQL Server Data Tools
      • Data Quality Service
      • Master Data Service
      • Reporting Service 本机模式
      • 全文搜索

      因此,建议在独立或群集环境中安装 SQL Server 2014 或 SQL Server 2012 之前启用 .NET 3.5 Framework,以帮助防止任何可能的 SQL Server 安装失败。

      有关如何启用 .NET 3.5 Framework 的信息,请查看以下文章:

  • SQL Server 2012 的最新累积更新中修复了某些 SQL Server 2012 安装和安装问题。 因此,建议使用 /Update 参数创建包含 SQL Server 2012 和 CU3 或更高版本更新的滑行安装包。 有关如何执行此操作的详细信息,请参阅 SQL Server 2012 安装程序刚刚变得更智能 ,或者 如何使用更新的设置包(使用 UpdateSource 获取智能设置)修补 SQL Server 2012 安装程序。

未启用 .NET Framework 3.5 时可能发生的 SQL Server 2012 安装问题

问题 1 - SQL 故障转移群集或独立安装不完整

现象

在尚未安装 .NET Framework 3.5 的服务器或 Internet 访问受限的服务器上,SQL Server 2012 安装程序不会安装依赖于 .NET Framework 3.5 的组件。 因此,SQL Server 2012 安装可能不完整。

注意

Windows 8.1 或 Windows Server 2012 R2 不会让你继续安装。

未启用 .NET Framework 时,SQL Server 2012 安装期间可能会显示类似于以下内容的错误消息。

SQL Server 2012 安装错误消息的屏幕截图:启用 Windows 功能时出错。

防护

若要防止此问题,请在安装 SQL Server 2012 之前,在群集的所有节点上或独立服务器上启用 .NET Framework 3.5。

分辨率

若要在独立服务器上解决此问题,请启用 .NET Framework 3.5,然后再次运行安装程序以添加其他功能。

若要在群集环境中解决此问题,请卸载不完整的 SQL Server 2012 实例,启用 .NET Framework 3.5,然后重新安装 SQL Server 2012。

注意

在群集环境中,无法再次运行 SQL Server 2012 安装程序来添加跳过的功能。

若要在独立服务器上解决此问题,请启用 .NET Framework 3.5,然后再次运行 SQL Server 安装程序。

问题 2 - 系统提示用户下载并安装 .NET Framework 3.5

现象

尝试安装 CU1 或 CU2 时,系统可能会提示用户下载并安装 .NET Framework 3.5。 即使已安装的组件不依赖于 .NET Framework 3.5,也可能会出现此问题。

在这种情况下,可能会收到如下所示的错误消息。

.Net Framework 3.5 安装错误消息的屏幕截图:无法安装以下功能。

原因

这是 SQL Server 2012 CU1 和 CU2 中的已知问题。

注意

此问题已在 SQL Server 2012 及更高版本中的累积更新 3 中修复。

防护

若要防止此问题,请执行以下操作之一:

  • 启用 .NET Framework 3.5,应用 CU1 更新包或 CU2 更新包,然后禁用 .NET Framework 3.5。

    注意

    如果安装不包括依赖于 .NET Framework 3.5 的组件,则仅应禁用 .NET Framework 3.5。

  • 从包含 SQL Server 2012 和 CU3 或更高版本的滑行安装包安装 SQL Server 2012。

  • 应用累积更新 3 或更高版本。 有关详细信息,请参阅 SQL Server 2012 发布后发布的 SQL Server 2012 内部版本。

问题 3 - 在无提示安装过程中显示 Windows 应用程序兼容性模式警报

现象

在 Windows 8.1、Windows 8、Windows Server 2012 R2、Windows Server 2012、Windows 10 和 Windows Server 2016 中,.NET Framework 是一个按需功能(FOD)组件。 此外,Windows 10、Windows 8.1 和 Windows 8 系统策略以及 Windows Server 2016、Windows Server 2012 R2 和 Windows Server 2012 系统策略要求启用 FOD 组件时向用户发出警报。

注意

默认情况下,在 Windows 8 和 Windows Server 2012 中启用 .NET Framework 4.0。 此外,Windows 8.1 和 Windows Server 2012 R2 中启用了 .NET Framework 4.5,在 Windows 10 和 Window Server 2016 中启用了 .NET Framework 4.6。 但是,禁用了 .NET Framework 3.5。

因此,在无提示安装期间,可能会显示提示用户下载并安装 .NET Framework 3.5 的程序兼容性模式警告。 无法取消这些程序兼容性警报。 警告的屏幕截图如下所示:

Windows Server 2012 R2 和 Windows Server 2012 - 完整服务器

完整服务器上的 .Net Framework 3.5 安装错误消息的屏幕截图:无法安装以下功能。

Windows Server 2012 R2 和 Windows Server 2012 - Server Core

无法通过 Windows 功能错误自动安装角色和功能的屏幕截图。

防护

若要防止此问题,用户可以在执行无提示安装之前启用 .NET Framework 3.5。

其他 SQL Server 2012 安装问题

问题 1:尝试安装 SQL Server 2012 的第二个实例时,可能会生成 .NET Framework 未经处理的异常

现象

假设出现了下面这种情景:

  • 安装 SQL Server 2012 实例。
  • 安装 SQL Server 2012 实例时,会创建一个 .NET Framework 4.0 用户配置文件。 此外,安装过程中会启用 .NET Framework 3.5。
  • 尝试安装 SQL Server 2012 的第二个实例。

在这种情况下,可能会生成未经处理的异常。 可能会出现类似于下面的错误消息:

为 userSettings/Microsoft.SqlServer.Configuration.LandingPage.Properties.Settings 创建配置节处理程序时出错:无法加载文件或程序集系统、Version=4.0.0.0、Culture=neutral、PublicKeyToken=xxxxx 或其依赖项之一。 系统找不到指定的文件。 (C:\Users\Administrator\AppData\Local\Microsoft_Corporation\LandingPage.exe_StrongName_ ryspccglaxmt4nhllj5z3thycltsvyyx\11.0.0.0\user.config)

原因

在 Windows 8 和 Windows Server 2012 中,出现此问题的原因是在 Windows 8 和 Windows Server 2012 中默认启用 .NET Framework 4.0。 因此,安装 SQL Server 2012 时会创建 .NET Framework 4.0 用户配置文件。 此外,安装过程中会启用 .NET Framework 3.5。

尝试安装 SQL Server 2012 的第二个实例时,安装将使用 .NET Framework 2.0,因为已安装 .NET Framework 3.5。 这与用户配置文件中的设置冲突会导致未经处理的异常。

在 Windows 8.1 和 Windows Server 2012 R2 中,出现此问题的原因是在 Windows 8.1 和 Windows Server 2012 R2 中默认启用 .NET Framework 4.5。 因此,安装 SQL Server 2012 时会创建 .NET Framework 4.5 用户配置文件。 此外,安装过程中会启用 .NET Framework 3.5。

尝试安装 SQL Server 2012 的第二个实例时,安装将使用 .NET Framework 2.0,因为已安装 .NET Framework 3.5。 这与用户配置中的设置冲突会导致未经处理的异常。

在 Windows 10 和 Windows Server 2016 中,出现此问题的原因是默认启用 .NET Framework 4.6。 因此,安装 SQL Server 2012 时会创建 .NET Framework 4.6 用户配置文件。 此外,安装过程中会启用 .NET Framework 3.5。

尝试安装 SQL Server 2012 的第二个实例时,安装将使用 .NET Framework 2.0,因为已安装 .NET Framework 3.5。 这与用户配置文件中的设置冲突会导致未经处理的异常。

防护

若要防止此问题,请在安装 SQL Server 2012 的第二个实例之前删除 以下文件夹中的 User.config 文件:

%userprofile%\AppData\Local\Microsoft_Corporation\LandingPage.exe_StrongName_ryspccglaxmt4nhllj5z3thycltsvyyx\11.0.0.0

分辨率

注意

此问题已在 MICROSOFT SQL Server 2012 Service Pack 1(SP1)中修复。

如果第一个实例已安装 Service Pack 1,则不应遇到此问题。 如果无法在第一个实例上安装 Service Pack 1,请执行以下操作之一:

  • 从包含 SQL Server 2012 和 Microsoft SQL Server 2012 Service Pack 1 的滑行安装包安装第二个 SQL Server 2012 实例。 安装新实例后,必须应用 SQL Server 2012 Service Pack 4 或更高版本的更新。 有关详细信息,请参阅 如何获取 SQL Server 2012 的最新 Service Pack

  • 使用 SQL Server 2012 SP4 文件预先修补,然后安装 SQL Server 2012:

    • 在未安装 SQL Server 2012 RTM 的计算机上:

      1. 下载并安装 SQL Server 2012 SP4

      2. “许可条款 ”屏幕上,单击“ 我接受许可条款 ”复选框,然后选择“ 下一步”。

        注意

        安装文件并自动关闭安装向导。

      3. 验证安装。 为此,请启动 “添加或删除程序” ,并验证是否列出了以下内容:

        • Microsoft SQL Server 2012 安装程序版本 11.0.7001.0
        • Microsoft Visual C++ 的两个条目。
    • 在具有 SQL Server 2012 RTM 的现有实例的计算机上:

      1. 下载并安装 SQL Server 2012 SP4

      2. 将 SP4 文件解压缩到本地文件夹。 例如,将 SP4 文件提取到 c:\sp4

        注意

        在此方案中,无法运行 SQL Server 2012 SP4 安装程序。

      3. 在提取 SP4 文件的文件夹中,双击 SqlSupport.msi ,然后选择“ ”。

      4. 验证安装。 为此,请启动 “添加或删除程序” ,并验证是否已列出 Microsoft SQL Server 2012 安装程序版本 11.0.7001.0。

        注意

        请查看 SQL Server 2012 SP4 下载页上的“安装说明”部分,以确定服务器的正确下载。

问题 2:无法在 Windows Server 2012 R2 或 Windows Server 2012 上启用文件共享功能的 SQL Server 2012 故障转移群集

现象

尝试在 Windows Server 2012 上启用共享功能的新 SQL Server 2012 故障转移群集 FileStream 时,可能会收到如下所示的错误消息:

将专用属性“Security0x20Descriptor”设置为资源“SQL Server Filestream 共享(FILESTREAM)”的值“System.Byte[]”时出错。 错误:从提供程序调用群集代码失败。 异常消息:找不到。

原因

出现此问题的原因是 Windows Server 2012 中删除了对安全描述符属性的支持。

防护

若要防止此问题,请在未启用“共享”功能的情况下 FileStream 安装故障转移群集。 安装完成后,启用 FileStream “共享”功能。

分辨率

注意

此问题已在 MICROSOFT SQL Server 2012 Service Pack 1(SP1)中修复。

若要解决此问题,请使用 “添加或删除程序”卸载失败的群集实例,然后在未启用“共享”功能的情况下 FileStream 安装故障转移群集。 安装完成后,启用 FileStream “共享”功能。

问题 3:SQL Server 2012 安装期间出错:“尝试加载格式不正确的程序”

现象

假设出现了下面这种情景:

  • 安装 64 位版本的 Windows 10、Windows 8.1 或 Windows 8。
  • 尝试在 Windows-on-Windows(WoW)模式下安装 SQL Server 2012。
  • SQL Server 2012 安装包括 Reporting Services。

在此方案中,安装失败。 此外,你还会收到如下所示的错误消息:

操作失败,0x8007000B
试图加载的程序的格式不正确。

操作失败错误消息的屏幕截图。

防护

若要防止此问题,请在安装 SQL Server 2012 之前使用 服务器管理器安装 IIS ASP.NET 3.5 组件。 有关详细信息,请参阅 在 Windows 8 或 Windows Server 2012 中卸载 ASP.NET 4.5 后,ASP.NET 2.0 和 ASP.NET 3.5 不起作用。

问题 4:无法安装 SQL Server 2012 企业版故障转移群集实例

现象

假设出现了下面这种情景:

  • 执行以下操作之一:

    • 创建包含 SQL Server 2012 和 CU1 的滑行安装包。
    • 在安装 SQL Server 2012 之前使用 CU1 预修补。
  • 使用 UIMODE=EnableUIOnServerCore 选项安装 SQL Server 2012。

    在此方案中,安装失败。 你会收到如下所示的错误消息。

    “功能规则”页的屏幕截图,其中显示了 Windows Server 核心支持的功能(s) 检查失败。

    错误的详细信息如下所示。

    屏幕截图显示“规则检查结果”对话框中错误的详细信息。

原因

出现此问题的原因是在 DQ 安装过程中,该功能与引擎组件隐式选择。

注意

服务器 DQ 核心模式不支持此功能。

分辨率

注意

此问题已在 SQL Server 2012 RTM CU3 和 SQL Server 2012 Service Pack 1 中修复。

若要解决此问题,请执行以下操作之一:

  • 创建包含 SQL Server 2012 和 CU3 的滑行安装包。
  • 通过运行 CU3 安装包预先修补安装程序支持文件。

问题 5:尝试将群集节点升级到 SQL Server 2012 时出现错误消息:“无法保存资源'SQL 网络名称(<SQL 名称>)的通用属性”

有关此问题以及如何解决此问题的详细信息,请参阅 尝试将群集节点升级到 SQL Server 2012 时出现“无法保存资源”SQL 网络名称()的常见属性“错误。

问题 6:使用 OpenSQLFileStream API 时出现错误消息:“System.ComponentModel.Win32Exception (0x80004005):不支持请求。

现象

假设出现了下面这种情景:

  • 在运行 Windows Server 2012 的服务器上安装 SQL Server 2008 R2 实例。
  • 将 SQL Server 2008 R2 实例升级到 SQL Server 2012 Service Pack 1(SP1)。
  • 使用 OpenSQLFileStream API。

在这种情况下,你将收到类似于以下内容的错误消息:

System.ComponentModel.Win32Exception (0x80004005):不支持请求。

原因

出现此问题的原因是 SQL Server 2012 升级错误地删除了以下注册表项:

HKEY_LOCALMACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters\FsctlAllowList\FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT

解决方法

若要解决此问题,请使用注册表编辑器重新创建以下注册表项:

 HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\FsctlAllowList
 Dword: FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT
 Value: 0x92560

另请参阅