У меня проблемы с BCP. Он продолжает говорить недопустимое имя объекта ## Ярлыки, несмотря на то, что я создал глобальную таблицу. Что я делаю неправильно?Недопустимое имя объекта SQL BCP ## Ярлыки
Код: -
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
Сообщение об ошибке:
Ошибка = [Microsoft] [SQL Server Native Client 11.0] [SQL Server] Недопустимое имя объекта «## Этикетки.
Вы используете этот скрипт для именованного экземпляра? BCP будет подключаться к локальному экземпляру по умолчанию, если вы не укажете параметр '/ S'. –
Эй, Дэн, нет, это в одном экземпляре. Я просто пишу скрипт с менеджером sql в этом экземпляре, используя учетную запись SA. – codingitup
Является ли экземпляр, в котором вы запускаете скрипт по экземпляру по умолчанию, или это именованный экземпляр? Команда BCP, вызываемая через xp_cmdshell, не знает, из какого экземпляра она была выполнена, поэтому имя сервера/экземпляра должно быть указано, если оно не является экземпляром по умолчанию. –