在 SQL Server 中创建地理数据库

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

要在 Microsoft SQL Server 数据库中创建地理数据库,请从 ArcGIS 客户端运行地理处理工具或 Python 脚本。首先阅读先决条件,然后按照适合实际情况的说明进行操作。

先决条件

要创建地理数据库 SQL Server,请执行以下操作:

  1. 请确认您想使用的 ArcGIS、SQL Server 和操作系统组合相互兼容
  2. 下载连接到用于存储地理数据库的 SQL Server 版本所需的 SQL Server ODBC 客户端。
  3. 获取 ArcGIS Server 密钥代码文件,然后将其放置到可从用于创建地理数据库的 ArcGIS 客户端访问的位置。
  4. 确定将创建地理数据库的人员(这会影响创建数据库的人员),以及运行哪个工具来创建地理数据库。按照适合实际情况的说明进行操作:

您是 SQL Server 和地理数据库管理员

如果您同时行使数据库管理员和地理数据库管理员的角色,并知晓两个登录帐户的密码,则可以使用创建企业级地理数据库地理处理工具或 Python 脚本在 SQL Server 数据库中创建地理数据库。

创建企业级地理数据库工具可令您轻松创建地理数据库,因为此工具可创建数据库对象并授予您所需的权限。为此,该工具使用以下默认设置并创建以下数据库对象:

  • 该工具可在服务器上的默认 SQL Server 位置创建数据库文件(MDFLDF)。
  • 该工具可以将 SQL Server 数据库选项 READ_COMMITTED_SNAPSHOT 和 ALLOW_SNAPSHOT_ISOLATION 设置为 ON。
  • 它使用您为 SQL Server 模型数据库定义的默认数据库文件大小,或者可针对 MDF 文件取 500 MB,针对 LDF 文件取 125 MB,两者比较后取其中较大值。
  • 如果选择在名为 sde 的方案中创建地理数据库,则该工具将在 SQL Server 实例中创建经 sde 数据库身份验证的登录帐户、在数据库中创建 sde 用户并将其映射到 sde 登录帐户、在数据库中创建 sde 方案,并授予 sde 用户创建地理数据库以及删除与 SQL Server 实例之间的连接所需的权限。
  • 它会在 SQL Server 实例中创建地理数据库对象。

运行工具或脚本创建地理数据库前,您必须安装和配置 SQL Server 实例。

安装并配置 SQL Server

创建地理数据库前,必须安装 SQL Server 并配置实例。配置实例的方式取决于您的组织的特定需求。但请注意,SQL Server 实例必须使用区分大小写的排序规则。

您或 IT 部门安装完 SQL Server 后,请确保将 SQL Server 实例配置为可接受远程连接;默认情况下,远程连接处于未启用状态。

有关 SQL Server 安装和配置信息,请参考 Microsoft 文档。

安装和配置 SQL Server 后,安装 ArcGIS 和 SQL Server 客户端。

安装客户端

可安装 ArcGIS DesktopDesktop StandardDesktop Advanced)、具有 Geodatabase 扩展模块的 ArcGIS EngineArcGIS Server(企业版),然后运行其中任意一个程序的 Python 脚本来创建地理数据库。如果您想要运行创建企业级地理数据库地理处理工具,而非脚本,请安装 ArcGIS Desktop

注:

您需要一个 ArcGIS Server(企业版)密钥代码文件,以便在下一部分中授权地理数据库。即使不在 ArcGIS Server 计算机上运行 Python 脚本来创建地理数据库,也需安装和授权 ArcGIS Server 才能获取密钥代码文件。可能需要将 ArcGIS Server 计算机中的密钥代码文件复制到可使用创建企业级地理数据库地理处理工具访问的位置。

在大多数情况下,ArcGIS 客户端将安装在不同于 SQL Server 的计算机上。因此,要连接到该数据库,必须在 ArcGIS 客户端计算机上安装受支持的 SQL Server 客户端。请参阅 SQL Server 的 ArcGIS 系统要求,确定应安装哪个版本的 SQL Server 客户端才能连接到您正在使用的 SQL Server 版本。

要连接到 Microsoft Windows 计算机上的 SQL Server,可以从 My EsriMicrosoft 下载中心下载 SQL Server 客户端。要连接到 Linux 计算机上的 SQL Server,请从 Microsoft 下载中心下载 SQL Server 客户端文件。之后请遵照 Microsoft 的说明在客户端计算机上安装 SQL Server 客户端。

请按照这些步骤安装并配置创建地理数据库所需的客户端。如果您没有安装软件的权限,请让 IT 部门执行这些步骤。

  1. 安装要用于创建地理数据库的 ArcGIS 客户端。

    遵循软件安装指南中提供的说明。

  2. 在 ArcGIS 客户端计算机上安装 SQL Server 客户端。

    如果要将 SQL Server 客户端安装在 64 位操作系统上,则请使用 64 位的 SQL Server 客户端可执行文件。这个可执行文件同时安装了 32 位和 64 位客户端,因此既能运行 32 位 ArcGIS 应用程序(如 ArcMap),又能运行 64 位 ArcGIS 应用程序(如 ArcGIS ServerArcGIS Pro)。如果在 64 位操作系统上运行 32 位 SQL Server 客户端,则安装将失败。

现在,您可以创建地理数据库。

创建地理数据库

您可以从 ArcGIS Desktop 中运行创建企业级地理数据库工具或从 ArcGIS DesktopArcGIS ServerArcGIS Engine 客户端中运行 Python 脚本来创建数据库和地理数据库。

运行创建企业级地理数据库工具

如果您有权访问 ArcGIS Desktop,则可运行地理处理工具来创建地理数据库。

请遵照以下步骤使用 ArcGIS Pro 中的创建企业级地理数据库工具创建地理数据库:

  1. 启动 ArcGIS Pro
  2. 打开创建企业级地理数据库工具。

    您可以搜索或浏览到此工具,它位于“数据管理”工具箱的“地理数据库管理”工具集中。

  3. 数据库平台下拉列表中选择 SQL Server
  4. 实例文本框中输入您将要连接的 SQL Server 实例的名称。
  5. 数据库文本框中输入用于存储地理数据库的数据库的名称。

    如果 SQL Server 实例中不存在具有该名称的数据库,则该工具将创建该数据库。如果数据库存在,则该工具将使用它来存储地理数据库。

  6. 以系统管理员身份连接到 SQL Server。可使用作为 SQL Server 中 sysadmin 固定服务器角色成员的经操作系统身份验证的登录帐户,也可以输入 sysadmin 用户的数据库用户名和密码。
    • 要以经操作系统验证的 sysadmin 登录帐户进行登录,请选中操作系统身份验证。您必须使用正确的登录信息登录到 Windows 才能使用此选项。
    • 要以 sysadmin 登录,可以在数据库管理员文本框中输入 sysadmin 用户名,并在数据库管理员密码文本框中输入相应的密码。
  7. 选择将包含地理数据库的方案。
    • 如果想使名为 sde 的用户成为地理数据库管理员,并将地理数据库存储在 sde 用户的方案中,可以选中 Sde 拥有的方案
    • 如果想使 dbo 用户成为地理数据库管理员,并将地理数据库存储在 dbo 方案中,可以取消选中 Sde 拥有的方案

    有关在 sde 或 dbo 方案中存储地理数据库的详细信息,请参见 SQL Server 中地理数据库所有者的比较

  8. 如果选择 sde 拥有的方案,则地理数据库管理员文本框将以 sde 来填充。如果不存在使用该名称的用户,则工具将创建该用户及其对应的方案,并且会向该用户授予创建地理数据库所需的权限。

    如果使用数据库身份验证和 dbo 方案存储地理数据库,可以在地理数据库管理员文本框中输入 SQL Server 实例中 dbo 的用户名。

    如果使用的是操作系统身份验证来连接数据库,则您的当前登录必须在 SQL Server sysadmin 固定服务器角色中才能创建 dbo 方案地理数据库。

  9. 地理数据库管理员密码文本框中输入地理数据库管理员的密码。

    如果数据库中已存在您指定的地理数据库管理员,请确保为现有用户输入正确的密码;此工具不会更改密码。

  10. 要指定授权文件,请浏览到在授权 ArcGIS Server(企业版)时创建的密钥代码文件,并选择该文件。

    此文件将在 Windows 服务器的 \\Program Files\ESRI\License<release#>\sysgen 文件夹和 Linux 服务器的 /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen 中创建。将密钥代码文件复制到可使用创建企业级地理数据库工具访问的位置。如果尚未执行此操作,则立即授权 ArcGIS Server 创建此文件。

  11. 单击运行

如果未指定现有数据库,则在 SQL Server 默认位置中创建数据库和日志文件。将在数据库中创建地理数据库。如果选择 sde 方案地理数据库,则会创建经数据库身份验证的 sde 登录帐户、数据库用户和方案。

将创建地理数据库的相关消息写入 sde_setup.log 文件,该文件是在为运行工具的计算机上的 %TEMP% 变量指定的目录中创建的。如果在创建地理数据库时出现任何问题,可查看此文件以解决这些问题。

接下来,您可创建能够将数据加载到地理数据库中的用户

运行 Python 脚本

您可以通过复制、保存和运行此处提供的脚本在 ArcGIS Desktop(Standard 或 Advanced)、ArcGIS ServerArcGIS Engine(具有 Geodatabase 扩展模块)中创建地理数据库。

  1. 在 ArcGIS 客户端计算机上创建文本文件,然后将以下脚本复制到该文件中。
    """
    Name: create_enterprise_gdb.py
    Description: Provide connection information to a DBMS instance and create an enterprise geodatabase.
    Type  create_enterprise_gdb.py -h or create_enterprise_gdb.py --help for usage
    """
    
    # Import system modules
    import arcpy
    import os
    import optparse
    import sys
    
    
    # Define usage and version
    parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] )
    
    #Define help and options
    parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQL_SERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS:  SQL_SERVER, ORACLE, or POSTGRESQL.")                   
    parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name")
    parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name:  Do not specify for Oracle")
    parser.add_option ("--auth", dest="Account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive):  DATABASE_AUTH, OPERATING_SYSTEM_AUTH.  Default=DATABASE_AUTH")
    parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user")
    parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password")
    parser.add_option ("--schema", dest="Schema_type", type="choice", choices=['SDE_SCHEMA', 'DBO_SCHEMA'], default="SDE_SCHEMA", help="Schema type  applies to geodatabases in SQL Server only. Type SDE_SCHEMA to create geodatabase in SDE schema or type DBO_SCHEMA to create geodatabase in DBO schema. Default=SDE_SCHEMA")
    parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name; Must always be sde for PostgreSQL, sde-schema geodatabases in SQL Server, and sde geodatabase in Oracle")
    parser.add_option ("-p", dest="Gdb_admin_pwd", type="string", default="", help="Geodatabase administrator password")
    parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name; For PostgreSQL, type name of existing tablespace in which to store database. If no tablespace name specified, pg_default is used. For Oracle, type name of existing tablespace, or, if tablespace with specified name does not exist, it will be created and set as the default tablespace for the sde user. If no tablespace name is specified, SDE_TBS tablespace is created and set as sde user default. Tablespace name not supported for SQL Server.")
    parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file; file created when ArcGIS Server Enterprise authorized, and stored in \\Program Files\ESRI\License<release#>\sysgen on Windows or /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen on Linux")
    # Check if value entered for option
    try:
    	(options, args) = parser.parse_args()
    
    	
    	#Check if no system arguments (options) entered
    	if len(sys.argv) == 1:
    		print("%s: error: %s\n" % (sys.argv[0], "No command options given"))
    		parser.print_help()
    		sys.exit(3)
    
    	#Usage parameters for spatial database connection
    	database_type = options.Database_type.upper()
    	instance = options.Instance
    	database = options.Database.lower()	
    	account_authentication = options.Account_authentication.upper()
    	dbms_admin = options.Dbms_admin
    	dbms_admin_pwd = options.Dbms_admin_pwd
    	schema_type = options.Schema_type.upper()
    	gdb_admin = options.Gdb_admin
    	gdb_admin_pwd = options.Gdb_admin_pwd	
    	tablespace = options.Tablespace
    	license = options.Authorization_file
    
    	
    	if( database_type ==""):	
    		print(" \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified."))
    		parser.print_help()
    		sys.exit(3)		
    		
    	if (license == ""):
    		print(" \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified."))
    		parser.print_help()
    		sys.exit(3)			
    	
    	if(database_type == "SQL_SERVER"):
    		if(schema_type == "SDE_SCHEMA" and gdb_admin.lower() != "sde"):
    			print("\n%s: error: %s\n" % (sys.argv[0], "To create SDE schema on SQL Server, geodatabase administrator must be SDE."))
    			sys.exit(3)
    		if (schema_type == "DBO_SCHEMA" and gdb_admin != ""):
    			print("\nWarning: %s\n" % ("Ignoring geodatabase administrator specified when creating DBO schema..."))
    		if( account_authentication == "DATABASE_AUTH" and dbms_admin == ""):
    			print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified with database authentication"))
    			sys.exit(3)
    		if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""):
    			print("\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication..."))
    	else:
    		if (schema_type == "DBO_SCHEMA"):
    			print("\nWarning: %s %s, %s\n" % ("Only SDE schema is supported on", database_type, "switching to SDE schema..." ))
    			
    		if( gdb_admin.lower() == ""):
    			print("\n%s: error: %s\n" % (sys.argv[0], "Geodatabase administrator must be specified."))
    			sys.exit(3)
    
    		if( gdb_admin.lower() != "sde"):
    			if (database_type == "ORACLE"):
    				print("\nGeodatabase admin user is not SDE, creating user schema geodatabase on Oracle...\n")
    			else:
    				print("\n%s: error: %s for %s.\n" % (sys.argv[0], "Geodatabase administrator must be SDE", database_type))
    				sys.exit(3)
    			
    		if( dbms_admin == ""):
    			print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!"))
    			sys.exit(3)
    
    		if (account_authentication == "OPERATING_SYSTEM_AUTH"):
    			print("Warning: %s %s, %s\n" % ("Only database authentication is supported on", database_type, "switching to database authentication..." ))
    
    	# Get the current product license
    	product_license=arcpy.ProductInfo()
    	
    	
    	# Checks required license level
    	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
    		print("\n" + product_license + " license found!" + " Creating an enterprise geodatabase requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license.")
    		sys.exit("Re-authorize ArcGIS before creating enterprise geodatabase.")
    	else:
    		print("\n" + product_license + " license available!  Continuing to create...")
    		arcpy.AddMessage("+++++++++")
    	
    	
    	try:
    		print("Creating enterprise geodatabase...\n")
    		arcpy.CreateEnterpriseGeodatabase_management(database_platform=database_type,instance_name=instance, database_name=database, account_authentication=account_authentication, database_admin=dbms_admin, database_admin_password=dbms_admin_pwd, sde_schema=schema_type, gdb_admin_name=gdb_admin, gdb_admin_password=gdb_admin_pwd, tablespace_name=tablespace, authorization_file=license)
    		for i in range(arcpy.GetMessageCount()):
    			arcpy.AddReturnMessage(i)
    		arcpy.AddMessage("+++++++++\n")
    	except:
    		for i in range(arcpy.GetMessageCount()):
    			arcpy.AddReturnMessage(i)
    			
    #Check if no value entered for option	
    except SystemExit as e:
    	if e.code == 2:
    		parser.usage = ""
    		print("\n")
    		parser.print_help()   
    		parser.exit(2)
  2. .py 扩展名保存该文件。
  3. 运行脚本,同时提供特定于您的站点的选项和信息。

    在以下示例中,运行 create_gdb.py 文件在 porthos\gisprod SQL Server 实例中创建数据库 entgdb。使用数据库身份验证以 sa 用户的身份运行该工具,然后该工具将在 sde 用户的方案中创建地理数据库。默认 ArcGIS Server 位置中指定的密钥代码文件用于授权地理数据库。

    create_gdb.py --DBMS SQL_SERVER -i porthos\gisprod -D entgdb --auth DATABASE_AUTH 
    -U sa -P N0pe3king! --schema SDE_SCHEMA -u sde -p Tgdbst@rtsh3r3 -l '\\Program Files\ESRI\License\sysgen\keycodes'

    在此示例中,以 sysadmin 固定服务器角色成员的登录帐户登录到客户端计算机时,运行同一脚本在 dbo 方案中创建地理数据库:

    create_gdb.py --DBMS SQL_SERVER -i porthos\gisprod -D entgdb --auth OPERATING_SYSTEM_AUTH 
    --schema DBO_SCHEMA -l '\\Program Files\ESRI\License\sysgen\keycodes'
    提示:

    Type -h or --help at the command prompt to get syntax help.

您现已在 SQL Server 中具有一个地理数据库。

将创建地理数据库的相关消息写入 sde_setup.log 文件,该文件是在为运行脚本的计算机上的 %TEMP% 变量指定的目录中创建的。如果在创建地理数据库时出现任何问题,可查看此文件以解决这些问题。

接下来,您可创建能够将数据加载到地理数据库中的用户

SQL Server 管理员创建数据库;地理数据库管理员创建地理数据库

如果创建地理数据库的用户不具有数据库管理员的密码,则数据库管理员可以创建数据库并创建地理数据库管理员的登录帐户、用户和方案。如果要将地理数据库存储在 sde 方案中,数据库管理员可创建 sde 登录帐户、用户和方案。如果要将地理数据库存储在 dbo 方案中,数据库管理员可创建登录帐户和用户,并将用户分配为数据库的所有者。有关地理数据库存储选项上的信息,请参阅 SQL Server 中地理数据库所有者的比较

地理数据库管理员可以以地理数据库管理员的身份连接到数据库,并使用启用企业级地理数据库地理处理工具或 Python 脚本创建地理数据库。

启用企业级地理数据库工具以数据库连接文件作为输入,并创建地理数据库系统表、视图、函数和过程。

安装并配置 SQL Server

地理数据库管理员创建地理数据库前,SQL Server 管理员必须执行以下操作:

  • 安装 SQL Server 并配置实例。配置实例的方式取决于您的组织的特定需求。在继续操作之前,请查看 ArcGIS 系统要求,以确保要使用的数据库管理系统、ArcGIS 和硬件组合能够得到支持。安装完 SQL Server 后,请确保将 SQL Server 实例配置为可接受远程连接;默认情况下,远程连接处于未启用状态。有关 SQL Server 安装和配置信息,请参考 Microsoft 文档。
  • 创建数据库。
  • SQL Server 数据库选项 READ_COMMITTED_SNAPSHOT 和 ALLOW_SNAPSHOT_ISOLATION 设置为 ON。如果 SQL Server 管理员未将这些选项设置为 ON,但是授予地理数据库管理员在数据库中的 ALTER 权限,则启用企业级地理数据库工具会在运行时更改数据库上的这些设置。如果 SQL Server 管理员未对这些选项进行设置,并且地理数据库管理员也没有足够的权限更改它们,则地理数据库的创建将会失败。
  • 添加或创建一个登录帐户,该登录帐户映射到名为 sde 的数据库用户或作为数据库所有者的数据库用户。
  • 如果使用 sde 方案地理数据库,请在数据库中创建一个名为 sde 的方案。将其设置为 sde 用户的默认方案。
  • 如果使用 sde 方案地理数据库,则 sde 用户必须至少具有以下权限:CREATE FUNCTION、CREATE PROCEDURE、CREATE TABLE 和 CREATE VIEW。有关其他权限,请参阅 SQL Server 中地理数据库的权限

安装客户端

地理数据库管理员可安装 ArcGIS DesktopDesktop StandardDesktop Advanced)、具有 Geodatabase 扩展模块的 ArcGIS EngineArcGIS Server,以通过运行 Python 脚本来创建地理数据库。如果您想要运行启用企业级地理数据库地理处理工具,而非脚本,请安装 ArcGIS Desktop

注:

您需要一个 ArcGIS Server(企业版)密钥代码文件,以便在下一部分中授权地理数据库。即使不在 ArcGIS Server 计算机上运行 Python 脚本来创建地理数据库,也必须安装和授权 ArcGIS Server 才能获取密钥代码文件。可能需要将 ArcGIS Server 计算机中的密钥代码文件复制到可使用启用企业级地理数据库地理处理工具访问的位置。

在大多数情况下,ArcGIS 客户端将安装在不同于 SQL Server 的计算机上。因此,要连接到该数据库,必须在 ArcGIS 客户端计算机上安装受支持的 SQL Server 客户端。请参阅 SQL Server 的 ArcGIS 系统要求,确定应安装哪个版本的 SQL Server 客户端才能连接到您正在使用的 SQL Server 版本。

要连接到 Microsoft Windows 计算机上的 SQL Server,可以从 My EsriMicrosoft 下载中心下载 SQL Server 客户端。要连接到 Linux 计算机上的 SQL Server,请从 Microsoft 下载中心下载 SQL Server 客户端文件。之后请遵照 Microsoft 的说明在客户端计算机上安装 SQL Server 客户端。

  1. 安装要用于创建地理数据库的 ArcGIS 客户端。

    遵循软件安装指南中提供的说明。

  2. 在 ArcGIS 客户端计算机上安装 SQL Server 客户端。

    如果将 SQL Server 客户端安装在 64 位操作系统上,则请使用 64 位的 SQL Server 客户端可执行文件。这个可执行文件同时安装了 32 位和 64 位客户端,因此既能运行 32 位 ArcGIS 应用程序(如 ArcMap),又能运行 64 位 ArcGIS 应用程序(如 ArcGIS ServerArcGIS Pro)。如果在 64 位操作系统上运行 32 位 SQL Server 客户端,则运行将失败。

ArcGIS 客户端可连接到数据库并创建地理数据库。为此,请使用下一部分所述方法之一。

创建地理数据库

地理数据库管理员可以在 ArcGIS Desktop(Standard 或 Advanced)中运行启用企业级地理数据库工具,或在 ArcGIS Desktop(Standard 或 Advanced)中、ArcGIS Server 或具有 Geodatabase 扩展模块的 ArcGIS Engine 客户端中运行 Python 脚本以在现有数据库中创建地理数据库。

运行启用企业级地理数据库工具

您可以在 ArcGIS Desktop 中运行启用企业级地理数据库工具以在现有的 SQL Server 数据库中创建地理数据库。

请遵照以下步骤使用 ArcGIS Pro 中的启用企业级地理数据库工具创建地理数据库:

  1. 启动 ArcGIS Pro
  2. 以地理数据库管理员身份连接到 SQL Server 数据库

    确保在数据库连接对话框中保存用户密码。

  3. 打开启用企业级地理数据库工具。
  4. 将新的数据库连接拖动到输入数据库连接字段中。
  5. 浏览至授权 ArcGIS Server 时创建的 ArcGIS Server 授权文件,并将其添加到授权文件文本框中。

    使用向导来授权 ArcGIS Server 之后,密钥代码文件将被写入安装该软件的服务器。密钥代码文件将在 Windows 服务器上的 Program Files\ESRI\License<release>\sysgen 中和 Linux 服务器上的 /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen 中创建。将该文件复制到可使用启用企业级地理数据库工具访问的位置。如果尚未执行此操作,则请授权 ArcGIS Server 来创建此文件。

  6. 单击运行

将在数据库中创建地理数据库。

将创建地理数据库的相关消息写入 sde_setup.log 文件,该文件是在为运行工具的计算机上的 %TEMP% 变量指定的目录中创建的。如果在创建地理数据库时出现任何问题,可查看此文件以解决这些问题。

接下来,数据库管理员可创建能够将数据加载到地理数据库中的用户

运行 Python 脚本

如果想要通过运行 ArcGIS ServerArcGIS Desktop(Standard 或 Advanced)或具有 Geodatabase 扩展模块安装程序的 ArcGIS Engine 上的脚本在 Windows 计算机上创建地理数据库,则可使用此处提供的脚本。

按照以下步骤运行 Python 脚本以在现有 SQL Server 数据库中创建地理数据库:

  1. 在 ArcGIS 客户端计算机上创建文本文件,然后将以下脚本复制到该文件中。

    """
    Name: enable_enterprise_gdb.py
    Description: Provide connection information to an enterprise database
    and enable enterprise geodatabase.
    Type enable_enterprise_gdb.py -h or enable_enterprise_gdb.py --help for usage
    """
    
    # Import system modules
    import arcpy, os, optparse, sys
    
    
    # Define usage and version
    parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] )
    
    #Define help and options
    parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQL_SERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS:  SQL_SERVER, ORACLE, POSTGRESQL, DB2, INFORMIX, or DB2ZOS.")
    parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name")
    parser.add_option ("--auth", dest="account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive):  DATABASE_AUTH, OPERATING_SYSTEM_AUTH.  Default=DATABASE_AUTH")
    parser.add_option ("-u", dest="User", type="string", default="", help="Geodatabase administrator user name")
    parser.add_option ("-p", dest="Password", type="string", default="", help="Geodatabase  administrator password")
    parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name:  Not required for Oracle")
    parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file")
    
    
    # Check if value entered for option
    try:
    	(options, args) = parser.parse_args()
    
    	
    #Check if no system arguments (options) entered
    	if len(sys.argv) == 1:
    		print "%s: error: %s\n" % (sys.argv[0], "No command options given")
    		parser.print_help()
    		sys.exit(3)
    	
    
    	#Usage parameters for spatial database connection
    	database_type = options.Database_type.upper()
    	instance = options.Instance
    	account_authentication = options.account_authentication.upper()
    	username = options.User.lower() 
    	password = options.Password	
    	database = options.Database.lower()
    	license = options.Authorization_file
    
    
    	if( database_type ==""):	
    		print " \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.")
    		parser.print_help()
    		sys.exit(3)		
    		
    	if (license == ""):
    		print " \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")
    		parser.print_help()
    		sys.exit(3)
    
    		
    	# Get the current product license
    	product_license=arcpy.ProductInfo()
    	
    	if (license == ""):
    		print " \n%s: error: %s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")
    		parser.print_help()
    		sys.exit(3)
    	
    	# Checks required license level
    	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
    		print "\n" + product_license + " license found!" + "  Enabling enterprise geodatabase functionality requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license."
    		sys.exit("Re-authorize ArcGIS before enabling an enterprise geodatabase.")
    	else:
    		print "\n" + product_license + " license available!  Continuing to enable..."
    		arcpy.AddMessage("+++++++++")
    	
    	# Local variables
    	instance_temp = instance.replace("\\","_")
    	instance_temp = instance_temp.replace("/","_")
    	instance_temp = instance_temp.replace(":","_")
    	Conn_File_NameT = instance_temp + "_" + database + "_" + username    
    	
    	if os.environ.get("TEMP") == None:
    		temp = "c:\\temp"	
    	else:
    		temp = os.environ.get("TEMP")
    	
    	if os.environ.get("TMP") == None:
    		temp = "/usr/tmp"		
    	else:
    		temp = os.environ.get("TMP")  
    	
    
    	Connection_File_Name = Conn_File_NameT + ".sde"
    	Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde"
    	
    	# Check for the .sde file and delete it if present
    	arcpy.env.overwriteOutput=True
    	if os.path.exists(Connection_File_Name_full_path):
    		os.remove(Connection_File_Name_full_path)
    	
    	print "\nCreating Database Connection File...\n"	
    	# Process: Create Database Connection File...
    	# Usage:  out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true)
    	arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=username, password=password, save_user_pass="TRUE")
            for i in range(arcpy.GetMessageCount()):
    		if "000565" in arcpy.GetMessage(i):   #Check if database connection was successful
    			arcpy.AddReturnMessage(i)
    			arcpy.AddMessage("\n+++++++++")
    			arcpy.AddMessage("Exiting!!")
    			arcpy.AddMessage("+++++++++\n")
    			sys.exit(3)            
    		else:
    			arcpy.AddReturnMessage(i)
    			arcpy.AddMessage("+++++++++\n")
    	
    	
    	# Process: Enable geodatabase...
    	try:
    		print "Enabling Enterprise Geodatabase...\n"
    		arcpy.EnableEnterpriseGeodatabase_management(input_database=Connection_File_Name_full_path, authorization_file=license)
    		for i in range(arcpy.GetMessageCount()):
    			arcpy.AddReturnMessage(i)
    		arcpy.AddMessage("+++++++++\n")
    	except:
    		for i in range(arcpy.GetMessageCount()):
    			arcpy.AddReturnMessage(i)
    			
    	if os.path.exists(Connection_File_Name_full_path):
    		os.remove(Connection_File_Name_full_path)
    			
    #Check if no value entered for option	
    except SystemExit as e:
    	if e.code == 2:
    		parser.usage = ""
    		print "\n"
    		parser.print_help() 
    		parser.exit(2)

  2. .py 扩展名保存该文件。
  3. 运行脚本,同时提供特定于您的站点的选项和信息。

    在以下示例中,将针对实例 ssprod 上的数据库 spdata 运行文件 enable_gdb.py。使用 sde 登录帐户通过密码 Tgdbst@rtsh3r3 进行连接。默认 ArcGIS Server 位置中指定的密钥代码文件用于授权地理数据库。

    enable_gdb.py --DBMS SQL_SERVER -i ssprod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '\\Program Files\ESRI\License\sysgen\keycodes'
    提示:

    Type -h or --help at the command prompt to get syntax help.

您现已在 SQL Server 数据库中具有一个地理数据库。

有关创建地理数据库的日志文件 (GDBCreateGeodatabase<#>.log) 会写入为运行脚本的计算机上的 %TEMP% 变量指定的目录。

接下来,数据库管理员可创建能够将数据加载到地理数据库中的用户