none
Problema com XML RRS feed

  • 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
    terça-feira, 5 de julho de 2011 18:31
    Moderador

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
    terça-feira, 19 de julho de 2011 00:42

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
    terça-feira, 5 de julho de 2011 18:51
  • 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
    terça-feira, 5 de julho de 2011 18:55
    Moderador
  • 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.

     

    quarta-feira, 6 de julho de 2011 14:41
  • 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
    quarta-feira, 6 de julho de 2011 14:45
    Moderador
  • 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]
    quinta-feira, 7 de julho de 2011 21:34
  • 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
    quinta-feira, 7 de julho de 2011 23:42
    Moderador
  • 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]
    segunda-feira, 11 de julho de 2011 00:35
  • 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
    segunda-feira, 11 de julho de 2011 00:39
    Moderador
  • 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
    terça-feira, 19 de julho de 2011 00:42