sql - 无法使用 SQL 复制文件
问题描述
我是 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
解决方案
推荐阅读
- mysql - 根据不同的值查询多个MySQL表,并返回匹配计数和第一条记录与最后一条记录之间的时间差
- pandas - 无法确定字段“T_DATE”的类型。warnings.warn("无法确定字段 '{}' 的类型。".format(bq_field.name))
- android - 单击 FCM 通知时,Flutter Notification 挂起的意图被取消
- ipad - iOS 上的 OneDrive 应用程序 - 从 PowerApps 启动到特定文件
- intellij-idea - 带有 WSL2 网络问题的 IntelliJ IDEA 设置
- c# - ASP.NET Core 6 如何在启动期间访问配置
- node.js - 用 Jest 测试异步生成器
- java - 在 android 上的播放器功能区下方放置横幅广告
- c - 函数中的“*parameter”和“* parameter”有什么区别?
- php - 在 Laravel 中导出到 Excel 时为空文件