我正在使用Sql2008尝试运行此BCP命令,但它从不创建该文件。
-- Export query
DECLARE @qry2 VARCHAR(1000)
SET @qry2 = 'SELECT * FROM @SkippedProductsTable'
-- Folder we will be putting the file in
DECLARE @incomingfolder VARCHAR(1000)
SET @incomingfolder = 'c:\Logs'
DECLARE @bcpCommand VARCHAR(2000)
SET @bcpCommand = 'bcp "'+@qry2+'" queryout "'+@incomingfolder+'\SkippedProducts-'+CAST(@StoreMatchCode AS VARCHAR)+'-'+'.txt" -c -T'
PRINT @bcpCommand
EXEC MASTER..xp_cmdshell @bcpCommand, no_output
创建的命令如下所示:
bcp "SELECT * FROM @SkippedProductsTable" queryout "c:\Logs\SkippedProducts-1330-.txt" -c -T
任何人都可以建议可能出现的问题吗?我之前从未使用过BCP,也不确定从哪里开始寻找。
首先,我知道文件夹确实存在于该位置
答案 0 :(得分:0)
我认为问题是SELECT
。
你是SELECT
来自未在查询中声明的表变量,因此BCP没有任何内容可以做。
表变量仅在它们被调用的上下文中持久存在,因此即使查询中有一个变量,并且在第一个查询中有动态sql或子过程,它们也无法看到表变量。