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 utilizzate da 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.

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>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>