MSSQL 2014: no se pudo calcular la tabla única

Microsoft.SQLServer.2014.Unique_table_computation_failed_1_5_Rule (Rule)

Las tablas únicas las usan los controladores cliente de las base de datos, como el controlador de Microsoft Access para SQL Server, para generar consultas actualizables. Para una instrucción SELECT determinada, la tabla única identifica la tabla cuyos valores de fila aparecen como máximo una vez en el conjunto de resultados. Al volver a seleccionar una fila del conjunto de resultados, los valores de las columnas de clave de la tabla única son suficientes para identificar la fila. Este error se genera cuando el servidor no puede calcular la tabla única.

Knowledge Base article:

Resumen

Las tablas únicas las usan los controladores cliente de las base de datos, como el controlador de Microsoft Access para SQL Server, para generar consultas actualizables. Para una instrucción SELECT determinada, la tabla única identifica la tabla cuyos valores de fila aparecen como máximo una vez en el conjunto de resultados. Al volver a seleccionar una fila del conjunto de resultados, los valores de las columnas de clave de la tabla única son suficientes para identificar la fila. Este error se genera cuando el servidor no puede calcular la tabla única.

Causas

Este error se puede generar cuando la consulta SELECT tiene los agregados UNION, GROUP BY, ROLL UP u otros. Las tablas únicas no se definen para estos casos.

Soluciones

Vuelva a escribir la consulta, evitando las construcciones que impiden el cálculo de la tabla única. En la mayoría de los escenarios de error, el conjunto de resultados actualizable no se puede implementar.

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Habilitado

Habilita o deshabilita el flujo de trabajo.

Prioridad

Define la prioridad de la alerta.

1

Gravedad

Define la gravedad de la alerta.

2

Element properties:

TargetMicrosoft.SQLServer.2014.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID16959
Event Source$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2014: no se pudo calcular la tabla única
{0}
Event LogApplication
CommentMom2014ID='{E8827C4D-1683-4BC1-915A-32FB2D21441B}';MOM2014GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.Windows.EventProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2014.Unique_table_computation_failed_1_5_Rule" Target="SQL2014Core!Microsoft.SQLServer.2014.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2014ID='{E8827C4D-1683-4BC1-915A-32FB2D21441B}';MOM2014GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>16959</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2014.Unique_table_computation_failed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>