Sintomi
Considerare lo scenario descritto di seguito:
-
Si dispone di un computer in cui è in uso Microsoft SQL Server 2012 o SQL Server 2014.
-
Si crea un controllo e molte clausole where che sono maggiori di 3000 byte.
-
Si prova ad avviare il controllo tramite un'istruzione ALTER
In questo scenario, il controllo non viene avviato e viene visualizzato il messaggio di errore seguente:
Msg 102, livello 15, stato 1, riga lineNumber Sintassi non corretta accanto a "SomeStrings". Msg 25711, livello 16, stato 2, riga lineNumber Impossibile analizzare un predicato dell'evento.
Nota Tieni presente che il problema in questo caso è che l'errore di sintassi viene generato in modo errato nel passaggio 3, quando tenti di avviare la traccia. Questa correzione consente di generare l'errore nella posizione corretta, al passaggio 2 in cui è possibile creare un controllo con la clausola WHERE maggiore di (>) caratteri di 3000. Questa correzione non modifica il limite di espressione del predicato WHERE.
L'espressione del predicato è ancora limitata ai caratteri di 3000. Fare riferimento a predicate_expression nell'articolo seguente Bol: ALTER Server Audit (Transact-SQL).
Risoluzione
Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Aggiornamento cumulativo 1 per SQL Server 2014 /en-us/help/2931693
Aggiornamento cumulativo 7 per SQL Server 2012 SP1 /en-us/help/2894115
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".