MSSQL per Windows: Il calcolo di tabelle univoche non è riuscito

Microsoft.SQLServer.Windows.EventRule.DBEngine.Unique_table_computation_failed_1_5_Rule (Rule)

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.

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 contiene UNION, GROUP BY, ROLL UP o altri aggregati. Le tabelle univoche non vengono definite in questi casi.

Risoluzioni

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

Attivato

Abilita o disabilita il flusso di lavoro.

Intervallo (secondi)

Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro.

300

Priorità

Definisce la priorità dell'avviso.

1

Gravità

Definisce la gravità dell'avviso.

2

Tempo di sincronizzazione

Tempo di sincronizzazione

 

Timeout (secondi)

Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito.

200

Timeout per la connessione di database (secondi)

Il flusso di lavoro avrà esito negativo e registrerà un evento se non riesce ad accedere al database durante il periodo specificato.

15

Element properties:

TargetMicrosoft.SQLServer.Windows.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL per Windows: Il calcolo di tabelle univoche non è riuscito
{0}
CommentMom2017ID='{E8827C4D-1683-4BC1-915A-32FB2D21441B}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.Windows.EventRule.DBEngine.Unique_table_computation_failed_1_5_Rule" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{E8827C4D-1683-4BC1-915A-32FB2D21441B}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>16959</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Windows.EventRule.DBEngine.Unique_table_computation_failed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>