sql-server - 安装 SQL Server 2017 Developer 版本时 Oracle JRE 规则失败

标签 sql-server installation sql-server-2017

在 Windows 10 计算机上的功能规则屏幕上安装 SQL Server 2017 Developer 版本时,我无法通过以下规则:

  • Polybase 需要 Oracle JRE 7 Update 51(64 位)或更高版本

我收到以下错误:

This computer does not have the Oracle Java SE Runtime Environment Version 7 Update 51 (64-bit) or higher installed. The Oracle Java SE Runtime Environment is software provided by a third party. Microsoft grants you no rights for such third-party software. You are responsible for and must separately locate, read and accept applicable third-party license terms. To continue, download the Oracle SE Java Runtime Environment from https://go.microsoft.com/fwlink/?LinkId=526030.

enter image description here

我的机器上安装了足够高的 Java 版本 (9.x)。我运行了命令 java -XshowSettings:properties -version,它提供了与我的机器上的 Java 安装相关的以下详细信息:

Property settings:
    awt.toolkit = sun.awt.windows.WToolkit
    file.encoding = Cp1252
    file.encoding.pkg = sun.io
    file.separator = \
    java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
    java.awt.printerjob = sun.awt.windows.WPrinterJob
    java.class.path =
    java.class.version = 53.0
    java.home = C:\Program Files\Java\jre-9.0.1
    java.io.tmpdir = C:\Users\RASIK~1.BIH\AppData\Local\Temp\
    java.library.path = C:\ProgramData\Oracle\Java\javapath
        C:\Windows\Sun\Java\bin
        C:\Windows\system32
        C:\Windows
        C:\ProgramData\Oracle\Java\javapath
        C:\Program Files (x86)\Intel\iCLS Client\
        C:\Program Files\Intel\iCLS Client\
        C:\Windows\system32
        C:\Windows
        C:\Windows\System32\Wbem
        C:\Windows\System32\WindowsPowerShell\v1.0\
        C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static
        C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL
        C:\Program Files\Intel\Intel(R) Management Engine Components\DAL
        C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT
        C:\Program Files\Intel\Intel(R) Management Engine Components\IPT
        C:\Program Files\Microsoft SQL Server\130\Tools\Binn\
        C:\Program Files\dotnet\
        C:\Program Files\Git\cmd
        C:\Program Files\nodejs\
        C:\Program Files\1E\NomadBranch\
        C:\Program Files\TortoiseSVN\bin
        C:\Users\rasik.bihari\AppData\Local\Microsoft\WindowsApps
        C:\Users\rasik.bihari\AppData\Roaming\npm
        .
    java.runtime.name = Java(TM) SE Runtime Environment
    java.runtime.version = 9.0.1+11
    java.specification.name = Java Platform API Specification
    java.specification.vendor = Oracle Corporation
    java.specification.version = 9
    java.vendor = Oracle Corporation
    java.vendor.url = http://java.oracle.com/
    java.vendor.url.bug = http://bugreport.java.com/bugreport/
    java.version = 9.0.1
    java.vm.compressedOopsMode = Zero based
    java.vm.info = mixed mode
    java.vm.name = Java HotSpot(TM) 64-Bit Server VM
    java.vm.specification.name = Java Virtual Machine Specification
    java.vm.specification.vendor = Oracle Corporation
    java.vm.specification.version = 9
    java.vm.vendor = Oracle Corporation
    java.vm.version = 9.0.1+11
    jdk.debug = release
    line.separator = \r \n
    os.arch = amd64
    os.name = Windows 10
    os.version = 10.0
    path.separator = ;
    sun.arch.data.model = 64
    sun.boot.library.path = C:\Program Files\Java\jre-9.0.1\bin
    sun.cpu.endian = little
    sun.cpu.isalist = amd64
    sun.desktop = windows
    sun.io.unicode.encoding = UnicodeLittle
    sun.java.launcher = SUN_STANDARD
    sun.jnu.encoding = Cp1252
    sun.management.compiler = HotSpot 64-Bit Tiered Compilers
    sun.os.patch.level =
    sun.stderr.encoding = cp850
    sun.stdout.encoding = cp850
    user.country = IN
    user.dir = C:\Users\rasik.bihari
    user.home = C:\Users\rasik.bihari
    user.language = en
    user.name = Rasik.Bihari
    user.script =
    user.timezone =
    user.variant =

java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

不确定此安装程序还在寻找什么。还有其他人遇到过这个错误吗?一个明显的解决方案是跳过PolyBase 外部数据查询服务功能,即在功能选择屏幕上取消选择它,但我不想这样做。我想解决这个问题,为什么当我的机器配置满足所有先决条件时它仍然中断安装?

最佳答案

我在 2017 年 12 月上旬发表的一篇文章中充分解释了根本原因,并提供了注册表编辑解决方法。该问题在 SQL Server 2016 和 2017 中是相同的,如文章 here 中提到的。 .

简单总结一下,Oracle 在 JRE 版本 8 之后更改了注册表项结构。 SQL Server 2016 和 2017 安装程序会查找位于以下位置的 JRE 版本 7 注册表项名称: HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java 运行时环境

假设您想要使用 JRE 版本 9 并且不想安装 JRE 版本 7。您必须导出位于 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JRE 中的 JRE 9 版本 key > 并编辑它们以使键名称与 JRE 7 匹配。有 3 个键需要重命名。导入编辑过的 key 。这样安装程序将找到指向 JRE 9 位置的版本 7 key 名称。

引用文章中有关编辑键名的部分:

You want to replace all occurrences of JRE with Java Runtime Environment. You must not alter the lowercase jre references.

例如,将 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JRE 更改为 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

关于sql-server - 安装 SQL Server 2017 Developer 版本时 Oracle JRE 规则失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47385969/

相关文章:

sql-server - 数据库中的日期时间数据类型可以有 NULL 值吗?

python - 为 python 2.7 安装 scipy

installation - Grunt 已安装但无法正常工作 - Mavericks 上的 "Command not found"

php - 使用 Apache 在我的 Windows 7 上安装 PHP GD

sql - 在 SQL Server 2017 中使用标识列间隙

sql-server - 日期时间数据类型的 SQL Server 2017 问题

sql-server - 获取 "Execution Timeout Expired"通过 Invoke-Sqlcmd 运行 SQL Server 备份

sql - BULK INSERT 格式文件中的正确排序规则

sql - 将 teradata 时间戳 (6) 转换为 SQL Server 的日期时间

docker - 在 Docker 容器中运行的 SQL Server 2017 Linux 镜像中从 .cer 和 .p7b 创建证书