我正在使用存储过程来创建文件夹,然后使用从"type": "networkConfig"
列中提取的文件来填充文件夹。该过程适用于许多行,但是我从其他行收到以下错误:
消息50000,级别16,状态1,过程dbo.CreateFolder,第31行[批处理开始第0行]
我不确定这意味着什么,或者为什么会在某些行而不是其他行上发生。
我的存储过程是:
varBinary
然后我正在使用T-SQL使用this guide
提取文件ALTER PROCEDURE [dbo].[CreateFolder]
(@newfolder VARCHAR(1000))
AS
BEGIN
DECLARE @OLEfolder INT
DECLARE @OLEsource VARCHAR(255)
DECLARE @OLEdescription VARCHAR(255)
DECLARE @init INT
DECLARE @OLEfilesytemobject INT
-- it will fail if OLE automation not enabled
EXEC @init=sp_OACreate 'Scripting.FileSystemObject', @OLEfilesytemobject OUT
IF @init <> 0
BEGIN
EXEC sp_OAGetErrorInfo @OLEfilesytemobject
RETURN
END
-- check if folder exists
EXEC @init = sp_OAMethod @OLEfilesytemobject, 'FolderExists', @OLEfolder OUT, @newfolder
-- if folder doesn't exist, create it
IF @OLEfolder = 0
BEGIN
EXEC @init = sp_OAMethod @OLEfilesytemobject, 'CreateFolder', @OLEfolder OUT, @newfolder
END
-- in case of error, raise it
IF @init <> 0
BEGIN
EXEC sp_OAGetErrorInfo @OLEfilesytemobject, @OLEsource OUT, @OLEdescription OUT
SELECT @OLEdescription = 'Could not create folder: ' + @OLEdescription
RAISERROR (@OLEdescription, 16, 1)
END
EXECUTE @init = sp_OADestroy @OLEfilesytemobject
END
有人对出什么问题有想法吗?
我尝试使用存储过程和T-SQL(由Marc编写)的编辑版本,但是错误显示在每一行上,并且没有生成文件。还原T-SQL但保留Marc的存储过程的结果与原始结果相同。
答案 0 :(得分:0)
从数据库到文件系统的提取过程中,您似乎试图在不存在的文件夹中创建一个文件夹。
只能使用现有文件夹创建具有此过程的文件夹。
例如:
EXEC [dbo].[CreateFolder] 'C:\DocsFromDB\2019'
如果2019
不存在,则无法创建文件夹DocsFromDB
。您应该首先创建DocsFromDB
以便能够在其中创建其他文件夹。