Tengo una base de datos geográfica de ArcSDE (10.3) que está versionada, ya que tenemos varias personas trabajando simultáneamente en los datos. Sin embargo, quiero ejecutar algunos scripts de fondo en SQL Server para actualizar la versión por defecto cuando nadie está trabajando en los datos.
De todos modos, los datos que voy a editar son en realidad una clase de características. No voy a hacer ningún cambio de geometría, sino que sólo voy a cambiar algunos valores de atributos. Sin embargo, este cambio de atributos se basa en una unión a otra tabla SDE que reside dentro de la misma base de datos.
ESRI indica que los cambios realizados desde SQL Server deben hacerse en la tabla VIEW y no en la tabla base real. Sin embargo, cuando ejecuto mi script, me da este error:
Msg 414, Level 16, State 1, Line 6
UPDATE is not allowed because the statement updates view "dbo.MyTable_evw" which participates in a join and has an INSTEAD OF UPDATE trigger.
¿Cómo han sorteado otras personas este problema?
Ejemplo de declaración de actualización que está lanzando el error mencionado anteriormente.
BEGIN TRANSACTION
EXEC set_default
UPDATE [dbo].[MyFeatureClass_evw]
SET [dbo].[MyFeatureClass_evw].[Status] = [dbo].[MySDEDataTable].[Status_2],
FROM [dbo].[MyFeatureClass_evw] INNER JOIN
[dbo].[MySDEDataTable] ON [dbo].[MyFeatureClass_evw].[PrimaryKey] = [dbo].[MySDEDataTable].[PrimeKey]
COMMIT;
El método de @MickyT funciona muy bien. Además, cabe mencionar que también conseguí que el comando MERGE hiciera esta operación también.
MERGE MyFeatureClass_evw as TargetTable
USING MySDEDataTable as SourceTable
ON TargetTable.PrimaryKey = SourceTable.PrimeKey
WHEN MATCHED THEN
UPDATE SET TargetTable.Status = SourceTable.Status_2
;