Usuário com melhor resposta
Problema com XML

Pergunta
-
Olá,
A partir de outro post http://social.technet.microsoft.com/Forums/pt-BR/transactsqlpt/thread/a9beb4b2-a4e3-42e1-a981-5f39f9d7ce58, fiquei com uma duvida, eu havia criado aqui em meus testes para responder ao post algo muito similar a resposta dada pelo Gustavo, porem, quando eu executava a query, o erro:
Msg 1934, Level 16, State 1, Line 29
SELECT failed because the following SET options have incorrect settings: 'ANSI_WARNINGS'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.
Surgia, imaginei então que algo estava errado com a query, portanto nao postei nada, posteriormente, o Gustavo postou a resposta dele, que imagino que esteja executando corretamente, porem aqui para mim acontece o mesmo erro.O que este erro signifca? e como solucionar? procurei algo porem nada muito confiavel....
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com
Respostas
-
Fabrizzio,
Acho que para usar métodos XML você deve setar a opção ANSI_WARNINGS como on. Qdo puder tente executar o código forçando essa opção.
Set ANSI_WARNINGS On DECLARE @x_XML XML SET @x_XML = '<Events> <Event xmlns:xsi="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="Microsoft-Windows-CAPI2" Guid="{5bbca4a8-b209-48dc-a8c7-b23d3e5216fb}" EventSourceName="Microsoft-Windows-CAPI2" /> <EventID Qualifiers="0">4107</EventID> <Version>0</Version> <Level>2</Level> <Task>0</Task> <Opcode>0</Opcode> <Keywords>0x8080000000000000</Keywords> <TimeCreated SystemTime="2011-06-26T19:55:08.797304200Z" /> <EventRecordID>13059</EventRecordID> <Correlation ActivityID="{00000100-0000-0000-30F6-10060A2ACC01}" /> <Execution ProcessID="152" ThreadID="2644" /> <Channel>Application</Channel> <Computer>BMTLSPDESV.belmetal.local</Computer> <Security /> </System> <EventData> <Data>http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab</Data> <Data>The data is invalid. </Data> </EventData> </Event> </Events>' ;WITH XMLNAMESPACES('http://schemas.microsoft.com/win/2004/08/events/event' as xsi) SELECT @x_XML.value('(/Events/Event/System/Provider/@Name)[1]','VARCHAR(50)') As Name, @x_XML.value('(/Events/Event/System/EventID/@Qualifiers)[1]','INT') As EventIDQualifiers, @x_XML.value('(/Events/Event/System/EventID)[1]','INT') As Qualifiers, @x_XML.value('(/Events/Event/System/TimeCreated/@SystemTime)[1]','DATETIME') As SystemTime, @x_XML.value('(/Events/Event/System/Computer)[1]','VARCHAR(50)') As Computer
Espero que ajude! Luiz Phellipe- Marcado como Resposta Fabrizzio CaputoModerator quarta-feira, 20 de julho de 2011 14:07
Todas as Respostas
-
Oi Fabrizzio,
Algumas opções como SET WARNINGS, ANSI_NULLS, ANSI_PADDINGs são necessárias durante a criação de índices entre outras coisas. O que me parece é que a consulta XML faz referência a colunas XML que devem ter sido indexadas com as opções incorretas. Você poderia verificar se há índices XML sobre as colunas que você está consultando ?
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 7 de julho de 2011 21:33
-
Gustavo,
Então, quantos as opções, achei coisas muito concretas sobre todas, menos a ANSI_WARNING, e uma vez, não me pergunte por que, ao fazer um select coloquei uma coluna que não existia (Erro de digitação), e ele estava dando esse erro, ou seja, todas as experiencias que tive com o ANSI_WARNING são totalmente randomicas rs... o script que estou rodando é exatamente o script que voce postou na outra thread:
DECLARE @x_XML XML
SET @x_XML =
'<Events>
<Event xmlns:xsi="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-CAPI2" Guid="{5bbca4a8-b209-48dc-a8c7-b23d3e5216fb}" EventSourceName="Microsoft-Windows-CAPI2" />
<EventID Qualifiers="0">4107</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x8080000000000000</Keywords>
<TimeCreated SystemTime="2011-06-26T19:55:08.797304200Z" />
<EventRecordID>13059</EventRecordID>
<Correlation ActivityID="{00000100-0000-0000-30F6-10060A2ACC01}" />
<Execution ProcessID="152" ThreadID="2644" />
<Channel>Application</Channel>
<Computer>BMTLSPDESV.belmetal.local</Computer>
<Security />
</System>
<EventData>
<Data>http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab</Data>
<Data>The data is invalid.
</Data>
</EventData>
</Event>
</Events>'
;WITH XMLNAMESPACES('http://schemas.microsoft.com/win/2004/08/events/event' as xsi)
SELECT
@x_XML.value('(/Events/Event/System/Provider/@Name)[1]','VARCHAR(50)') As Name,
@x_XML.value('(/Events/Event/System/EventID/@Qualifiers)[1]','INT') As EventIDQualifiers,
@x_XML.value('(/Events/Event/System/EventID)[1]','INT') As Qualifiers,
@x_XML.value('(/Events/Event/System/TimeCreated/@SystemTime)[1]','DATETIME') As SystemTime,
@x_XML.value('(/Events/Event/System/Computer)[1]','VARCHAR(50)') As Computer
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Bom dia Fabrizzio,
tive um problema semelhante ao seu, porém ao invés de 'ANSI_WARNINGS' era 'ARITHABORT', solucione executando o seguinte comando:
SET ARITHABORT ON;
Gustavo,
eu quem abriu esse tópico, sua solução foi de grande ajuda, mas quando coloco o caminho do arquivo "XML", ele não retorna nada.
-
Andre,
Mesmo com essa opção, não funcionou =\....
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Fabrizzio,
Você esta realizando alguma divisão de valores?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com] -
Junior,
Não, não estou fazendo nada, o script é exatamente o mesmo que o gustavo postou, sem tirar nem por.
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCTS SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Fabrizzio,
Será que alguma opção do SQL Server não esta configurada?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com] -
Então Junior,
Em relação aos SET XXX ON/OFF ja tentei todas as possibilidades possiveis, inclusive alterando-as no proprio SSMS e nada resolveu...
Fabrizzio A. Caputo
Certificações: Oracle OCA 11g, MCITP SQL Server 2008 Implementation and Maintenance
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Fabrizzio,
Acho que para usar métodos XML você deve setar a opção ANSI_WARNINGS como on. Qdo puder tente executar o código forçando essa opção.
Set ANSI_WARNINGS On DECLARE @x_XML XML SET @x_XML = '<Events> <Event xmlns:xsi="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="Microsoft-Windows-CAPI2" Guid="{5bbca4a8-b209-48dc-a8c7-b23d3e5216fb}" EventSourceName="Microsoft-Windows-CAPI2" /> <EventID Qualifiers="0">4107</EventID> <Version>0</Version> <Level>2</Level> <Task>0</Task> <Opcode>0</Opcode> <Keywords>0x8080000000000000</Keywords> <TimeCreated SystemTime="2011-06-26T19:55:08.797304200Z" /> <EventRecordID>13059</EventRecordID> <Correlation ActivityID="{00000100-0000-0000-30F6-10060A2ACC01}" /> <Execution ProcessID="152" ThreadID="2644" /> <Channel>Application</Channel> <Computer>BMTLSPDESV.belmetal.local</Computer> <Security /> </System> <EventData> <Data>http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab</Data> <Data>The data is invalid. </Data> </EventData> </Event> </Events>' ;WITH XMLNAMESPACES('http://schemas.microsoft.com/win/2004/08/events/event' as xsi) SELECT @x_XML.value('(/Events/Event/System/Provider/@Name)[1]','VARCHAR(50)') As Name, @x_XML.value('(/Events/Event/System/EventID/@Qualifiers)[1]','INT') As EventIDQualifiers, @x_XML.value('(/Events/Event/System/EventID)[1]','INT') As Qualifiers, @x_XML.value('(/Events/Event/System/TimeCreated/@SystemTime)[1]','DATETIME') As SystemTime, @x_XML.value('(/Events/Event/System/Computer)[1]','VARCHAR(50)') As Computer
Espero que ajude! Luiz Phellipe- Marcado como Resposta Fabrizzio CaputoModerator quarta-feira, 20 de julho de 2011 14:07