Я пытаюсь записать это как часть хранимой процедуры на SQL Server 2000. Я продолжаю получать синтаксическую ошибку, брошенную на строку стартовая Вставка в OpenRowset (.....
На помощь! Я не вижу синтаксической ошибки!
DECLARE @vDate Varchar(25)
DECLARE @vCommand nvarchar(1000)
DECLARE @fileName varchar(500)
SET @vDate = LEFT(DATENAME(month, DATEADD(m, -1, GETDATE())), 3) + DATENAME(year, DATEADD(m, -1, GETDATE()))
SET @fileName = '\\SERVER\folder\subfolder\subfolder\Excel\JobRerun\JobRerun_' + @vDate + '.xls'
SET @vCommand = 'copy \\SERVER\folder\subfolder\subfolder\Excel\JobRerun\JobRerunTemplate.xls ' + @fileName
Exec master..xp_cmdshell @vCommand , NO_OUTPUT
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 5.0;Database=' + @fileName + ';',
'SELECT * FROM [RerunData$]')
Вы не можете сделать встроенную конкатенацию строки, как в этой строке: 'Excel 5.0;Database=' + @fileName + ';'
Попробуйте перенести это в отдельный оператор
Вы можете попробовать что-то вроде:
exec ('INSERT INTO OPENROWSET(''Microsoft.Jet.OLEDB.4 .0'', ''' + @providerstring + ''', ''SELECT * FROM [RerunData$]''')
Ваш оператор INSERT для меня неверен - у вас есть INSERT INTO OPENROWSET (...
. Это означает, что вы пытаетесь вставить в запрос OPENROWSET, но предоставляете "SELECT *" ... "внутри него. Он должен выглядеть так:
INSERT INTO your_table
SELECT * FROM OPENROWSET(...