none
Geração de arquivo xml em branco RRS feed

  • Pergunta

  • Bom dia,

    Tenho uma view que faz uma consulta e exporta os dados resultantes em um arquivo .xml...porém quando a tabela está vazia, o .xml gerado ao ser aberto apresenta erro.

    Gostaria de saber se existe um jeito de quando a tabela estiver em vazia, gerar um .xml apenas com a estrutura da tabela.

    Estou usando o seguinte comando para gerar o arquivo.

    EXEC

    XP_CMDSHELL 'BCP "SELECT * FROM banco.dbo.tabela FOR XML AUTO, ELEMENTS, ROOT(''camporoot'')" QUERYOUT C:\TESTE.xml -S server -T -c -w -r'

     

    Obrigado.

    • Movido Gustavo Maia Aguiar sexta-feira, 18 de novembro de 2011 16:02 (De:SQL Server - Desenvolvimento Geral)
    quinta-feira, 17 de novembro de 2011 13:30

Todas as Respostas

  • Ronald,

    Você poderia informar qual é o código de erro?


    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]
    terça-feira, 22 de novembro de 2011 20:28
  • Olá Ronald, este comando que esta utilizando, gera um XML dos dados da tua tabela, uma tabela vazia não irá retornar nada, por isso o teu XP_CMDSHELL não esta funcionando, rode somente o Select no Management Studio e tu ira ver o que estou falando, se tiver dados ele cria um link para o resultado e se não tiver ele deixa em branco.

     

    Desculpe, mas qual tua necessidade, talvez possamos resolver de outra forma.

    Vlew.

    quarta-feira, 23 de novembro de 2011 12:50
  • Ronald,

    Veja se este exemplo ajuda:

     

    CREATE PROC dbo.P_GerarXML
    AS
    SELECT ProductCategoryID, Name
      FROM Production.ProductCategory
       FOR XML RAW ('Produtos'), ELEMENTS, ROOT ('XML')
    GO

    -- Testanto proc
    EXEC dbo.P_GerarXML

    -- Habilitando xp_cmdShell
    EXEC sp_configure 'show advanced options', 1
    GO
    RECONFIGURE
    GO
    EXEC sp_configure 'xp_cmdshell', 1
    GO
    RECONFIGURE
    GO

    -- Criando o arquivo de Produtos com os dados XML

    EXEC master.dbo.xp_cmdshell 'bcp "exec AdventureWorks.dbo.P_GerarXML" QueryOut "C:\SQL\XML\Produtos.xml" -S "WinSevenUltimat\SQL2008" -T -c'


    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]
    terça-feira, 29 de novembro de 2011 22:20
  • Marcus,

    O problema é que o xml tem de ser gerado, mesmo que venha sem dados, ou seja, só o schema da tabela de origem, se é que dá pra fazer.

    Junior,

    O seu exemplo é o mesmo que já estou fazendo...quando a tabela está sem registros, o xml gerado ao abrir apresenta o erro abaixo:

    The XML page cannot be displayed

    Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.


    XML document must have a top level element. Error processing resource 'file:///C:/Produtos.xml'.

     

    Obrigado por enquanto.

    quinta-feira, 1 de dezembro de 2011 12:19
  • Esse comando ele gera um XML com o resultado de uma query.

    Por exemplo:

    Quanto tu acessa o Management e roda tua query ele traz um resultado correto?

    Quanto tens resultado ele bota cabeçalho e traz os dados.

    Quando não tem ele traz somente o cabeçalho e isso não gera o XML.

    Tu teria que gerar o XML mesmo sem dados?

    Tu pensa em criar esse XML somente com o cabeçalho?

    Qual resultado tu quer quando for vazio?

    quarta-feira, 14 de dezembro de 2011 12:39