升级 SQL Server 中的企业级地理数据库

在 Standard 或 Advanced 许可等级下可用。

升级企业级地理数据库的目标是更新地理数据库系统表、存储过程、类型和函数,以利用新功能和漏洞修复。 如果您使用的数据库版本在所用的 ArcGIS 客户端中不再受支持,则可能还需要对数据库进行升级。

安装新版本的 ArcGIS ProArcGIS Server,或将补丁包、修补程序或热修复程序应用到现有安装并升级地理数据库。

注:

即使不升级地理数据库,您所使用的数据库版本可能在当前的 ArcGIS 软件版本中也不再受支持。 使用前请务必查看系统要求,以确保所用数据库版本仍受支持。 如果数据库版本不再受支持,您可能需要升级地理数据库。 执行升级操作的间隔越长,升级过程所需的操作就越多。

如果使用 ArcGIS Pro 3.5 升级地理数据库,则已升级的地理数据库版本为 11.5.0.x。

完成下列升级前的必需步骤,然后使用升级地理数据库地理处理工具Python 脚本升级地理数据库。

在升级之前

在对任何企业级系统(包括地理数据库)执行升级之前,必须事先进行规划。 在开发或测试服务器上测试新版本,以确保其能够与所有客户端应用程序配合使用。

当您确定新系统可如预期运行时,即可安排升级;请确保有必要员工可以执行升级,并且他们具有完成分配的任务所需的权限。

注意以下事项:

  • ArcGIS Pro 2.2 及较早版本的客户端和 ArcGIS 10.6.1 及较早版本的客户端无法连接到 Microsoft SQL Server 中的 11.x 地理数据库。 如果您组织中的任何人员仍使用这些客户端版本访问地理数据库,请勿升级地理数据库。
  • 当您在 SQL Server 中升级 10.9.x 或更早版本的地理数据库时,表和要素类的完全限定名称将不再包含数据库名称。 例如,升级地理数据库后,10.8.x 地理数据库中名为 productdata.dataowner.inventory 的要素类将命名为 dataowner.inventory。
  • 不支持对软件的测试版本或预发行版本进行升级。
  • 如果要升级到的 ArcGIS 版本支持您的数据库版本,则可以直接从 10.6.x、10.7.x、10.8.x、10.9.x 或 11.x 版本的地理数据库进行升级。

    如果 SQL Server 的版本不支持您要升级的地理数据库版本和您要升级到的地理数据库版本,则您可能必须多次升级数据库和地理数据库,才能将地理数据库升级到最新版本。 地理数据库升级间隔越长,要达到最新地理数据库版本所需的升级次数越多。

    例如,在以下情况下,必须将数据库和地理数据库升级:

    SQL Server 2016 中的 10.6.1 地理数据库可能需要多次升级。

    对于地理数据库的各个中间升级步骤,请按照该地理数据库版本的升级说明操作,并在版本更改后测试地理数据库。 同样,遵循数据库供应商提供的每个数据库版本升级说明,并在版本更改后测试数据库。

  • 不提供将地理数据库降级到先前版本的正式机制。 升级到较新版本后,如果要降级地理数据库,则可以从包含较旧地理数据库版本的备份文件中恢复数据库。
  • 将地理数据库升级到当前 ArcGIS 版本时,升级地理数据库工具会将 ALLOW_SNAPSHOT_ISOLATIONREAD_COMMITTED_SNAPSHOT SQL Server 数据库选项设置为 ON。 这是 SQL Server 中的地理数据库所必需的设置。

以下是升级地理数据库之前需要完成的步骤清单:

  1. 请阅读 Microsoft SQL Server 的 ArcGIS 要求确认 Esri 支持要使用的 SQL Server、ODBC 驱动程序和 ArcGIS 版本组合。
  2. 请参阅客户端与地理数据库兼容性以了解混用 ArcGIS 客户端版本的影响,并确定是否必须单独升级特定的数据集类型。
  3. 确定地理数据库是否可以升级。

    要执行此操作,需将要移动到的 ArcGIS 客户端版本安装到计算机上。 如果安装了 ArcGIS Pro,可连接至地理数据库并打开数据库属性对话框以确定该地理数据库是否可以升级。 如果安装了 ArcGIS Server(企业版)组件,可使用 ArcPy Describe 函数来确定该地理数据库是否可以升级。

    # Open Python.
    cd /arcgis/server/tools
    ./python
    
    # Import ArcPy.
    import arcpy
    
    # Create a connection to the geodatabase.
    arcpy.CreateDatabaseConnection_management("/tmp/",
                                              "egdb_connection.sde",
                                              "SQL_SERVER",
                                              "prod9",
                                              "DATABASE_AUTH",
                                              "sde",
                                              "mysdepassword",
                                              "SAVE_USERNAME",
                                              "myssgdb")
    
    # Check the geodatabase release.
    isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease
    
    print(isCurrent)

    如果返回 False,则可升级地理数据库。 如果返回 True,则无需升级地理数据库。 请勿继续执行后续步骤。

  4. 创建数据库的备份。
  5. 移除可能添加到 ArcGIS 外部的地理数据库系统表中的任何自定义功能,例如,触发器、SQL Server 复制参与或其他索引。

    升级程序无法兼容对系统表的自定义修改。 如果类似的自定义修改禁止更改系统表,升级将失败。

  6. 确保用来升级地理数据库的登录账户拥有适当的权限。

    有关所需权限的信息,请参阅 SQL Server 中的地理数据库权限

    注:

    请勿向 sysadmin 角色添加 sde 用户。

  7. 确保没有与正在升级的地理数据库的连接。

    查看当前连接到地理数据库的用户列表,请打开 ArcGIS Pro 中的地理数据库管理对话框。

您现在可以升级地理数据库。

升级地理数据

可以使用 ArcGIS Pro 中的升级地理数据库工具或使用在 ArcGIS ProArcGIS Server 计算机上运行的 Python 脚本升级地理数据库。

注:

如果地理数据库包含分支版本化数据,则可能需要附加升级后步骤。 有关说明,请参阅升级地理数据库的工作原理

使用升级地理数据库工具

可通过以下任一方式打开升级地理数据库地理处理工具:

  • 数据管理工具箱中的地理数据库管理工具集
  • ArcGIS Pro数据库属性对话框内常规选项卡上的运行升级按钮

如果打开了数据库属性中的工具,则将使用地理数据库连接信息预填充输入地理数据库文本框。

Esri 建议选中先行检查升级地理数据库选项。 这样,在继续地理数据库升级之前,该工具将确认是否满足升级的先决条件。

先行检查将检测到地理数据库的其他活动连接、确定连接用户是否具有升级地理数据库所需的足够权限、确保数据库可支持 XML 列、确保所有数据集均可打开,以及确认数据库与库的版本相同。 如果未满足任意先决条件,则工具将终止。 再次运行升级过程之前,必须修正所有问题。

此检查的结果在地理处理工具对话框中报告。 如果检查失败,则其结果还将写入 c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product> 文件夹的 GDBUpgrade.log 文件中。

如果通过了所有检查,该工具将继续进行升级。 先行检查和升级的状态将在地理处理工具进度对话框中显示。 如果升级失败,则信息将写入 GDBUpgrade.log 文件。 其他信息将写入用户 TEMP 目录的 sde_setup.log 文件中。 如果用户未配置临时目录,则将使用系统 TEMP 目录。

运行脚本

要使用 Python 脚本升级地理数据库,请复制以下示例脚本,将其粘贴到文本编辑器中,对其进行修改以使用您的站点的特定信息,保存并关闭该文件,然后运行文件。

提示:

有关从 ArcGIS Server 计算机运行 Python 的信息,请参阅 ArcGIS ServerArcPy

这些示例假定您有一个以地理数据库管理员身份连接的现有数据库连接文件。 如果您没有连接文件,请在升级之前创建一个

# Name: upgradesdegdb_example.py
# Description: Uses existing database connection file
# on a Windows computer to run prerequisite check
# and upgrade an enterprise geodatabase.

# Import arcpy module
import arcpy
 
# Local variables:
Output_Workspace = "C:\\ArcGIS\connection_files\<Connection file>"
Default_gdb = "C:\\ArcGIS\connection_files\<Connection file>"

# Process: Upgrade Geodatabase
arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
# Name: upgradesdegdb_example.py
# Description: Uses existing database connection file
# on a Linux computer to run prerequisite check
# and upgrade an enterprise geodatabase.

# Import arcpy module
import arcpy
 
# Local variables:
Output_Workspace = "<user>/connections/<Connection_file>"
Default_gdb = "<user>/connections/<Connection_file>"

# Process: Upgrade Geodatabase
arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")