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
Post a Comment