Sintomas
Considere o seguinte cenário:
-
Você tem um computador que está executando o Microsoft SQL Server 2012 ou o SQL Server 2014.
-
Você cria uma auditoria e muitas cláusulas Where maiores do que 3000 bytes.
-
Você tenta iniciar a auditoria usando uma instrução ALTER
Nesse cenário, a auditoria não é iniciada e você recebe a seguinte mensagem de erro:
MSG 102, nível 15, estado 1, linha LineNumber Sintaxe incorreta próxima a 'SomeStrings'. MSG 25711, nível 16, estado 2, line LineNumber Falha ao analisar um predicado de evento.
OBSERVAÇÃO: Observe que o problema aqui é que o erro de sintaxe é gerado incorretamente na etapa 3, quando você tenta Iniciar o rastreamento. Essa correção permite que o erro seja gerado no lugar correto, na etapa 2, onde você cria uma auditoria com a cláusula WHERE maior que (>) 3000 caracteres. Essa correção não altera o limite de expressão do predicado WHERE.
A expressão de predicado ainda está limitada a 3000 caracteres. Confira predicate_expression no seguinte artigo do online: ALTER Server Audit (Transact-SQL).
Resolução
O problema foi corrigido primeiro na atualização cumulativa a seguir do SQL Server.
Atualização cumulativa 1 para SQL Server 2014 /en-us/help/2931693
Atualização cumulativa 7 para SQL Server 2012 SP1 /en-us/help/2894115
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".