Не удается скопировать файл с помощью SQL - PullRequest
0 голосов
/ 25 марта 2019

Я новичок в кодировании 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...