操作方法

操作方法:创建属性规则以访问不同数据库实例中的要素类

Last Published: June 28, 2024

摘要

在上一篇文章创建属性规则以访问不同数据库中的要素类中,我们探讨了如何创建和注册一个视图,该视图用于访问同一 SQL Server 实例上不同企业级地理数据库中的要素类。 随后使用了该视图来创建属性规则。 本文采取了一种略有不同的方法,即在单独的 SQL 服务器实例上创建视图。 当您没有所需权限,无法查询要在创建属性规则时使用的要素类时,此方法尤其有用。

在本示例中,我们使用 Microsoft SQL Server 尝试访问存储在同一网络上不同实例的 DataLab 地理数据库中的 DataLabOwner 拥有的 FAVORITEFOODANDLOCALE 要素类。 为此,我们必须创建一个数据库链接以访问单独实例上的数据。

过程

创建数据库链接的工作流

  1. 打开 SQL Server Management Studio (SSMS) 并以数据库管理员或数据所有者身份进行连接。
  2. 请按照文章创建链接服务器(SQL Server 数据库引擎)中的说明,在 SQL Server Management Studio 中创建指向目标 SQL Server 实例的链接。
    1. 常规选项卡中,将服务器类型设置为 SQL Server,然后在链接服务器文本框中键入实例的名称(计算机名称)或计算机的 IP 地址。
    2. 安全选项卡中,将连接登录选项设置为使用此安全上下文进行连接,并指定要访问的要素类的数据库管理员或数据所有者的用户名和密码。
    3. 服务器选项选项卡中,将 RPCRPC 输出设置为 True
    4. 通过右键单击链接服务器并选择测试连接来测试连通性。

创建视图以从链接服务器访问要素类

  1. 在 SSMS 中,单击新建查询
  2. 查看并键入以下查询以创建视图:
Use sqlDatabase
Go
Create view DataAdmin.vw_FavoriteFoodandLocale_LS1
as
Select *
from
OPENQUERY([10.150.51.50],
    'Select
        OBJECTID,
        Place,
        Item,
        IsBeverage,
        State,
        Shape,
        GlobalID,
        GDB_GEOMATTR_DATA
    From DataLab.DataLabOwner.FAVORITEFOODANDLOCALE')

 在 SQL 编辑器中创建视图 

在本示例中,sqlDatabase 为实例上的活动数据库,视图的名称为 vw_FavoriteFoodandLocale_LS1,方案所有者为 DataAdmin。 将传递 OPENQUERY 方法来执行直通查询以访问链接服务器 [10.150.51.50] 中的表。

  1. 执行查询以创建数据库视图:
    • 将创建 DataAdmin.vw_FavoriteFoodandLocale_LS1 视图并将其添加至数据库。
    • 接下来,将在 ArcGIS Pro 中访问该视图并将其注册到地理数据库中。
  2. 打开 ArcGIS Pro 工程。
  3. 如有必要,在目录窗格中,右键单击数据库,然后通过建立新建数据库连接连接到正在使用的数据库。
  4. 展开数据库并确认您创建的视图可用。
  5. 目录窗格的数据库中,右键单击视图,然后选择注册到地理数据库
  6. 注册到地理数据库地理处理工具窗格中,设置所需参数,然后运行工具。

随即将该视图注册到地理数据库,现在可以在设置属性规则时使用 Arcade$datastore 函数进行访问,如以下示例和图像所示。

var fnl = FeatureSetByName
    ($datastore,"DATAADMIN.vw_FavoriteFoodandLocale_LS1, ["Place"])
var ffnl = Intersects(fnl, $feature)
var F = First(ffnl)
//var NPharma = NearestCoordinate(Fpharma, $feature)
if (F == null) return {"errorMessage: "Outside the county"}
return F.Place

此属性规则将使用相交视图图层 (DATAADMIN.vw_FavoriteFoodandLocale_LS1) 的地名填充面要素类 (DATAADMIN.Counties) 中的字段 (FnL),如下图所示。

在本文中,我们探讨了在 SQL Server 数据库中创建一个视图,该视图将引用来自不同 SQL Server 实例中另一个数据库的要素类。 我们在以数据所有者身份进行连接时,创建了与目标实例的链接服务器,由此赋予我们访问和查询活动实例中图层的权限。

将视图注册到数据库后,我们就能够在设置属性规则时通过 Arcade 表达式引用该视图,以根据另一个实例中要素类的属性生成信息。

文章 ID: 000032575

获得人工智能支持

使用 Esri Support AI Chatbot 快速解决您的问题。

立即开始聊天

相关信息

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

立即开始聊天

转至下载选项