将存储过程中执行时生成的表导出到文件SQL Server 2008

时间:2011-02-27 04:58:19

标签: sql-server-2008

如何在存储过程删除表之前将表导出到文件,我正在执行以下操作(code from @Adam):

SET @table_name = 'DYNAMIC_GENERATED_TABLE'
SET @query      = 'select * from ' + @table_name
SET @saveas     = 'c:/sqlTest/QueryOutput.txt'
SET @bcpdelim   = '|'
SET @bcpconn    = '-T' -- Trusted


SET @bcpquery = 'bcp "' + replace(@query, char(10), '') + '" QUERYOUT "' + @saveas + '" -c -t^' + @bcpdelim + ' ' + @bcpconn + ' -S ' + @@servername
EXEC master..xp_cmdshell @bcpquery  

因此,在存储过程中生成表'DYNAMIC_GENERATED_TABLE'时,出现错误:

SQLState = S0002, NativeError = 208
Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Invalid object name 'DYNAMIC_GENERATED_TABLE'.
SQLState = 37000, NativeError = 8180
Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Statement(s) could not be prepared.
NULL

如果我执行我已经拥有的表的代码,则没有错误。

如何解决此问题

3 个答案:

答案 0 :(得分:1)

通过BCP

尝试xp_cmdshell

http://www.simple-talk.com/sql/database-administration/creating-csv-files-using-bcp-and-stored-procedures/

示例,来自以上网站:

declare @sql varchar(8000)
select @sql = 'bcp master..sysobjects out
                c:\bcp\sysobjects.txt -c -t, -T -S'+ @@servername
exec master..xp_cmdshell @sql

答案 1 :(得分:0)

似乎使表格全球化

'DYNAMIC_GENERATED_TABLE' -> '##DYNAMIC_GENERATED_TABLE'

诀窍

答案 2 :(得分:0)

SQLState = 37000,NativeError = 156 错误= [Microsoft] [SQL Native Client] [SQL Server]关键字'where'附近的语法不正确。 NULL

我正在使用bcp命令获取此错误

从我的1 str proc中定义了bcp我在bcp中调用另一个str proc。但是,如果我使用EXEC运行另一个str proc它运行正常。问题是什么?