2015-11-04 207 views
1

我有一個創建的包,它被加載到我們的SQL服務器上。該軟件包進入一個文件夾,讀取和excel,將excel轉儲到一個表中,然後將其歸檔。DTExec找不到文件

當正常運行軟件包時(通過BIDS)它工作得很好。

但是,當我使用以下行運行它通過SSMS

exec master.dbo.xp_cmdshell 'C:\"Program Files (x86)"\"Microsoft SQL Server"\100\DTS\Binn\DTExec.exe /DTS "<package location>" /SERVER "<Server>" /CHECKPOINTING OFF /REPORTING V' 

拉動了Excel名稱(適用於包中的每個循環)報告說,它沒有找到任何部分。

Description: The For Each File enumerator is empty. The For Each File enumerator did not find any files that matched the file pattern, or the specified directory was empty. 

包需要32位模式下運行,以讀出的Excel的,這就是爲什麼我使用的32位dtexec位置。

任何人都知道這是怎麼回事?

+0

也許不同的環境變量 – lad2025

+0

你是什麼意思? – Caveman42

+1

我不會依賴於xp_cmdshell的原因很多。 [創建作業](https://www.mssqltips.com/sqlservertip/1180/sql-server-integration-services-package-scheduling-with-sql-agent/)並從TSQL開始'EXEC dbo.sp_start_job'job_name' ' – lad2025

回答

1

在我看來,你應該使用create SSIS Type Job和變化:

exec master.dbo.xp_cmdshell 'C:\"Program Files (x86)"\"Microsoft SQL Server"\100\DTS\Binn\DTExec.exe /DTS "<package location>" /SERVER "<Server>" /CHECKPOINTING OFF /REPORTING V' 

有:

EXEC dbo.sp_start_job 'job_name'; 

我還要檢查你執行CMD外殼您使用的帳戶。我懷疑沒有足夠的權限來讀取特定的目錄或不同的環境變量。