sql server - INSERT INTO OPENROWSET Syntax with Dynamic T-SQL -


i feel have read every single page online how dynamically create excel output t-sql script. here have:

use master go  exec master.dbo.sp_configure 'show advanced options', 1 reconfigure override go  exec master.dbo.sp_configure 'xp_cmdshell', 1 reconfigure override go  exec sp_configure 'ad hoc distributed queries', 1 reconfigure go  exec master . dbo. sp_msset_oledb_prop n'microsoft.ace.oledb.12.0' , n'allowinprocess' , 1 go  exec master . dbo. sp_msset_oledb_prop n'microsoft.ace.oledb.12.0' , n'dynamicparameters' , 1 go  use commerciallending go declare @loopcounter tinyint = 1 declare @loopmaxcount tinyint = (select count(distinct officer)                                 commerciallending.dbo.cmltrial) while (1=1) begin declare @officername varchar(4000) = (                                     select officer                                      (select distinct officer, row_number() on (order officer) rownumber                                              commerciallending.dbo.cmltrial group officer) officer                                      rownumber = @loopcounter) declare @filename varchar(400) = @officername+ '.xlsx' declare @fullfilename varchar(400) = 'o:\mis\python\programs\commerciallending\'+@filename declare @copyfile varchar(800) = 'copy o:\mis\python\programs\commerciallending\template.xlsx copy o:\mis\python\programs\commerciallending\' + @filename exec xp_cmdshell @copyfile declare @sql nvarchar(4000) set @sql = 'insert openrowset(''microsoft.ace.oledb.12.0'',excel 12.0;database='+@fullfilename+';'',''select * [sheet1$])'' select * dbo.cmltrial officer='''+@officername+'' exec (@sql) set @loopcounter = @loopcounter+1 if (@loopcounter > @loopmaxcount)     break; end  use master go  exec master.dbo.sp_configure 'xp_cmdshell', 0 reconfigure override go  exec sp_configure 'ad hoc distributed queries', 0 reconfigure go  exec master.dbo.sp_configure 'show advanced options', 0 reconfigure override go  exec master . dbo. sp_msset_oledb_prop n'microsoft.ace.oledb.12.0' , n'allowinprocess' , 0 go  exec master . dbo. sp_msset_oledb_prop n'microsoft.ace.oledb.12.0' , n'dynamicparameters' , 0 go 

i know problem in line assigns insert openrowset string @sql variable:

set @sql = 'insert openrowset(''microsoft.ace.oledb.12.0'',excel 12.0;database='+@fullfilename+';'',''select * [sheet1$])'' select * dbo.cmltrial officer='''+@officername+'' 

for life of me cannot figure out syntax error is. can me figure out, , also, if possible, provide guide figuring out standard syntax using insert openrowset string in variable?

try this:

    set @sql = 'insert openrowset(''microsoft.ace.oledb.12.0'',''excel 12.0;database='+@fullfilename+''',''select * [sheet1$]'') select * dbo.cmltrial officer '''+@officername+'''' 

i print @sql when working dynamic scripts see how actual query like. it's easier troubleshoot , saves me plenty of grief later on.


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

jsf - How to ajax update an item in the footer of a PrimeFaces dataTable? -

django - CSRF verification failed. Request aborted. CSRF cookie not set -