CÓMO

Crear reglas de atributos para acceder a clases de entidad en una instancia de base de datos diferente

Last Published: June 28, 2024

Resumen

En el artículo anterior sobre la creación de reglas de atributos para acceder a clases de entidades en una base de datos diferente, hemos explorado la creación y el registro de una vista que accede a una clase de entidad en una geodatabase corporativa diferente en la misma instancia de SQL Server. Posteriormente, la vista se utilizó para crear una regla de atributos. Este artículo adopta un enfoque ligeramente diferente al crear la vista en una instancia separada de SQL Server. Esto es muy útil cuando no tiene los permisos necesarios para consultar la clase de entidad que desea usar en la creación de su regla de atributos.

En este ejemplo, utilizando Microsoft SQL Server, intentamos acceder a la clase de entidad FAVORITEFOODANDLOCALE propiedad de DataLabOwner almacenada en la base de datos geográficos DataLab en una instancia diferente, en la misma red. Para lograrlo, debemos crear un vínculo de base de datos para acceder a los datos de la instancia independiente.

Procedimiento

Flujo de trabajo para crear un vínculo de base de datos

  1. Abra SQL Server Management Studio (SSMS) y conéctese como administrador de base de datos o propietario de datos.
  2. Siga las instrucciones del artículo Crear servidores vinculados (Motor de base de datos de SQL Server) en SQL Server Management Studio para crear un vínculo a la instancia de SQL Server de destino.
    1. En la pestaña General, establezca el Tipo de servidor en SQL Server y, en el cuadro de texto Servidor vinculado, escriba el nombre de la instancia (nombre del equipo) o la dirección IP del equipo.
    2. En la pestaña Seguridad, configure la opción de inicio de sesión de conexión en Realizar con este contexto de seguridad y especifique el nombre de usuario y la contraseña del administrador de bases de datos o del propietario de datos de la clase de entidad a la que está intentando acceder.
    3. En la pestaña Opciones del servidor, establezca RPC y RPC Out en True.
    4. Pruebe la conectividad haciendo clic con el botón derecho en Servidor vinculado y seleccione Probar conexión.

Crear una vista para acceder a la clase de entidad desde el servidor vinculado

  1. En SSMS, haga clic en Nueva consulta
  2. Revise y escriba la siguiente consulta para crear una vista:
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')

 Crear la vista en un editor SQL 

En este ejemplo, sqlDatabase es la base de datos activa en mi instancia y el nombre de la vista es vw_FavoriteFoodandLocale_LS1 con el propietario del esquema como DataAdmin. Se está pasando el método OPENQUERY para permitirnos ejecutar una consulta de paso a las tablas de acceso en el servidor vinculado [10.150.51.50].

  1. Ejecute la consulta para crear la vista de la base de datos:
    • Se crea la vista DataAdmin.vw_FavoriteFoodandLocale_LS1 y se agrega a la base de datos.
    • A continuación, accederemos a la vista en ArcGIS Pro y regístrela en la geodatabase:
  2. Abra su proyecto de ArcGIS Pro.
  3. En el panel Catálogo, si es necesario, haga clic con el botón derecho en Bases de datos y conéctese a la base de datos en la que está trabajando estableciendo una Nueva conexión de base de datos.
  4. Expanda la base de datos y confirme que la vista que creó está disponible.
  5. En el panel Catálogo, en la base de datos, haga clic con el botón derecho en la vista y elija Registrar con geodatabase.
  6. En el panel de la herramienta de geoprocesamiento Registrar con geodatabase, establezca los parámetros necesarios y ejecute la herramienta.

La vista se registra en la base de datos geográficos y se puede acceder a ella mediante Arcade con la función $datastore al configurar una Regla de atributos, como se muestra en el ejemplo y la imagen siguientes.

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

Esta Regla de atributos rellena un campo (FnL) en una clase de rasgo poligonal (DATAADMIN.Counties) con el topónimo de una capa de vista (DATAADMIN.vw_FavoriteFoodandLocale_LS1) que se interseca, como se muestra en la imagen siguiente.

En este artículo, hemos explorado la creación de una vista en la base de datos SQL Server que hace referencia a una clase de entidad de otra base de datos en una instancia diferente de SQL Server. Hemos creado un servidor vinculado a la instancia de destino mientras nos conectábamos como propietarios de los datos, lo que nos dio permiso para acceder y consultar la capa en nuestra instancia activa.

Después de registrar la vista en la base de datos, pudimos hacer referencia a la vista a través de una expresión de Arcade al configurar una regla de atributos para generar información basada en los atributos de la clase de entidad en la otra instancia.

Id. de artículo: 000032575

Obtenga soporte con IA

Resuelva su problema rápidamente con el chatbot de inteligencia artificial de soporte de Esri.

Empieza a chatear ahora

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Empieza a chatear ahora

Ir a opciones de descarga