Я новичок в кодировании SQL и надеюсь, что кто-нибудь может мне помочь.У меня проблема со старой программой, которую я не могу понять.Программа позволяет пользователям загружать файл, который она сохраняет в отдельном каталоге, и сохраняет имя и путь к файлам в базе данных SQL.Я должен извлечь путь и имя файла из базы данных, а затем скопировать файл в другой каталог, где пользователь может получить файл.У меня нет прав администратора для базы данных или сервера.Код работает нормально, пока не доходит до метода Write, а затем он ломается, и я получаю сообщение Ошибка -2146825287 при создании объекта.
Вот так выглядит путь к файлу, который хранится в базе данных.
/ TADS_FileArchive / 820045_1_10192000_143042_82-0045-1.doc
Я пытался изменить косую черту на обратную косую черту, но это не сработало.Я даже положил точный путь к файлу в @IMG_PATH без удачи, все еще получаю сообщение об ошибке в методе Write.Я прочитал и попробовал все, что я знаю, чтобы решить проблему без какой-либо удачи.Спасибо за любую помощь.
USE TADS
DECLARE @NAME VARCHAR(MAX),
@DOWNLOAD_PATH VARCHAR(MAX),
@IMG_PATH varchar(MAX),
@TIMESTAMP VARCHAR(MAX),
@ObjectToken INT,
@START_TIME SMALLDATETIME,
@END_TIME SMALLDATETIME,
@hr int
SET @START_TIME = '01/01/2018'
SET @END_TIME = '12/31/2018'
SET @DOWNLOAD_PATH = 'D:\testfile\'
DECLARE IMGPATH CURSOR FAST_FORWARD FOR
SELECT FILE_NAME, FILE_PATH from ATTACHED_FILES where DATE_ADDED between @START_TIME and @END_TIME
OPEN IMGPATH
FETCH NEXT FROM IMGPATH INTO @NAME, @IMG_PATH
WHILE @@FETCH_STATUS = 0
BEGIN
SET @IMG_PATH = 'D:\TADS\TADS_SVN_WORKING_DIR\TADS_DEV2_WC'+@IMG_PATH
SET @TIMESTAMP = @DOWNLOAD_PATH + @NAME
PRINT @TIMESTAMP
EXEC @hr = sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
IF @hr <> 0
BEGIN
RAISERROR('Error %d creating object.', 16, 1, @hr)
RETURN
END
EXEC @hr = sp_OASetProperty @ObjectToken, 'Type', 1
IF @hr <> 0
BEGIN
RAISERROR('Error %d creating object.', 16, 1, @hr)
RETURN
END
EXEC @hr = sp_OAMethod @ObjectToken, 'Open'
IF @hr <> 0
BEGIN
RAISERROR('Error %d creating object.', 16, 1, @hr)
RETURN
END
EXEC @hr = sp_OAMethod @ObjectToken, 'Write', NULL, @IMG_PATH
IF @hr <> 0
BEGIN
RAISERROR('Error %d creating object.', 16, 1, @hr)
RETURN
END
EXEC @hr = sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @TIMESTAMP, 2
IF @hr <> 0
BEGIN
RAISERROR('Error %d creating object.', 16, 1, @hr)
RETURN
END
EXEC @hr = sp_OAMethod @ObjectToken, 'Close'
IF @hr <> 0
BEGIN
RAISERROR('Error %d creating object.', 16, 1, @hr)
RETURN
END
EXEC @hr = sp_OADestroy @ObjectToken
FETCH NEXT FROM IMGPATH INTO @NAME, @IMG_PATH
END
CLOSE IMGPATH
DEALLOCATE IMGPATH