我試圖從存儲過程中執行DTS包(我們稱之爲'MY_DTS')。沒有成功。使用存儲過程中的xp_cmdshell調用dtsrun - Microsoft Jet數據庫引擎無法打開文件錯誤
這裏是我的程序代碼:
CREATE PROCEDURE [dbo].[RUN_DTS]
@DTSName nvarchar(4000)
AS
DECLARE @Command AS nvarchar(4000)
SET @Command = 'dtsrun /S "(local)" /N "' + @DTSName + '" /W "0" /E'
SELECT @Command
EXEC master..xp_cmdshell @Command
GO
我使用存儲過程如下:
EXEC HURT.dbo.RUN_DTS @DTSName = 'MY_DTS'
在執行過程中它打印預期的命令:
dtsrun /S "(local)" /N "MY_DTS" /W "0" /E
和結果具有以下錯誤:
Error string: The Microsoft Jet database engine cannot open the file '\\network_drive_server_ip\path_to_important_file'.
It is already opened exclusively by another user, or you need permission to view its data.
Error source: Microsoft JET Database Engine
Help file:
Help context: 5003051
我該如何解決此問題?
要添加一些觀點:
有兩臺服務器:
Windows Server 2003中運行SQL Server 2000我連接到該服務器,並遠程執行使用查詢分析器的所有操作(以運行SQL語句)。我將它稱爲數據庫服務器。
網絡驅動器服務器。
MY_DTS駐留在數據庫服務器上,引用包含需要讀取的important_file的網絡驅動器。
從調用命令行內相同的命令succeded:
>dtsrun /S "(local)" /N "MY_DTS" /W "0" /E
DTSRun: Package execution complete.
而且我敢肯定,99%沒有該文件在執行存儲過程的時刻打開。我已經使用Process Explorer v16.05確認了它:沒有找到句柄或DLL。所以我認爲這是權限的事情。