我对BCP有意见。它一直说无效的对象名##Labels,尽管我创建了一个全局表。请问我做错什么了?
守则是:-
DECLARE @SQL varchar(max)
SET @BatchNo = 'abc123'
DECLARE @test TABLE(A varchar(max),B varchar(max),C varchar(max),D varchar(max),E varchar(max),F varchar(max),G varchar(max),H varchar(max),I varchar(max),J varchar(max))
insert into @test values ('1','2','3','4','5','6','7','8','9','10')
SELECT * INTO ##Labels FROM @test
SET @SQL = 'SELECT * FROM ##Labels'
DECLARE @TMPfile varchar(25)
DECLARE @folder varchar(128)
DECLARE @LabelDir varchar(128)
DECLARE @template varchar(25)
DECLARE @FinalFile varchar(40)
DECLARE @cmdstr varchar(300)
SET @TMPfile = @BatchNo + '.tmp'
--Trigger folder
SET @folder = '\\WIN-0H\LABELLING\XFER\'
--Print Directive Folder
SET @LabelDir = '\\WIN-0H\DIR\'
--Label Data Template
SET @template = 'cl.csv'
--Fine output file
SET @FinalFile = @BatchNo + '.CHLABEL'
--Bulk Copy Query to csv temp file
SET @cmdstr = 'bcp "' + @SQL + '" QUERYout ' + @folder + @TMPfile + ' -c -t "," -T'
SELECT * FROM ##Labels
EXEC master..xp_cmdshell @cmdstr
PRINT @cmdstr
--join the label csv template to the actual data
SET @cmdstr = 'copy /Y /B ' + @LabelDir + @template + ' + ' + @folder + @TMPfile + ' ' + @folder + @FinalFile
EXEC master..xp_cmdshell @cmdstr
PRINT @cmdstr
--Remove all temporary files
SET @cmdstr = 'del ' + @folder + @TMPfile
EXEC master..xp_cmdshell @cmdstr
PRINT @cmdstr
PRINT 'Im Printing'
DROP TABLE ##Labels错误信息是:
Error = MicrosoftSQL ServerInvalid对象名‘##标签’。
发布于 2014-10-26 20:26:35
BCP命令行实用程序独立于T脚本运行,甚至在通过xp_cmdshell输入时也是如此。它连接到运行在同一台服务器上的默认实例,除非BCP /S参数另有规定。
在本例中,全局临时表是在脚本运行的命名实例上创建的。但是,连接到默认实例和全局临时表的BCP命令并不存在(幸运的是)。
https://stackoverflow.com/questions/26573193
复制相似问题