Impossibile completare il calcolo della tabella univoca

Microsoft.SQLServer.2008.Unique_table_computation_failed_1_5_Rule (Rule)

Knowledge Base article:

Riepilogo

Le tabelle univoche vengono usate dai driver client di database, come il driver Microsoft Access per SQL Server, per compilare query aggiornabili. Per una determinata istruzione SELECT, la tabella univoca identifica la tabella i cui valori di riga vengono visualizzati al massimo una volta nel set di risultati. Quando si riseleziona una riga dal set di risultati, i valori delle colonne chiave della tabella univoca sono sufficienti per identificare la riga. Questo errore viene generato quando il server non è in grado di calcolare la tabella univoca.

Cause

Questo errore può essere generato quando la query SELECT dispone di aggregati UNION, GROUP BY, ROLL UP o di altri aggregati. Le tabelle univoche non vengono definite in questi casi.

Soluzioni

Riscrivere al query evitando costrutti che impediscano il calcolo delle tabelle univoche. Nella maggior parte degli scenari di errore, non è possibile implementare il set di risultati aggiornabile.

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Abilitato

Abilita o disabilita il flusso di lavoro.

Priorità

Definisce la priorità dell'avviso.

1

Gravità

Definisce la gravità dell'avviso.

2

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID16959
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Impossibile completare il calcolo della tabella univoca
{0}
Event LogApplication
CommentMom2008ID='{E8827C4D-1683-4BC1-915A-32FB2D21441B}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.2008.Unique_table_computation_failed_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{E8827C4D-1683-4BC1-915A-32FB2D21441B}';MOM2008GroupID={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" RunAs="SQL!Microsoft.SQLServer.SQLDefaultAccount">
<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="SQL!Microsoft.SQLServer.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.2008.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>