2010-03-10 108 views
0

我面臨着一個有趣的問題,我甚至不知道這是否是可能的:SQL Server 2008中 - 執行批處理作業和批量插入在T-SQL

我需要在SQL Server 2008中創建一個存儲過程在執行時執行以下操作:

  1. 執行批處理文件 - 位於SQL Server上(即C:\ Mybatchfile.bat) - 這個批處理文件將在SQL Server上輸出一個文本文件到一個目錄(即C:\ Output \ BatchFileOutput1.txt)。

  2. Bulk將文本文件的內容插入到我的數據庫中的表中。

  3. 從服務器刪除文本文件。

在我真的開始挖掘如何實現這一目標之前,這甚至有可能嗎?

在此先感謝

回答

2

您應該能夠把所有這一切都在一個過程:

1)執行批處理文件中使用:xp_cmdshell (Transact-SQL)。但是,許多人認爲這是一種安全風險,並且可能不會在數據庫中啓用對其的訪問。您可以使用CLR來執行批處理文件,這將更安全。

2)您可以使用bcp Utility將行復制到表中。 3)您將使用#1的方法刪除文件。從xp_cmdshell發出刪除命令,這是一個安全風險。或者在你傳遞文件名的地方創建一個CLR來刪除文件。我不會讓路徑通過,硬代碼,所以只有在你的「特殊」目錄中的文件可以刪除,而不是C:\等。

0

或者你可以在SSIS pacakge中做到這一點,然後有一個工作來執行包,而不是在存儲過程中執行。或者proc可以讓代碼執行SSIS封裝。