用户可以从 ArcGIS 连接到数据库以查看、查询和分析其中包含的数据。 您访问的某些数据库可包含地理数据库表、函数和过程,但这不是必须的;您能够从 ArcGIS Pro 连接到任何受支持的数据库并查看数据。
大多数类型的数据库要求在将要连接到数据库的计算机上安装和配置数据库客户端。
数据库连接
当连接到 ArcGIS Pro 中的数据库时,必须提供连接属性。 这些属性有助于 ArcGIS Pro 定位数据库,并提供身份验证信息以允许您访问数据库内容。
注:
- 此帮助页面中的信息不适用于与 SQLite 数据库或 GeoPackage 文件的连接。 有关连接到这些类型的文件的说明,请参阅在 ArcGIS Pro 中使用 SQLite 数据库和 GeoPackage 文件。
- 此处的信息不适用于与云数据仓库的连接。 有关使用数据库连接连接到云数据仓库的信息,请参阅在 ArcGIS Pro 中连接到云数据仓库。
- ArcGIS 支持连接到一组特定的数据库。 要访问 ArcGIS 不直接支持的数据库中的非空间数据,请参阅使用 OLE DB 连接。
身份验证类型
对于大多数支持的数据库和数据库服务产品,共有两个登录选项可用于创建与数据库或企业级地理数据库的连接:数据库身份验证和操作系统身份验证。
对于配置为使用 Microsoft Azure Active Directory 的 Microsoft Azure SQL Managed Instance 和 Microsoft Azure SQL Database 实例,可以使用其他 Azure Active Directory 身份验证选项。
数据库身份验证
如果选择数据库身份验证,则必须分别在用户名和密码文本框中提供有效的数据库用户名和密码。 用户名最多可以是 30 个字符。
注:
在 ArcGIS 外部,您可以在 Microsoft SQL Server 中创建包含特殊字符的用户名。 使用时,必须将这些用户名用分隔符分隔开来。 当用户名传递到 SQL Server 时,ArcGIS 会自动为其添加分隔符;您无需在用户名中添加分隔符。 例如,如果您的用户名是 map.user,则在用户名文本框中输入 map.user,而并非 "map.user"。 有关常规标识符和分隔标识符的详细信息,请参阅 SQL Server 文档。
如果不希望将登录信息保存为连接的一部分,请取消选中保存用户名和密码;这样做有助于维护数据库的安全性。 但是,如果执行此操作,则系统会在每次连接时提示您提供用户名和密码。 另请注意,如果您使用该连接文件为 ArcGIS 服务提供数据库或地理数据库的访问权限,或想要使用目录窗格搜索来定位通过此连接文件访问的数据,则必须选中保存用户名和密码。
操作系统身份验证
如果选择操作系统身份验证,则不需要输入用户名和密码,系统会通过用于登录到操作系统的用户名和密码建立连接。 如果操作系统使用的登录信息不能用作数据库的登录信息,连接将失败。 目前,在连接到 Microsoft SQL Server、Oracle、IBM Db2 和 PostgreSQL 时,ArcGIS 支持操作系统身份验证。
注:
- 安全支持提供程序接口 (SSPI) 和 轻量级目录访问协议 (LDAP) 适用于使用 PostgreSQL 的操作系统身份验证。
- 在 Oracle 中使用操作系统身份验证时,操作系统登录帐户将使用 os_authent_prefix 字符串(默认情况下为 OPS$)作为前缀,并存储在数据库中的 USERNAME 表中。 连接到地理数据库时,用户名允许的最大字符数为 30。 在这些特殊情况下,ArcGIS 会将引号放置在用户名两侧以将其传递到数据库。 引号计入 30 个字符内。
Azure Active Directory 选项
连接到 Azure SQL Database 或 SQL Managed Instance 时,可以使用以下 Azure Active Directory 身份验证选项之一:
- Azure Active Directory - Universal with multi-factor authentication (MFA) - 使用数据库连接对话框中的 Azure Active Directory - Universal with MFA 选项连接时,必须提供 Azure Active Directory 用户名以及在文本消息、电子邮件或 MFA 设备中发送给您的代码,以完成身份验证过程。 不需要在数据库连接对话框中输入任何密码。 根据网络和身份验证协议的配置方式,您可能还可以使用指纹扫描进行身份验证。
注:
即使您选择保存用户名选项,如果您将数据库连接文件 (.sde) 与其他用户共享,则将使用该用户的登录帐户建立连接,而不是之前在连接文件中保存的登录帐户。
无法将此数据库连接注册到 ArcGIS Server 站点。
- Azure Active Directory - 密码 - 使用数据库连接对话框中的 Azure Active Directory - 密码选项进行连接时,必须分别在用户名和密码文本框中提供有效的 Azure Active Directory 用户名和密码。 用户名最多可以是 30 个字符。
如果您要将此数据库连接注册到 ArcGIS Server 站点,则必须将用户名和密码与数据库连接一起保存。
数据库平台和属性
从数据库平台下拉列表中选择的值表示将连接的数据库的类型。 对话框中的可用项和您需要提供的用于建立连接的信息取决于您选择的数据库平台类型。
以下几部分介绍在什么情况下选择各个数据库平台以及建立连接需要额外提供哪些信息。
Dameng
- 数据库平台
从数据库平台下拉列表中选择 Dameng 以连接 Dameng 数据库。
- 数据源
连接到 Dameng 时,请在数据源文本框中提供 Dameng 安装所在服务器的名称。
- 身份验证类型
选择数据库身份验证并提供有效的用户名和密码进行连接。 不支持操作系统身份验证。
Db2
- 数据库平台
从数据库平台下拉列表中选择 DB2,以连接到 IBM Db2 数据库,或连接到 Linux、UNIX 或 Windows 服务器上的 Db2 数据库中的地理数据库。
- 数据源
连接到 Db2 时,必须在数据源文本框中提供已编目的 Db2 数据库名称。 如果未编目数据库,则可改用以下语法进行连接:
HostName=<主机>;Port=<端口号>;Database=<数据库名称>;
指定适合站点的信息。 例如,如果 Db2 数据库位于服务器 cube 上,通过 DBMS 端口 50000 进行通信,并且数据库名称是 spdata,则连接字符串如下所示:
HostName=cube;Port=50000;Database=spdata;
此类连接字符串称为非 DSN 连接。
- 身份验证类型
选择数据库身份验证并提供有效的用户名和密码,或选择使用操作系统身份验证进行连接。
Oracle
- 数据库平台
从数据库平台下拉列表中选择 Oracle,以连接到 Oracle 数据库,或直接连接到 Oracle 数据库中的地理数据库。
- 实例
当连接到 Oracle 数据库时,在实例文本框中键入 Oracle TNS 名称,或提供以下 Oracle Easy Connect 字符串之一:
- Oracle 服务器名称/Oracle 服务名称或 ID
例如,如果 Oracle 安装在 myserver 上,Oracle 服务名称是 myosvc,则输入以下信息:
myserver/myosvc
- Oracle 服务器名称:Oracle 端口号/Oracle 服务名称或 ID
在本例中,Oracle 安装在 myserver 上,监听端口为 60000,且 myoservice 为 Oracle 服务名称:
myserver:60000/myoservice - Oracle 服务器的 URL
上一示例中同一个实例的 URL 如下:
//myserver:60000/myoservice - Oracle 服务器的名称(如果服务器上的 Oracle 监听器配置为指向默认实例,则您可以使用此名称)。
- Oracle 服务器 IP 地址/Oracle 服务名称或 ID
例如,如果服务器地址是 10:10:10:10,Oracle 服务名称是 orasvc,则输入 10:10:10:10/orasvc。
对于 IPV6 地址,将地址置于方括号中,例如,[4000:vu5:0:0:f666:h191:77f5:i2rs]/orasvc。
- Oracle 服务器 IP 地址:Oracle 端口号/Oracle 服务名称或 ID
在本例中,IP 地址是 10:20:30:40,端口是 59999,Oracle 服务是 myomy1:10:20:30:40:59999/myomy1。
对于相同端口和服务的 IPV6 地址,则输入信息如下所示:[6543:eo4:0:1:f587:l249:12f9:w3ud]:59999/myomy110:20:30:40:59999/myomy1。
请确保 Oracle 实例已配置为允许使用 Easy Connect。 如果已安装完整的 Oracle 客户端,但想使用 Easy Connect 语法进行连接,请确保客户端上的 sqlnet.ora 文件已组态为允许使用 Easy Connect,且 Oracle 服务器已组态为允许 Easy Connect 语法。 还需要注意的是,如果 Oracle 实例并非监听默认的 Oracle 端口号,则必须使用包括端口号的连接语法。
要连接到 Amazon Relational Database Service (RDS) for Oracle 实例,以 <database_instance_identifier>.<region_id>.rds.amazonaws.com 格式提供实例名称。 例如,如果在 us-west-2 Amazon Web Services 区域中使用标识符 ords.id123 创建了实例,则在实例文本框中键入 ords.id123.us-west-2.rds.amazonaws.com。
要连接到 Oracle Autonomous Database,提供 NET 服务名称。 例如,要使用 NET 服务名称 myoatp_medium 进行连接,在实例文本框中键入 myoatp_medium。
- Oracle 服务器名称/Oracle 服务名称或 ID
- 身份验证类型
选择数据库身份验证并提供有效的用户名和密码,或选择使用操作系统身份验证进行连接。
PostgreSQL
连接到 PostgreSQL 时,必须指定实例和数据库。
- 数据库平台
从数据库平台下拉列表选择 PostgreSQL,以连接到 PostgreSQL 数据库、受支持的 PostgreSQL 数据库服务实例,或任一数据库中的地理数据库。
- 实例
实例是安装 PostgreSQL 的服务器的名称或 IP 地址,或 PostgreSQL 数据库即服务实例的 URL。
示例包括以下内容:
- 如果 PostgreSQL 数据库集群位于名为 ficus 的服务器上,请在实例文本框中输入 ficus。
- 如果 PostgreSQL 数据库集群监听的不是默认端口 (5432),请将端口号包括在实例内。 例如,如果 PostgreSQL 安装在名为 mamabear 的服务器上,且监听端口 49200,请在实例文本框中输入 mamabear,49200。
- 要使用 IPV6 地址访问已安装 PostgreSQL 的服务器,请将输入的地址包含在括号内。 例如,如果服务器的 IPV6 地址是 1111:aa1:0:1:f111:a222:33f3:b4bb,请在实例文本框中输入 [1111:aa1:0:1:f111:a222:33f3:b4bb]。
- 对于 Amazon Aurora (PostgreSQL-compatible edition) 或 Amazon RDS for PostgreSQL 实例,以 <database_instance_identifier>.<region_id>.rds.amazonaws.com 格式提供实例名称。 例如,如果在 us-east-1 Amazon Web Services 区域中使用标识符 mypgrdsdb 创建了实例,则在实例文本框中键入 mypgrdsdb.us-east-1.rds.amazonaws.com。
- 对于 Google Cloud SQL for PostgreSQL 实例,在实例文本框中键入实例的公共 IP 地址。
- 对于 Microsoft Azure Cosmos DB for PostgreSQL 实例,连接字符串采用 c.<cluster_name>.postgres.database.azure.com 格式。 例如,如果您在创建集群时已将其命名为 allmydata,在实例文本框中输入 c.allmydata.postgres.database.azure.com。
- 对于 Microsoft Azure Database for PostgreSQL 实例,实例名称采用 <server_name>.postgres.database.azure.com 格式。 例如,如果您在创建服务器时已将其命名为 spatialdata,在实例文本框中输入 spatialdata.postgres.database.azure.com。
- 身份验证类型
选择数据库身份验证并提供有效的用户名和密码,或选择使用操作系统身份验证进行连接。
- 数据库
数据库是想要连接到的 PostgreSQL 数据库集群中特定数据库的名称。 用户可以在数据库文本框中输入数据库名称,也可以从下拉列表中选择数据库。 数据库名称限制为 31 个字符。
SAP HANA
- 数据库平台
在数据库平台下拉列表中选择 SAP HANA 以连接到 SAP HANA 数据库。
- 数据源
对于在服务器上安装的 SAP HANA,在数据源文本框中指定 ODBC 数据源名称。
要连接到 SAP HANA Cloud,以 <database_identifier>.hana.<region_id>.hanacloud.ondemand.com port <port number> 格式提供连接字符串和端口号。 例如,如果数据库 ID 为 72294abc-0d16-41e5-fg77-h6088532i24j,实例在区域 prod-us10 中运行并通过端口 443 进行通信,则在数据源文本框中键入 72294abc-0d16-41e5-fg77-h6088532i24j.hana.prod-us10.hanacloud.ondemand.com port 443。
- 身份验证类型
选择数据库身份验证并提供有效的用户名和密码进行连接。 不支持操作系统身份验证。
SQL Server
- 数据库平台
从数据库平台下拉列表中选择 SQL Server,以连接到 Microsoft SQL Server 中的数据库、SQL Server 数据库服务实例,或任一数据库中的地理数据库。
- 实例
该实例为 SQL Server 或数据库服务实例的名称。
示例包括以下内容:
- 对于 SQL Server 指定实例 terra\gis,在实例文本框中键入 terra\gis。
- 如果您使用默认 SQL Server 实例,则可在实例文本框中指定实例名称或服务器的 IP 地址。 如果指定 IPV6 地址,则要用括号将地址括起来。 例如,如果服务器的 IPV6 地址是 2000:ab1:0:2:f333:c432:55f6:d7zz,请在实例文本框输入 [2000:ab1:0:2:f333:c432:55f6:d7zz]。
- 如果 SQL Server 数据库正在监听的不是默认端口 (1433),请将端口号包含在实例内。 例如,如果 SQL Server 实例名为 basset\spatial,且正在监听端口 61000,请在实例文本框中输入 basset\spatial,61000。
- 对于 Amazon RDS for SQL Server 实例,实例将采用 <database_instance_identifier>.<region_id>.rds.amazonaws.com 格式。
- 对于 Google Cloud SQL for SQL Server 实例,在实例文本框中键入实例的公共 IP 地址。
- 对于 Microsoft Azure SQL Managed Instance 或 Microsoft Azure SQL Database 实例,在实例文本框中提供服务器名称。 例如,如果服务器名称为 cloudy4u.dbid123.database.windows.net,则在实例文本框中键入 cloudy4u.dbid123.database.windows.net。
如果 SQL Server 实例使用故障转移集群,可以向实例字符串添加条件以利用冗余实例。
可以将附加条件追加到实例名称以请求加密连接到 SQL Server 实例。
- 身份验证类型
选择适用于要连接到的数据库的身份验证类型。
- 数据库
数据库是想要连接到 SQL Server 实例中特定数据库的名称。 用户可以在数据库文本框中输入数据库名称,也可以从下拉列表中选择数据库。 连接到数据库即服务时,必须在数据库文本框中输入名称。
连接到 SQL Server 实例时,数据库名称为可选项,但只有在您想要连接到的数据库已指定为 SQL Server 实例中的默认数据库时才不提供数据库名称。 连接到数据库即服务时,需要填写数据库名称。
Teradata Vantage
- 数据库平台
从数据库平台下拉列表中选择 Teradata 来连接到 Teradata Vantage 中的数据库。
- 数据源
在数据源文本框中提供 ODBC 数据源名称。
如果尚未配置 ODBC 数据源名称,则可以 dbcName=<IP 地址> 的格式来提供 Teradata 服务器的 IP 地址。 例如,如果服务器的 IPV4 地址为 200.30.200.10,则键入 dbcName=200.30.200.10。 如果服务器具有 IPV6 地址,则要用括号将地址括起来。 例如,如果服务器的 IPV6 地址为 3020:12z3:y4xw:5099:0:v678:u111:ts22,则键入 dbcName=[3020:12z3:y4xw:5099:0:v678:u111:ts22]。
- 身份验证类型
选择数据库身份验证并提供有效的用户名和密码进行连接。 不支持操作系统身份验证。