none
Erro bcp queryout RRS feed

  • Pergunta

  • Bom dia.

    Estou tentando realizar uma cópia de uma saída no sql server (EXEC master..xp_cmdshell'bcp "exec tempdb.dbo.uspRelatorioDiario" queryout "D:\Exports\text.html" -c -T -x'), porém retorna o erro:

    SQLState = S0002, NativeError = 208
    Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Invalid object name '#Tabela'.
    NULL

    Rodando o mesmo bcp com um select comum, vai sem problema.

    Será que trata-se de alguma limitação do bcp para procedures?

    Obrigado.

    quinta-feira, 31 de janeiro de 2013 11:45

Respostas

  • Bom dia Luiz,

    Na verdade a limitação que existe é quanto a tabelas temporárias, que provavelmente você tem dentro de sua procedure. Veja:

    "The query can reference a stored procedure as long as all tables referenced inside the stored procedure exist prior to executing the bcp statement. For example, if the stored procedure generates a temp table, the bcp statement fails because the temp table is available only at run time and not at statement execution time. In this case, consider inserting the results of the stored procedure into a table and then use bcp to copy the data from the table into a data file."

    Demais informação você poderá encontrar no Books Online: http://msdn.microsoft.com/en-us/library/ms162802.aspx

    At.
    Rafael Melo

    • Sugerido como Resposta Alexandre Matayosi quinta-feira, 31 de janeiro de 2013 12:27
    • Marcado como Resposta Ricardo Russo quarta-feira, 6 de fevereiro de 2013 12:37
    quinta-feira, 31 de janeiro de 2013 12:24

Todas as Respostas

  • Bom dia Luiz,

    Na verdade a limitação que existe é quanto a tabelas temporárias, que provavelmente você tem dentro de sua procedure. Veja:

    "The query can reference a stored procedure as long as all tables referenced inside the stored procedure exist prior to executing the bcp statement. For example, if the stored procedure generates a temp table, the bcp statement fails because the temp table is available only at run time and not at statement execution time. In this case, consider inserting the results of the stored procedure into a table and then use bcp to copy the data from the table into a data file."

    Demais informação você poderá encontrar no Books Online: http://msdn.microsoft.com/en-us/library/ms162802.aspx

    At.
    Rafael Melo

    • Sugerido como Resposta Alexandre Matayosi quinta-feira, 31 de janeiro de 2013 12:27
    • Marcado como Resposta Ricardo Russo quarta-feira, 6 de fevereiro de 2013 12:37
    quinta-feira, 31 de janeiro de 2013 12:24
  • Olá Rafael.

    Obrigado pela resposta.

    Olha só.. minha procedure retorna apenas uma linha, pois está formatada para gerar um relatório em html. Com isso e apartir de sua resposta, criei uma tabela com um campo varchar (max) e fiz um "INSERT INTO <table_name> exec tempdb.dbo.uspProcedureName", porém retornou o seguinte erro:

    "An INSERT EXEC statement cannot be nested."

    Houve sim algumas inserções, porém am algumas tabelas não veio nada.

    • Sugerido como Resposta Rafael S. Melo quinta-feira, 31 de janeiro de 2013 19:23
    quinta-feira, 31 de janeiro de 2013 17:38
  • Boa tarde Fernando,

    Esta pesquisando e ví que esse erro ocorre pq vc tem um insert/exec dentro da sua procedure... Algumas pessoas dizem contornar esse cenário usando o OpenQuery .

    Veja:
    http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=139170

    At.
    rafael

    quinta-feira, 31 de janeiro de 2013 19:34