在 Standard 或 Advanced 许可等级下可用。
在 Microsoft SQL Server 中创建地理数据库的方式取决于您站点的情况。请按照适用于您组织的情景的说明进行操作。
您是 SQL Server 和地理数据库管理员
如果您行使数据库管理员和地理数据库管理员的角色,并知晓两个登录帐户的密码,则可以使用创建企业级地理数据库地理处理工具或 Python 脚本在 SQL Server 中创建地理数据库。
创建企业级地理数据库工具可令您轻松设置地理数据库,因为此工具可创建数据库对象并授予您所需的权限。要达到此目的,应使用特定的默认设置。下面介绍了创建企业级地理数据库工具的用途和所使用的设置:
- 该工具可在服务器上的默认 SQL Server 位置创建数据库文件(MDF 和 LDF)。
- 该数据库文件大小可以是您为 SQL Server 模型定义的值,,或者是对于 MDF 文件取 500 MB,对于 LDF 文件取 125 MB,两者比较后取其中较大值。
- 如果选择在名为 sde 的方案中创建地理数据库,则该工具将在 SQL Server 实例中创建经 SQL Server 身份验证的 sde 登录帐户、在数据库中创建 sde 用户并将其映射到 sde 登录帐户、在数据库中创建 sde 方案,并授予 sde 用户创建地理数据库以及删除与 SQL Server 实例之间的连接所需的权限。
- 该工具可创建地理数据库。
运行工具或脚本创建地理数据库前,您必须设置 SQL Server 实例。
设置 SQL Server
创建地理数据库前,必须安装 SQL Server 并配置实例。配置实例的方式取决于您的组织的特定需求。但请注意,SQL Server 实例必须使用区分大小写的排序规则。
建立地理数据库之前,请查看 ArcGIS 系统要求,以确保要使用的数据库管理系统、ArcGIS 和硬件组合能得到支持。安装完 SQL Server 后,请确保将 SQL Server 实例配置为可接受远程连接;默认情况下,远程连接处于未启用状态。
有关 SQL Server 安装和配置的信息,请参阅 Microsoft 文档。
安装和配置完 SQL Server 后,请安装 ArcGIS 和 SQL Server 客户端。
配置 ArcGIS 客户端
您可从 ArcGIS for Desktop(Standard 或 Advanced)、具有 Geodatabase Update 扩展模块的 ArcGIS Engine Runtime 或 ArcGIS for Server(Standard 或 Advanced)中运行 Python 脚本来创建地理数据库。如果您想要运行创建企业级地理数据库地理处理工具,而不运行脚本,请使用 ArcGIS for Desktop。
在大多数情况下,ArcGIS 客户端将安装在不同于 SQL Server 的计算机上。因此,要连接到 SQL Server 数据库,必须在 ArcGIS 客户端计算机上安装受支持的 SQL Server Native Client。请参阅 Microsoft 文档,确定应安装哪个版本的 SQL Server Native Client 来连接到当前所用版本的 SQL Server。
您可以从 My Esri 或 Microsoft 下载中心下载 SQL Server Native Client。之后请遵照 Microsoft 的说明在客户端计算机上安装 SQL Server Native Client。
- 安装要用于创建地理数据库的 ArcGIS 客户端。
遵循软件安装指南中提供的说明。
- 在 ArcGIS 客户端计算机上安装 SQL Server 客户端。
如果要将 SQL Server native client 安装在 64 位操作系统上,则请使用 64 位的 SQL Server native client 可执行文件。这个可执行文件同时安装了 32 位和 64 位客户端,因此既能运行 32 位应用程序又能运行 64 位应用程序。如果在 64 位操作系统上运行 32 位 SQL Server native client,则无法正常运行。
现在,您可以创建地理数据库。
创建地理数据库
您可以从 ArcGIS for Desktop 中运行创建企业级地理数据库工具或从 ArcGIS for Desktop、ArcGIS for Server 或 ArcGIS Engine 客户端中运行 Python 脚本来创建数据库和地理数据库。
运行创建企业级地理数据库工具
如果您有权访问 ArcGIS for Desktop,则可运行地理处理工具来创建地理数据库。
- 启动 ArcMap 或 ArcCatalog。
- 打开创建企业级地理数据库工具。
您可以搜索或浏览到此工具,它位于“数据管理”工具箱的“地理数据库管理”工具集中。
- 从数据库平台下拉列表中选择 SQL Server。
- 在实例文本框中输入您将要连接的 SQL Server 实例的名称。
- 在数据库文本框中输入用于存储地理数据库的数据库的名称。
如果 SQL Server 实例中尚不存在该名称的数据库,则会自动创建该数据库。如果已经存在,则会使用您所指定的数据库存储地理数据库。
-
以系统管理员身份连接到 SQL Server。要完成此步骤,可以使用作为 SQL Server 中 sysadmin 固定服务器角色成员的操作系统身份验证登录,也可以输入 sysadmin 用户的数据库用户名和密码。
- 要以 sysadmin 操作系统身份验证登录,请选中操作系统身份验证。您必须使用正确的登录信息登录到 Windows 才能使用此选项。
- 要以 sysadmin 登录,可以在数据库管理员文本框中输入 sysadmin 用户名,并在数据库管理员密码文本框中输入相应的密码。
- 选择将包含地理数据库的方案:
- 如果想使名为 sde 的用户成为地理数据库管理员,并将地理数据库存储在 sde 用户的方案中,可以选中 Sde 拥有的方案。
- 如果想要 dbo 用户成为地理数据库管理员并将地理数据库存储在 dbo 方案中,可以取消选中 Sde 拥有的方案。
有关在 sde 或 dbo 方案中存储地理数据库的详细信息,请参见 SQL Server 中地理数据库所有者的比较。
- 在地理数据库管理员密码文本框中输入地理数据库管理员的密码。
如果数据库中已存在您指定的地理数据库管理员,请确保为现有用户输入正确的密码;此工具不会更改密码。
- 要指定授权文件,请浏览到在授权 ArcGIS for Server Enterprise 时创建的密钥代码文件,并选择该文件。
此文件将写入 Windows 服务器的 \\Program Files\ESRI\License<release#>\sysgen 文件夹中。如果尚未执行此操作,则立即授权 ArcGIS for Server 创建此文件。
- 单击确定以运行工具。
如果选择 sde 拥有的方案,则地理数据库管理员文本框将以 sde 来填充。如果尚不存在使用该名称的用户,则将创建该用户及其对应的方案,并且会向该用户授予创建地理数据库所需的权限。
如果使用的是数据库身份验证和 dbo 方案存储地理数据库,可以在地理数据库管理员文本框中输入 SQL Server 实例中 dbo 的用户名。
如果使用的是操作系统身份验证来连接数据库,则您的当前登录必须在 SQL Server sysadmin 固定服务器角色中才能创建 dbo 方案地理数据库。
如果未指定现有数据库,则在 SQL Server 默认位置中创建数据库和日志文件。将在数据库中创建地理数据库。如果选择 sde 方案地理数据库,则会创建经 SQL Server 验证的 sde 登录帐户、数据库用户和方案。
有关地理数据库创建过程的日志文件 (GDBCreateGeodatabase<#>.log) 会写入为运行工具的计算机上的 %TEMP% 变量指定的目录中。如果在运行工具时出现任何问题,可查看此日志文件以解决这些问题。
接下来,您可创建能够将数据加载到地理数据库中的用户。
运行 Python 脚本
您可以复制、保存和运行此处提供的脚本以在 ArcGIS for Desktop(Standard 或 Advanced)、ArcGIS for Server(Standard 或 Advanced)或 ArcGIS Runtime(具有 Geodatabase Update 扩展模块)中创建地理数据库。
-
在 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=['SQLSERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS: SQLSERVER, 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 master 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 for 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 == "SQLSERVER"): database_type = "SQL_SERVER" 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 for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for 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)
- 以 .py 扩展名保存该文件。
- 运行脚本,同时提供特定于您的站点的选项和信息。
在以下示例中,运行 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\License10.3\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\License10.3\sysgen\keycodes
您现已在 SQL Server 中具有一个地理数据库。
有关创建地理数据库的日志文件 (GDBCreateGeodatabase<#>.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 文档。
- 创建数据库。
- 添加或创建一个登录帐户,该登录帐户映射到名为 sde 的数据库用户或作为数据库所有者的数据库用户。
- 如果使用 sde 方案地理数据库,则在数据库中创建名为 sde 的方案。将该方案设置为 sde 用户的默认方案。
- 如果使用 sde 方案地理数据库,则 sde 用户必须至少具有以下权限:CREATE FUNCTION、CREATE PROCEDURE、CREATE TABLE 和 CREATE VIEW。有关其他权限,请参阅 SQL Server 的权限。
配置 ArcGIS 客户端
地理数据库管理员可以从 ArcGIS for Desktop(Standard 或 Advanced)、具有 Geodatabase Update 扩展模块的 ArcGIS Engine Runtime 或 ArcGIS for Server(Standard 或 Advanced)中运行 Python 脚本来创建地理数据库。如果您想要运行启用企业级地理数据库地理处理工具,而并非脚本,则使用 ArcGIS for Desktop。
在大多数情况下,ArcGIS 客户端将安装在不同于 SQL Server 的计算机上。因此,要连接到 SQL Server 数据库,必须在 ArcGIS 客户端计算机上安装受支持的 SQL Server Native Client。请参阅 Microsoft 文档,确定应安装哪个版本的 SQL Server Native Client 来连接到当前所用版本的 SQL Server。
您可以从 My Esri 或 Microsoft 下载中心下载 SQL Server Native Client。之后请遵照 Microsoft 的说明在客户端计算机上安装 SQL Server Native Client。
- 安装要用于创建地理数据库的 ArcGIS 客户端。
遵循软件安装指南中提供的说明。
- 在 ArcGIS 客户端计算机上安装 SQL Server 客户端。
如果要将 SQL Server native client 安装在 64 位操作系统上,则请使用 64 位的 SQL Server native client 可执行文件。这个可执行文件同时安装了 32 位和 64 位客户端,因此既能运行 32 位应用程序又能运行 64 位应用程序。如果在 64 位操作系统上运行 32 位 SQL Server native client,则无法正常运行。
ArcGIS 客户端已准备好连接到数据库并创建地理数据库。使用下一部分所述方法之一创建地理数据库。
创建地理数据库
地理数据库管理员可以从 ArcGIS for Desktop 中运行启用企业级地理数据库工具,或从 ArcGIS for Desktop、ArcGIS for Server 或 ArcGIS Engine 客户端中运行 Python 脚本在现有数据库中创建地理数据库。
运行启用企业级地理数据库工具
可以从 ArcGIS for Desktop 中运行启用企业级地理数据库工具在现有 SQL Server 数据库中创建地理数据库。
- 启动 ArcMap 或 ArcCatalog。
- 以地理数据库管理员的身份从目录树中连接到 SQL Server 数据库。
务必在数据库连接对话框上保存用户密码。
- 右键单击数据库连接,然后单击启用地理数据库。
将打开启用企业级地理数据库工具,并且使用连接文件的名称和位置填充输入数据库连接字段。
- 浏览至授权 ArcGIS for Server 时创建的 ArcGIS for Server 授权文件,并将其添加到授权文件文本框中。
使用向导来授权 ArcGIS for Server 之后,密钥代码文件将被写入安装该软件的服务器。如果在 Linux 计算机上授权 ArcGIS for Server,则密钥代码文件在 /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen 中创建。如果在 Windows 服务器上进行授权,则文件在 Program Files\ESRI\License<release>\sysgen 中创建。如果尚未执行此操作,则授权 ArcGIS for Server 创建此文件。
- 单击确定以运行工具。
将在数据库中创建地理数据库。
有关地理数据库创建过程的日志文件 (GDBCreateGeodatabase<#>.log) 会写入为运行工具的计算机上的 %TEMP% 变量指定的目录中。如果在运行工具时出现任何问题,可查看此日志文件以解决这些问题。
接下来,您可创建能够将数据加载到地理数据库中的用户。
运行 Python 脚本
如果想要运行来自 ArcGIS for Server、ArcGIS for Desktop 的脚本或通过安装在 Windows 计算机上的 ArcGIS Engine 安装程序来创建地理数据库,则可使用此处提供的脚本。
按照以下步骤运行 Python 脚本在现有 SQL Server 数据库中创建地理数据库:
- 在 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 Author: Esri """ # 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=['SQLSERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS: SQLSERVER, 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) if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" # 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 for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for 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)
- 以 .py 扩展名保存该文件。
- 运行脚本,同时提供特定于您的站点的选项和信息。
在以下示例中,将针对实例 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\License10.3\sysgen\keycodes
您现已在 SQL Server 数据库中具有一个地理数据库。
有关创建地理数据库的日志文件 (GDBCreateGeodatabase<#>.log) 会写入运行此脚本的计算机上为 %TEMP% 变量所指定的目录。
接下来,您可创建能够将数据加载到地理数据库中的用户。